From b870d993ed8ddbd48ea25d98bbc9b8e4471bb940 Mon Sep 17 00:00:00 2001 From: Mallikarjun M Date: Thu, 2 Jul 2026 18:06:18 +0530 Subject: [PATCH 1/2] feat(spec): updated the sdk as per the api spec released on 2026-06-23 Signed-off-by: Mallikarjun M --- README.md | 2 +- ibm_vpc/vpc_v1.py | 6287 +++++++++++++++++++++++++++++++++++--- pyproject.toml | 14 +- test/unit/test_vpc_v1.py | 3843 ++++++++++++++++++----- 4 files changed, 8987 insertions(+), 1159 deletions(-) diff --git a/README.md b/README.md index 73dc3b8..4feaef2 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Service Name | Imported Class Name * An [IBM Cloud][ibm-cloud-onboarding] account. * An IAM API key to allow the SDK to access your account. Create an apikey [here](https://cloud.ibm.com/iam/apikeys). -* Python version 3.8 or above. +* Python version 3.10 or above. ## Installation diff --git a/ibm_vpc/vpc_v1.py b/ibm_vpc/vpc_v1.py index fe8aaf7..3274fa8 100644 --- a/ibm_vpc/vpc_v1.py +++ b/ibm_vpc/vpc_v1.py @@ -14,14 +14,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -# IBM OpenAPI SDK Code Generator Version: 3.111.0-1bfb72c2-20260206-185521 +# IBM OpenAPI SDK Code Generator Version: 3.114.4-9b56d441-20260612-210048 """ The IBM Cloud Virtual Private Cloud (VPC) API can be used to programmatically provision and manage virtual server instances, along with subnets, volumes, load balancers, and more. -API Version: 2026-03-24 +API Version: 2026-06-23 """ from datetime import datetime @@ -68,7 +68,7 @@ class VpcV1(BaseService): @classmethod def new_instance( cls, - version: Optional[str] = "2026-03-24", + version: Optional[str] = "2026-06-23", service_name: str = DEFAULT_SERVICE_NAME, generation: Optional[int] = 2, ) -> 'VpcV1': @@ -77,8 +77,8 @@ def new_instance( external configuration. :param str version: The API version, in format `YYYY-MM-DD`. For the API - behavior documented here, specify any date between `2025-12-09` and - `2026-03-25`. + behavior documented here, specify any date between `2026-04-07` and + `2026-06-24`. """ if version is None: raise ValueError('version must be provided') @@ -108,7 +108,7 @@ def get_service_url_for_region( def __init__( self, - version: Optional[str] = "2026-03-24", + version: Optional[str] = "2026-06-23", authenticator: Authenticator = None, generation: Optional[int] = 2, ) -> None: @@ -116,8 +116,8 @@ def __init__( Construct a new client for the vpc service. :param str version: The API version, in format `YYYY-MM-DD`. For the API - behavior documented here, specify any date between `2025-12-09` and - `2026-03-25`. + behavior documented here, specify any date between `2026-04-07` and + `2026-06-24`. :param Authenticator authenticator: The authenticator specifies the authentication mechanism. Get up to date information from https://github.com/IBM/python-sdk-core/blob/main/README.md @@ -2760,16 +2760,18 @@ def replace_bare_metal_server_initialization( cloud-init vendor data. For cloud-init enabled images, these keys will also be added as SSH authorized keys for the [default user](https://cloud.ibm.com/docs/vpc?topic=vpc-vsi_is_connecting_linux#determining-default-user-account). - For Windows images, at least one key must be specified, and one will be - selected to encrypt the administrator password. Keys are optional for other - images, but if no keys are specified, the bare metal server will be - inaccessible unless the specified image provides another means of access. + For Windows images, at least one SSH key of type `rsa` must be specified. + One of the provided keys is selected to encrypt the administrator password. + SSH keys are optional for other images; however, if no keys are specified, + the bare metal server will be inaccessible unless the selected image + provides an alternative access mechanism. :param BareMetalServerInitializationDefaultTrustedProfilePrototype default_trusted_profile: (optional) The default trusted profile to be used when initializing the bare metal server. If unspecified, no default trusted profile will be made available. - :param str user_data: (optional) The user data to be made available when - initializing the bare metal server. + :param str user_data: (optional) The [user + data](https://cloud.ibm.com/docs/vpc?topic=vpc-user-data) to make available + when setting up the bare metal server. :param dict headers: A `dict` containing the request headers :return: A `DetailedResponse` containing the result, headers and HTTP status code. :rtype: DetailedResponse with `dict` result representing a `BareMetalServerInitialization` object @@ -7384,8 +7386,6 @@ def delete_image( first. This operation cannot be reversed. An image with `remote.account` set is not allowed to be deleted. Additionally, an image cannot be deleted if it: - has a `status` of `deleting` - - has a `status` of `pending` with a `status_reasons` code of - `image_request_in_progress` - has `catalog_offering.managed` set to `true`. :param str id: The image identifier. @@ -10071,6 +10071,9 @@ def update_instance_template( def list_instance_profiles( self, + *, + start: Optional[str] = None, + limit: Optional[int] = None, **kwargs, ) -> DetailedResponse: """ @@ -10081,6 +10084,9 @@ def list_instance_profiles( instance profile specifies the performance characteristics and pricing model for an instance. + :param str start: (optional) A server-provided token determining what + resource to start the page on. + :param int limit: (optional) The number of resources to return on a page. :param dict headers: A `dict` containing the request headers :return: A `DetailedResponse` containing the result, headers and HTTP status code. :rtype: DetailedResponse with `dict` result representing a `InstanceProfileCollection` object @@ -10097,6 +10103,8 @@ def list_instance_profiles( params = { 'version': self.version, 'generation': self.generation, + 'start': start, + 'limit': limit, } if 'headers' in kwargs: @@ -12301,6 +12309,184 @@ def get_instance_network_interface_ip( response = self.send(request, **kwargs) return response + def list_instance_software_attachments( + self, + instance_id: str, + **kwargs, + ) -> DetailedResponse: + """ + List instance software attachments associated with an instance. + + This request lists software attachments associated with an instance. + The instance software attachments will be sorted by their `created_at` property + values, with newest instance software attachments first. Software attachments with + identical + `created_at` property values will in turn be sorted by ascending `name` property + values. + + :param str instance_id: The virtual server instance identifier. + :param dict headers: A `dict` containing the request headers + :return: A `DetailedResponse` containing the result, headers and HTTP status code. + :rtype: DetailedResponse with `dict` result representing a `InstanceSoftwareAttachmentCollection` object + """ + + if not instance_id: + raise ValueError('instance_id must be provided') + headers = {} + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='list_instance_software_attachments', + ) + headers.update(sdk_headers) + + params = { + 'version': self.version, + 'generation': self.generation, + } + + if 'headers' in kwargs: + headers.update(kwargs.get('headers')) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['instance_id'] + path_param_values = self.encode_path_vars(instance_id) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/instances/{instance_id}/software_attachments'.format(**path_param_dict) + request = self.prepare_request( + method='GET', + url=url, + headers=headers, + params=params, + ) + + response = self.send(request, **kwargs) + return response + + def get_instance_software_attachment( + self, + instance_id: str, + id: str, + **kwargs, + ) -> DetailedResponse: + """ + Retrieve an instance software attachment. + + This request retrieves a single instance software attachment specified by + identifier in the URL. + + :param str instance_id: The virtual server instance identifier. + :param str id: The instance software attachment identifier. + :param dict headers: A `dict` containing the request headers + :return: A `DetailedResponse` containing the result, headers and HTTP status code. + :rtype: DetailedResponse with `dict` result representing a `InstanceSoftwareAttachment` object + """ + + if not instance_id: + raise ValueError('instance_id must be provided') + if not id: + raise ValueError('id must be provided') + headers = {} + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='get_instance_software_attachment', + ) + headers.update(sdk_headers) + + params = { + 'version': self.version, + 'generation': self.generation, + } + + if 'headers' in kwargs: + headers.update(kwargs.get('headers')) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['instance_id', 'id'] + path_param_values = self.encode_path_vars(instance_id, id) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/instances/{instance_id}/software_attachments/{id}'.format(**path_param_dict) + request = self.prepare_request( + method='GET', + url=url, + headers=headers, + params=params, + ) + + response = self.send(request, **kwargs) + return response + + def update_instance_software_attachment( + self, + instance_id: str, + id: str, + instance_software_attachment_patch: 'InstanceSoftwareAttachmentPatch', + **kwargs, + ) -> DetailedResponse: + """ + Update an instance software attachment. + + This request updates an instance software attachment with the information provided + in an instance software attachment patch object. The instance software attachment + patch object is structured in the same way as a retrieved instance software + attachment and needs to contain only the information to be updated. + + :param str instance_id: The virtual server instance identifier. + :param str id: The instance software attachment identifier. + :param InstanceSoftwareAttachmentPatch instance_software_attachment_patch: + The instance software attachment patch. + :param dict headers: A `dict` containing the request headers + :return: A `DetailedResponse` containing the result, headers and HTTP status code. + :rtype: DetailedResponse with `dict` result representing a `InstanceSoftwareAttachment` object + """ + + if not instance_id: + raise ValueError('instance_id must be provided') + if not id: + raise ValueError('id must be provided') + if instance_software_attachment_patch is None: + raise ValueError('instance_software_attachment_patch must be provided') + if isinstance(instance_software_attachment_patch, InstanceSoftwareAttachmentPatch): + instance_software_attachment_patch = convert_model(instance_software_attachment_patch) + headers = {} + sdk_headers = get_sdk_headers( + service_name=self.DEFAULT_SERVICE_NAME, + service_version='V1', + operation_id='update_instance_software_attachment', + ) + headers.update(sdk_headers) + + params = { + 'version': self.version, + 'generation': self.generation, + } + + data = json.dumps(instance_software_attachment_patch) + headers['content-type'] = 'application/merge-patch+json' + + if 'headers' in kwargs: + headers.update(kwargs.get('headers')) + del kwargs['headers'] + headers['Accept'] = 'application/json' + + path_param_keys = ['instance_id', 'id'] + path_param_values = self.encode_path_vars(instance_id, id) + path_param_dict = dict(zip(path_param_keys, path_param_values)) + url = '/instances/{instance_id}/software_attachments/{id}'.format(**path_param_dict) + request = self.prepare_request( + method='PATCH', + url=url, + headers=headers, + params=params, + data=data, + ) + + response = self.send(request, **kwargs) + return response + def list_instance_volume_attachments( self, instance_id: str, @@ -13503,6 +13689,7 @@ def create_load_balancer_listener( *, accept_proxy_protocol: Optional[bool] = None, certificate_instance: Optional['CertificateInstanceIdentity'] = None, + client_authentication: Optional['LoadBalancerListenerClientAuthenticationPrototype'] = None, connection_limit: Optional[int] = None, default_pool: Optional['LoadBalancerPoolIdentity'] = None, https_redirect: Optional['LoadBalancerListenerHTTPSRedirectPrototype'] = None, @@ -13546,6 +13733,12 @@ def create_load_balancer_listener( :param CertificateInstanceIdentity certificate_instance: (optional) The certificate instance to use for SSL termination. The listener must have a `protocol` of `https`. + :param LoadBalancerListenerClientAuthenticationPrototype + client_authentication: (optional) The client authentication to use for this + listener. + Supported by load balancers with `mtls_supported` set to `true`. The + listener must + have a `protocol` of `https`. :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. Supported for load balancers in the `application` family. @@ -13622,6 +13815,8 @@ def create_load_balancer_listener( raise ValueError('protocol must be provided') if certificate_instance is not None: certificate_instance = convert_model(certificate_instance) + if client_authentication is not None: + client_authentication = convert_model(client_authentication) if default_pool is not None: default_pool = convert_model(default_pool) if https_redirect is not None: @@ -13645,6 +13840,7 @@ def create_load_balancer_listener( 'protocol': protocol, 'accept_proxy_protocol': accept_proxy_protocol, 'certificate_instance': certificate_instance, + 'client_authentication': client_authentication, 'connection_limit': connection_limit, 'default_pool': default_pool, 'https_redirect': https_redirect, @@ -14627,10 +14823,12 @@ def create_load_balancer_pool( health_monitor: 'LoadBalancerPoolHealthMonitorPrototype', protocol: str, *, + client_authentication: Optional['LoadBalancerPoolClientAuthenticationPrototype'] = None, failsafe_policy: Optional['LoadBalancerPoolFailsafePolicyPrototype'] = None, members: Optional[List['LoadBalancerPoolMemberPrototype']] = None, name: Optional[str] = None, proxy_protocol: Optional[str] = None, + server_authentication: Optional['LoadBalancerPoolServerAuthenticationPrototype'] = None, session_persistence: Optional['LoadBalancerPoolSessionPersistencePrototype'] = None, **kwargs, ) -> DetailedResponse: @@ -14664,6 +14862,16 @@ def create_load_balancer_pool( balancers in the `network` family support `tcp` and `udp` (if `udp_supported` is `true`). Load balancers in the `application` family support `tcp`, `http`, and `https`. + **NOTE**: HTTP sends data in plain text, making it vulnerable to + eavesdropping and tampering. Additionally, HTTP has no built-in mechanism + to verify the identity of the server you are connecting to. It is + recommended to choose `https` instead of `http`. For more details, see: + https://www.cloudflare.com/learning/ssl/why-is-http-not-secure. + :param LoadBalancerPoolClientAuthenticationPrototype client_authentication: + (optional) The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. :param LoadBalancerPoolFailsafePolicyPrototype failsafe_policy: (optional) The failsafe policy to use for this pool. If unspecified, the default failsafe policy action from the profile will be @@ -14682,6 +14890,11 @@ def create_load_balancer_pool( - `disabled`: Disabled For load balancers in the `network` family, this property must be `disabled`. + :param LoadBalancerPoolServerAuthenticationPrototype server_authentication: + (optional) The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. :param LoadBalancerPoolSessionPersistencePrototype session_persistence: (optional) The session persistence of this pool. If specified, the load balancer must have @@ -14703,10 +14916,14 @@ def create_load_balancer_pool( if protocol is None: raise ValueError('protocol must be provided') health_monitor = convert_model(health_monitor) + if client_authentication is not None: + client_authentication = convert_model(client_authentication) if failsafe_policy is not None: failsafe_policy = convert_model(failsafe_policy) if members is not None: members = [convert_model(x) for x in members] + if server_authentication is not None: + server_authentication = convert_model(server_authentication) if session_persistence is not None: session_persistence = convert_model(session_persistence) headers = {} @@ -14726,10 +14943,12 @@ def create_load_balancer_pool( 'algorithm': algorithm, 'health_monitor': health_monitor, 'protocol': protocol, + 'client_authentication': client_authentication, 'failsafe_policy': failsafe_policy, 'members': members, 'name': name, 'proxy_protocol': proxy_protocol, + 'server_authentication': server_authentication, 'session_persistence': session_persistence, } data = {k: v for (k, v) in data.items() if v is not None} @@ -14870,6 +15089,8 @@ def update_load_balancer_pool( load_balancer_id: str, id: str, load_balancer_pool_patch: 'LoadBalancerPoolPatch', + *, + if_match: Optional[str] = None, **kwargs, ) -> DetailedResponse: """ @@ -14881,6 +15102,9 @@ def update_load_balancer_pool( :param str id: The pool identifier. :param LoadBalancerPoolPatch load_balancer_pool_patch: The load balancer pool patch. + :param str if_match: (optional) If present, the request will fail if the + specified ETag value does not match the resource's current ETag value. + Required if the request body includes an array. :param dict headers: A `dict` containing the request headers :return: A `DetailedResponse` containing the result, headers and HTTP status code. :rtype: DetailedResponse with `dict` result representing a `LoadBalancerPool` object @@ -14894,7 +15118,9 @@ def update_load_balancer_pool( raise ValueError('load_balancer_pool_patch must be provided') if isinstance(load_balancer_pool_patch, LoadBalancerPoolPatch): load_balancer_pool_patch = convert_model(load_balancer_pool_patch) - headers = {} + headers = { + 'If-Match': if_match, + } sdk_headers = get_sdk_headers( service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', @@ -20685,6 +20911,7 @@ def list_snapshot_consistency_groups( name: Optional[str] = None, sort: Optional[str] = None, backup_policy_plan_id: Optional[str] = None, + backup_policy_job_id: Optional[str] = None, **kwargs, ) -> DetailedResponse: """ @@ -20709,6 +20936,9 @@ def list_snapshot_consistency_groups( :param str backup_policy_plan_id: (optional) Filters the collection to backup policy jobs with a `backup_policy_plan.id` property matching the specified identifier. + :param str backup_policy_job_id: (optional) Filters the collection to + snapshot consistency groups with a `backup_policy_job.id` property matching + the specified identifier. :param dict headers: A `dict` containing the request headers :return: A `DetailedResponse` containing the result, headers and HTTP status code. :rtype: DetailedResponse with `dict` result representing a `SnapshotConsistencyGroupCollection` object @@ -20731,6 +20961,7 @@ def list_snapshot_consistency_groups( 'name': name, 'sort': sort, 'backup_policy_plan.id': backup_policy_plan_id, + 'backup_policy_job.id': backup_policy_job_id, } if 'headers' in kwargs: @@ -26930,11 +27161,14 @@ def list_ike_policies( def create_ike_policy( self, - authentication_algorithm: str, - dh_group: int, - encryption_algorithm: str, ike_version: int, *, + authentication_algorithm: Optional[str] = None, + authentication_algorithms: Optional[List[str]] = None, + dh_group: Optional[int] = None, + dh_groups: Optional[List[int]] = None, + encryption_algorithm: Optional[str] = None, + encryption_algorithms: Optional[List[str]] = None, key_lifetime: Optional[int] = None, name: Optional[str] = None, resource_group: Optional['ResourceGroupIdentity'] = None, @@ -26945,10 +27179,42 @@ def create_ike_policy( This request creates a new IKE policy. - :param str authentication_algorithm: The authentication algorithm. - :param int dh_group: The Diffie-Hellman group. - :param str encryption_algorithm: The encryption algorithm. :param int ike_version: The IKE protocol version. + :param str authentication_algorithm: (optional) Deprecated: The + authentication algorithm. + `authentication_algorithm` has been deprecated. Use + `authentication_algorithms` instead. + If specified, `authentication_algorithms` must not be specified. + :param List[str] authentication_algorithms: (optional) The authentication + algorithms to use for IKE Negotiation. + If specified, `authentication_algorithm` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly + one algorithm. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + :param int dh_group: (optional) Deprecated: The Diffie-Hellman group. + `dh_group` has been deprecated. Use `dh_groups` instead. + If specified, `dh_groups` must not be specified. + :param List[int] dh_groups: (optional) The Diffie-Hellman groups to use for + IKE negotiation. + If specified, `dh_group` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly + one algorithm. + The order of the Diffie-Hellman groups in this array indicates their + priority for negotiation, with each Diffie-Hellman group having priority + over the one after it. + :param str encryption_algorithm: (optional) Deprecated: The encryption + algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` + instead. + If specified, `encryption_algorithms` must not be specified. + :param List[str] encryption_algorithms: (optional) The encryption + algorithms to use for IKE Negotiation. + If specified, `encryption_algorithm` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly + one algorithm. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param int key_lifetime: (optional) The key lifetime in seconds. :param str name: (optional) The name for this IKE policy. The name must not be used by another IKE policy in the region. If unspecified, the name will @@ -26962,12 +27228,6 @@ def create_ike_policy( :rtype: DetailedResponse with `dict` result representing a `IKEPolicy` object """ - if authentication_algorithm is None: - raise ValueError('authentication_algorithm must be provided') - if dh_group is None: - raise ValueError('dh_group must be provided') - if encryption_algorithm is None: - raise ValueError('encryption_algorithm must be provided') if ike_version is None: raise ValueError('ike_version must be provided') if resource_group is not None: @@ -26986,10 +27246,13 @@ def create_ike_policy( } data = { + 'ike_version': ike_version, 'authentication_algorithm': authentication_algorithm, + 'authentication_algorithms': authentication_algorithms, 'dh_group': dh_group, + 'dh_groups': dh_groups, 'encryption_algorithm': encryption_algorithm, - 'ike_version': ike_version, + 'encryption_algorithms': encryption_algorithms, 'key_lifetime': key_lifetime, 'name': name, 'resource_group': resource_group, @@ -27287,12 +27550,15 @@ def list_ipsec_policies( def create_ipsec_policy( self, - authentication_algorithm: str, - encryption_algorithm: str, - pfs: str, *, + authentication_algorithm: Optional[str] = None, + authentication_algorithms: Optional[List[str]] = None, + encryption_algorithm: Optional[str] = None, + encryption_algorithms: Optional[List[str]] = None, key_lifetime: Optional[int] = None, name: Optional[str] = None, + pfs: Optional[str] = None, + pfs_groups: Optional[List[str]] = None, resource_group: Optional['ResourceGroupIdentity'] = None, **kwargs, ) -> DetailedResponse: @@ -27301,21 +27567,57 @@ def create_ipsec_policy( This request creates a new IPsec policy. - :param str authentication_algorithm: The authentication algorithm + :param str authentication_algorithm: (optional) Deprecated: The + authentication algorithm. + `authentication_algorithm` has been deprecated. Use + `authentication_algorithms` instead. + If specified, `authentication_algorithms` must not be specified. Must be `disabled` if and only if the `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `md5` and `sha1` algorithms have been deprecated. - :param str encryption_algorithm: The encryption algorithm + :param List[str] authentication_algorithms: (optional) The authentication + algorithms to use for IPsec negotiation. + If specified, `authentication_algorithm` must not be specified. + Must be `["disabled"]` when `encryption_algorithms` has only combined-mode + algorithms + (`aes128gcm16`, `aes192gcm16`, and `aes256gcm16`). + The `md5` and `sha1` algorithms have been deprecated. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + :param str encryption_algorithm: (optional) Deprecated: The encryption + algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` + instead. + If specified, `encryption_algorithms` must not be specified. The `authentication_algorithm` must be `disabled` if and only if `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `triple_des` algorithm has been deprecated. - :param str pfs: The Perfect Forward Secrecy group. - Groups `group_2` and `group_5` have been deprecated. + :param List[str] encryption_algorithms: (optional) The encryption + algorithms to use for IPsec negotiation. + If specified, `encryption_algorithm` must not be specified. + If only combined-mode encryption algorithms (`aes128gcm16`, `aes192gcm16`, + and + `aes256gcm16`) are to be used, then `authentication_algorithms` must be + `["disabled"]`. + The `triple_des` algorithm has been deprecated. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param int key_lifetime: (optional) The key lifetime in seconds. :param str name: (optional) The name for this IPsec policy. The name must not be used by another IPsec policy in the region. If unspecified, the name will be a hyphenated list of randomly-selected words. + :param str pfs: (optional) Deprecated: The Perfect Forward Secrecy group. + `pfs` has been deprecated. Use `pfs_groups` instead. + If specified, `pfs_groups` must not be specified. + Groups `group_2` and `group_5` have been deprecated. + :param List[str] pfs_groups: (optional) The Perfect Forward Secrecy groups + to use for IPsec negotiation. + If specified, `pfs` must not be specified. + Groups `group_2` and `group_5` have been deprecated. + The order of the Perfect Forward Secrecy groups in this array indicates + their priority for negotiation, with each Perfect Forward Secrecy group + having priority over the one after it. :param ResourceGroupIdentity resource_group: (optional) The resource group to use. If unspecified, the account's [default resource group](https://cloud.ibm.com/apidocs/resource-manager#introduction) will be @@ -27325,12 +27627,6 @@ def create_ipsec_policy( :rtype: DetailedResponse with `dict` result representing a `IPsecPolicy` object """ - if authentication_algorithm is None: - raise ValueError('authentication_algorithm must be provided') - if encryption_algorithm is None: - raise ValueError('encryption_algorithm must be provided') - if pfs is None: - raise ValueError('pfs must be provided') if resource_group is not None: resource_group = convert_model(resource_group) headers = {} @@ -27348,10 +27644,13 @@ def create_ipsec_policy( data = { 'authentication_algorithm': authentication_algorithm, + 'authentication_algorithms': authentication_algorithms, 'encryption_algorithm': encryption_algorithm, - 'pfs': pfs, + 'encryption_algorithms': encryption_algorithms, 'key_lifetime': key_lifetime, 'name': name, + 'pfs': pfs, + 'pfs_groups': pfs_groups, 'resource_group': resource_group, } data = {k: v for (k, v) in data.items() if v is not None} @@ -30151,6 +30450,7 @@ class Status(str, Enum): DEPRECATED = 'deprecated' FAILED = 'failed' OBSOLETE = 'obsolete' + PARTIALLY_AVAILABLE = 'partially_available' PENDING = 'pending' UNUSABLE = 'unusable' class Visibility(str, Enum): @@ -31728,6 +32028,109 @@ def __ne__(self, other: 'BackupPolicyJobCollection') -> bool: return not self == other +class BackupPolicyJobReference: + """ + BackupPolicyJobReference. + + :param Deleted deleted: (optional) If present, this property indicates the + referenced resource has been deleted, and provides + some supplementary information. + :param str href: The URL for this backup policy job. + :param str id: The unique identifier for this backup policy job. + :param str resource_type: The resource type. + """ + + def __init__( + self, + href: str, + id: str, + resource_type: str, + *, + deleted: Optional['Deleted'] = None, + ) -> None: + """ + Initialize a BackupPolicyJobReference object. + + :param str href: The URL for this backup policy job. + :param str id: The unique identifier for this backup policy job. + :param str resource_type: The resource type. + :param Deleted deleted: (optional) If present, this property indicates the + referenced resource has been deleted, and provides + some supplementary information. + """ + self.deleted = deleted + self.href = href + self.id = id + self.resource_type = resource_type + + @classmethod + def from_dict(cls, _dict: Dict) -> 'BackupPolicyJobReference': + """Initialize a BackupPolicyJobReference object from a json dictionary.""" + args = {} + if (deleted := _dict.get('deleted')) is not None: + args['deleted'] = Deleted.from_dict(deleted) + if (href := _dict.get('href')) is not None: + args['href'] = href + else: + raise ValueError('Required property \'href\' not present in BackupPolicyJobReference JSON') + if (id := _dict.get('id')) is not None: + args['id'] = id + else: + raise ValueError('Required property \'id\' not present in BackupPolicyJobReference JSON') + if (resource_type := _dict.get('resource_type')) is not None: + args['resource_type'] = resource_type + else: + raise ValueError('Required property \'resource_type\' not present in BackupPolicyJobReference JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a BackupPolicyJobReference object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'deleted') and self.deleted is not None: + if isinstance(self.deleted, dict): + _dict['deleted'] = self.deleted + else: + _dict['deleted'] = self.deleted.to_dict() + if hasattr(self, 'href') and self.href is not None: + _dict['href'] = self.href + if hasattr(self, 'id') and self.id is not None: + _dict['id'] = self.id + if hasattr(self, 'resource_type') and self.resource_type is not None: + _dict['resource_type'] = self.resource_type + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this BackupPolicyJobReference object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'BackupPolicyJobReference') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'BackupPolicyJobReference') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class ResourceTypeEnum(str, Enum): + """ + The resource type. + """ + + BACKUP_POLICY_JOB = 'backup_policy_job' + + + class BackupPolicyJobSource: """ The source this backup was created from (may be @@ -35498,12 +35901,14 @@ class BareMetalServerInitializationPrototype: vendor data. For cloud-init enabled images, these keys will also be added as SSH authorized keys for the [default user](https://cloud.ibm.com/docs/vpc?topic=vpc-vsi_is_connecting_linux#determining-default-user-account). - For Windows images, at least one key must be specified, and one will be selected - to encrypt the administrator password. Keys are optional for other images, but - if no keys are specified, the bare metal server will be inaccessible unless the - specified image provides another means of access. - :param str user_data: (optional) The user data to be made available when - initializing the bare metal server. + For Windows images, at least one SSH key of type `rsa` must be specified. One of + the provided keys is selected to encrypt the administrator password. SSH keys + are optional for other images; however, if no keys are specified, the bare metal + server will be inaccessible unless the selected image provides an alternative + access mechanism. + :param str user_data: (optional) The [user + data](https://cloud.ibm.com/docs/vpc?topic=vpc-user-data) to make available when + setting up the bare metal server. """ def __init__( @@ -35524,16 +35929,18 @@ def __init__( cloud-init vendor data. For cloud-init enabled images, these keys will also be added as SSH authorized keys for the [default user](https://cloud.ibm.com/docs/vpc?topic=vpc-vsi_is_connecting_linux#determining-default-user-account). - For Windows images, at least one key must be specified, and one will be - selected to encrypt the administrator password. Keys are optional for other - images, but if no keys are specified, the bare metal server will be - inaccessible unless the specified image provides another means of access. + For Windows images, at least one SSH key of type `rsa` must be specified. + One of the provided keys is selected to encrypt the administrator password. + SSH keys are optional for other images; however, if no keys are specified, + the bare metal server will be inaccessible unless the selected image + provides an alternative access mechanism. :param BareMetalServerInitializationDefaultTrustedProfilePrototype default_trusted_profile: (optional) The default trusted profile to be used when initializing the bare metal server. If unspecified, no default trusted profile will be made available. - :param str user_data: (optional) The user data to be made available when - initializing the bare metal server. + :param str user_data: (optional) The [user + data](https://cloud.ibm.com/docs/vpc?topic=vpc-user-data) to make available + when setting up the bare metal server. """ self.default_trusted_profile = default_trusted_profile self.image = image @@ -51201,21 +51608,40 @@ class IKEPolicy: """ IKEPolicy. - :param str authentication_algorithm: The authentication algorithm. + :param str authentication_algorithm: Deprecated: The authentication algorithm. The `md5` and `sha1` algorithms have been deprecated. The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + If `multiple`, the policy supports more than one authentication algorithm. Use + the `authentication_algorithms` property to retrieve all supported algorithms. + :param List[str] authentication_algorithms: The authentication algorithms to use + for IKE Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param List[VPNGatewayConnectionReference] connections: The VPN gateway connections that use this IKE policy. :param datetime created_at: The date and time that this IKE policy was created. - :param int dh_group: The Diffie-Hellman group + :param int dh_group: Deprecated: The Diffie-Hellman group Groups `2` and `5` have been deprecated. - :param str encryption_algorithm: The encryption algorithm. + If `65535`, the policy supports more than one Diffie-Hellman group. Use the + `dh_groups` property to retrieve all supported Diffie-Hellman groups. + :param List[int] dh_groups: The Diffie-Hellman groups to use for IKE + negotiation. + The order of the Diffie-Hellman groups in this array indicates their priority + for negotiation, with each Diffie-Hellman group having priority over the one + after it. + :param str encryption_algorithm: Deprecated: The encryption algorithm. + If `multiple`, the policy supports more than one encryption algorithm. Use the + `encryption_algorithms` property to retrieve all supported algorithms. The `triple_des` algorithm has been deprecated. The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] encryption_algorithms: The encryption algorithms to use for IKE + Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param str href: The URL for this IKE policy. :param str id: The unique identifier for this IKE policy. :param int ike_version: The IKE protocol version. @@ -51234,10 +51660,13 @@ class IKEPolicy: def __init__( self, authentication_algorithm: str, + authentication_algorithms: List[str], connections: List['VPNGatewayConnectionReference'], created_at: datetime, dh_group: int, + dh_groups: List[int], encryption_algorithm: str, + encryption_algorithms: List[str], href: str, id: str, ike_version: int, @@ -51250,22 +51679,43 @@ def __init__( """ Initialize a IKEPolicy object. - :param str authentication_algorithm: The authentication algorithm. + :param str authentication_algorithm: Deprecated: The authentication + algorithm. The `md5` and `sha1` algorithms have been deprecated. The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + If `multiple`, the policy supports more than one authentication algorithm. + Use the `authentication_algorithms` property to retrieve all supported + algorithms. + :param List[str] authentication_algorithms: The authentication algorithms + to use for IKE Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param List[VPNGatewayConnectionReference] connections: The VPN gateway connections that use this IKE policy. :param datetime created_at: The date and time that this IKE policy was created. - :param int dh_group: The Diffie-Hellman group + :param int dh_group: Deprecated: The Diffie-Hellman group Groups `2` and `5` have been deprecated. - :param str encryption_algorithm: The encryption algorithm. + If `65535`, the policy supports more than one Diffie-Hellman group. Use the + `dh_groups` property to retrieve all supported Diffie-Hellman groups. + :param List[int] dh_groups: The Diffie-Hellman groups to use for IKE + negotiation. + The order of the Diffie-Hellman groups in this array indicates their + priority for negotiation, with each Diffie-Hellman group having priority + over the one after it. + :param str encryption_algorithm: Deprecated: The encryption algorithm. + If `multiple`, the policy supports more than one encryption algorithm. Use + the `encryption_algorithms` property to retrieve all supported algorithms. The `triple_des` algorithm has been deprecated. The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] encryption_algorithms: The encryption algorithms to use + for IKE Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param str href: The URL for this IKE policy. :param str id: The unique identifier for this IKE policy. :param int ike_version: The IKE protocol version. @@ -51281,10 +51731,13 @@ def __init__( :param str resource_type: The resource type. """ self.authentication_algorithm = authentication_algorithm + self.authentication_algorithms = authentication_algorithms self.connections = connections self.created_at = created_at self.dh_group = dh_group + self.dh_groups = dh_groups self.encryption_algorithm = encryption_algorithm + self.encryption_algorithms = encryption_algorithms self.href = href self.id = id self.ike_version = ike_version @@ -51302,6 +51755,10 @@ def from_dict(cls, _dict: Dict) -> 'IKEPolicy': args['authentication_algorithm'] = authentication_algorithm else: raise ValueError('Required property \'authentication_algorithm\' not present in IKEPolicy JSON') + if (authentication_algorithms := _dict.get('authentication_algorithms')) is not None: + args['authentication_algorithms'] = authentication_algorithms + else: + raise ValueError('Required property \'authentication_algorithms\' not present in IKEPolicy JSON') if (connections := _dict.get('connections')) is not None: args['connections'] = [VPNGatewayConnectionReference.from_dict(v) for v in connections] else: @@ -51314,10 +51771,18 @@ def from_dict(cls, _dict: Dict) -> 'IKEPolicy': args['dh_group'] = dh_group else: raise ValueError('Required property \'dh_group\' not present in IKEPolicy JSON') + if (dh_groups := _dict.get('dh_groups')) is not None: + args['dh_groups'] = dh_groups + else: + raise ValueError('Required property \'dh_groups\' not present in IKEPolicy JSON') if (encryption_algorithm := _dict.get('encryption_algorithm')) is not None: args['encryption_algorithm'] = encryption_algorithm else: raise ValueError('Required property \'encryption_algorithm\' not present in IKEPolicy JSON') + if (encryption_algorithms := _dict.get('encryption_algorithms')) is not None: + args['encryption_algorithms'] = encryption_algorithms + else: + raise ValueError('Required property \'encryption_algorithms\' not present in IKEPolicy JSON') if (href := _dict.get('href')) is not None: args['href'] = href else: @@ -51362,6 +51827,8 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'authentication_algorithm') and self.authentication_algorithm is not None: _dict['authentication_algorithm'] = self.authentication_algorithm + if hasattr(self, 'authentication_algorithms') and self.authentication_algorithms is not None: + _dict['authentication_algorithms'] = self.authentication_algorithms if hasattr(self, 'connections') and self.connections is not None: connections_list = [] for v in self.connections: @@ -51374,8 +51841,12 @@ def to_dict(self) -> Dict: _dict['created_at'] = datetime_to_string(self.created_at) if hasattr(self, 'dh_group') and self.dh_group is not None: _dict['dh_group'] = self.dh_group + if hasattr(self, 'dh_groups') and self.dh_groups is not None: + _dict['dh_groups'] = self.dh_groups if hasattr(self, 'encryption_algorithm') and self.encryption_algorithm is not None: _dict['encryption_algorithm'] = self.encryption_algorithm + if hasattr(self, 'encryption_algorithms') and self.encryption_algorithms is not None: + _dict['encryption_algorithms'] = self.encryption_algorithms if hasattr(self, 'href') and self.href is not None: _dict['href'] = self.href if hasattr(self, 'id') and self.id is not None: @@ -51422,18 +51893,33 @@ class AuthenticationAlgorithmEnum(str, Enum): The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + If `multiple`, the policy supports more than one authentication algorithm. Use the + `authentication_algorithms` property to retrieve all supported algorithms. """ MD5 = 'md5' + MULTIPLE = 'multiple' SHA1 = 'sha1' SHA256 = 'sha256' SHA384 = 'sha384' SHA512 = 'sha512' + class AuthenticationAlgorithmsEnum(str, Enum): + """ + authentication_algorithms. + """ + + SHA256 = 'sha256' + SHA384 = 'sha384' + SHA512 = 'sha512' + + class EncryptionAlgorithmEnum(str, Enum): """ The encryption algorithm. + If `multiple`, the policy supports more than one encryption algorithm. Use the + `encryption_algorithms` property to retrieve all supported algorithms. The `triple_des` algorithm has been deprecated. The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the @@ -51443,9 +51929,20 @@ class EncryptionAlgorithmEnum(str, Enum): AES128 = 'aes128' AES192 = 'aes192' AES256 = 'aes256' + MULTIPLE = 'multiple' TRIPLE_DES = 'triple_des' + class EncryptionAlgorithmsEnum(str, Enum): + """ + encryption_algorithms. + """ + + AES128 = 'aes128' + AES192 = 'aes192' + AES256 = 'aes256' + + class NegotiationModeEnum(str, Enum): """ The IKE negotiation mode. @@ -51704,9 +52201,50 @@ class IKEPolicyPatch: """ IKEPolicyPatch. - :param str authentication_algorithm: (optional) The authentication algorithm. - :param int dh_group: (optional) The Diffie-Hellman group. - :param str encryption_algorithm: (optional) The encryption algorithm. + :param str authentication_algorithm: (optional) Deprecated: The authentication + algorithm. + `authentication_algorithm` has been deprecated. Use `authentication_algorithms` + instead. + If specified, `authentication_algorithms` must not be specified. + Updating this property will also update the + `authentication_algorithms` field accordingly. + :param List[str] authentication_algorithms: (optional) The authentication + algorithms to use for IKE Negotiation. + If specified, `authentication_algorithm` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly one + algorithm. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the + `authentication_algorithm` field accordingly. + :param int dh_group: (optional) Deprecated: The Diffie-Hellman group. + `dh_group` has been deprecated. Use `dh_groups` instead. + If specified, `dh_groups` must not be specified. + Updating this property will also update the `dh_groups` field accordingly. + :param List[int] dh_groups: (optional) The Diffie-Hellman groups to use for IKE + Negotiation. + If specified, `dh_group` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly one + algorithm. + The order of the Diffie-Hellman groups in this array indicates their priority + for negotiation, with each Diffie-Hellman group having priority over the one + after it. + Updating this property will also update the `dh_group` field accordingly. + :param str encryption_algorithm: (optional) Deprecated: The encryption + algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` instead. + If specified, `encryption_algorithms` must not be specified. + Updating this property will also update the + `encryption_algorithms` field accordingly. + :param List[str] encryption_algorithms: (optional) The encryption algorithms to + use for IKE negotiation. + If specified, `encryption_algorithm` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly one + algorithm. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the `encryption_algorithm` field + accordingly. :param int ike_version: (optional) The IKE protocol version. :param int key_lifetime: (optional) The key lifetime in seconds. :param str name: (optional) The name for this IKE policy. The name must not be @@ -51717,8 +52255,11 @@ def __init__( self, *, authentication_algorithm: Optional[str] = None, + authentication_algorithms: Optional[List[str]] = None, dh_group: Optional[int] = None, + dh_groups: Optional[List[int]] = None, encryption_algorithm: Optional[str] = None, + encryption_algorithms: Optional[List[str]] = None, ike_version: Optional[int] = None, key_lifetime: Optional[int] = None, name: Optional[str] = None, @@ -51726,18 +52267,62 @@ def __init__( """ Initialize a IKEPolicyPatch object. - :param str authentication_algorithm: (optional) The authentication + :param str authentication_algorithm: (optional) Deprecated: The + authentication algorithm. + `authentication_algorithm` has been deprecated. Use + `authentication_algorithms` instead. + If specified, `authentication_algorithms` must not be specified. + Updating this property will also update the + `authentication_algorithms` field accordingly. + :param List[str] authentication_algorithms: (optional) The authentication + algorithms to use for IKE Negotiation. + If specified, `authentication_algorithm` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly + one algorithm. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the + `authentication_algorithm` field accordingly. + :param int dh_group: (optional) Deprecated: The Diffie-Hellman group. + `dh_group` has been deprecated. Use `dh_groups` instead. + If specified, `dh_groups` must not be specified. + Updating this property will also update the `dh_groups` field accordingly. + :param List[int] dh_groups: (optional) The Diffie-Hellman groups to use for + IKE Negotiation. + If specified, `dh_group` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly + one algorithm. + The order of the Diffie-Hellman groups in this array indicates their + priority for negotiation, with each Diffie-Hellman group having priority + over the one after it. + Updating this property will also update the `dh_group` field accordingly. + :param str encryption_algorithm: (optional) Deprecated: The encryption algorithm. - :param int dh_group: (optional) The Diffie-Hellman group. - :param str encryption_algorithm: (optional) The encryption algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` + instead. + If specified, `encryption_algorithms` must not be specified. + Updating this property will also update the + `encryption_algorithms` field accordingly. + :param List[str] encryption_algorithms: (optional) The encryption + algorithms to use for IKE negotiation. + If specified, `encryption_algorithm` must not be specified. + If the IKE policy's `ike_version` is `1`, this array must contain exactly + one algorithm. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the `encryption_algorithm` field + accordingly. :param int ike_version: (optional) The IKE protocol version. :param int key_lifetime: (optional) The key lifetime in seconds. :param str name: (optional) The name for this IKE policy. The name must not be used by another IKE policy in the region. """ self.authentication_algorithm = authentication_algorithm + self.authentication_algorithms = authentication_algorithms self.dh_group = dh_group + self.dh_groups = dh_groups self.encryption_algorithm = encryption_algorithm + self.encryption_algorithms = encryption_algorithms self.ike_version = ike_version self.key_lifetime = key_lifetime self.name = name @@ -51748,10 +52333,16 @@ def from_dict(cls, _dict: Dict) -> 'IKEPolicyPatch': args = {} if (authentication_algorithm := _dict.get('authentication_algorithm')) is not None: args['authentication_algorithm'] = authentication_algorithm + if (authentication_algorithms := _dict.get('authentication_algorithms')) is not None: + args['authentication_algorithms'] = authentication_algorithms if (dh_group := _dict.get('dh_group')) is not None: args['dh_group'] = dh_group + if (dh_groups := _dict.get('dh_groups')) is not None: + args['dh_groups'] = dh_groups if (encryption_algorithm := _dict.get('encryption_algorithm')) is not None: args['encryption_algorithm'] = encryption_algorithm + if (encryption_algorithms := _dict.get('encryption_algorithms')) is not None: + args['encryption_algorithms'] = encryption_algorithms if (ike_version := _dict.get('ike_version')) is not None: args['ike_version'] = ike_version if (key_lifetime := _dict.get('key_lifetime')) is not None: @@ -51770,10 +52361,16 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'authentication_algorithm') and self.authentication_algorithm is not None: _dict['authentication_algorithm'] = self.authentication_algorithm + if hasattr(self, 'authentication_algorithms') and self.authentication_algorithms is not None: + _dict['authentication_algorithms'] = self.authentication_algorithms if hasattr(self, 'dh_group') and self.dh_group is not None: _dict['dh_group'] = self.dh_group + if hasattr(self, 'dh_groups') and self.dh_groups is not None: + _dict['dh_groups'] = self.dh_groups if hasattr(self, 'encryption_algorithm') and self.encryption_algorithm is not None: _dict['encryption_algorithm'] = self.encryption_algorithm + if hasattr(self, 'encryption_algorithms') and self.encryption_algorithms is not None: + _dict['encryption_algorithms'] = self.encryption_algorithms if hasattr(self, 'ike_version') and self.ike_version is not None: _dict['ike_version'] = self.ike_version if hasattr(self, 'key_lifetime') and self.key_lifetime is not None: @@ -51803,6 +52400,21 @@ def __ne__(self, other: 'IKEPolicyPatch') -> bool: class AuthenticationAlgorithmEnum(str, Enum): """ The authentication algorithm. + `authentication_algorithm` has been deprecated. Use `authentication_algorithms` + instead. + If specified, `authentication_algorithms` must not be specified. + Updating this property will also update the + `authentication_algorithms` field accordingly. + """ + + SHA256 = 'sha256' + SHA384 = 'sha384' + SHA512 = 'sha512' + + + class AuthenticationAlgorithmsEnum(str, Enum): + """ + authentication_algorithms. """ SHA256 = 'sha256' @@ -51813,6 +52425,20 @@ class AuthenticationAlgorithmEnum(str, Enum): class EncryptionAlgorithmEnum(str, Enum): """ The encryption algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` instead. + If specified, `encryption_algorithms` must not be specified. + Updating this property will also update the + `encryption_algorithms` field accordingly. + """ + + AES128 = 'aes128' + AES192 = 'aes192' + AES256 = 'aes256' + + + class EncryptionAlgorithmsEnum(str, Enum): + """ + encryption_algorithms. """ AES128 = 'aes128' @@ -52005,11 +52631,17 @@ class IPsecPolicy: """ IPsecPolicy. - :param str authentication_algorithm: The authentication algorithm + :param str authentication_algorithm: Deprecated: The authentication algorithms. + If `multiple`, the policy supports more than one authentication algorithm. Use + the `authentication_algorithms` property to retrieve all supported algorithms. The `md5` and `sha1` algorithms have been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] authentication_algorithms: The authentication algorithms to use + for IPsec Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param List[VPNGatewayConnectionReference] connections: The VPN gateway connections that use this IPsec policy. :param datetime created_at: The date and time that this IPsec policy was @@ -52018,21 +52650,34 @@ class IPsecPolicy: The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. - :param str encryption_algorithm: The encryption algorithm + :param str encryption_algorithm: Deprecated: The encryption algorithm. + If `multiple`, the policy supports more than one encryption algorithm. Use the + `encryption_algorithms` property to retrieve all supported algorithms. The `triple_des` algorithm has been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] encryption_algorithms: The encryption algorithms to use for IKE + Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param str href: The URL for this IPsec policy. :param str id: The unique identifier for this IPsec policy. :param int key_lifetime: The key lifetime in seconds. :param str name: The name for this IPsec policy. The name is unique across all IPsec policies in the region. - :param str pfs: The Perfect Forward Secrecy group + :param str pfs: Deprecated: The Perfect Forward Secrecy group. + If `multiple`, the policy supports more than one PFS group. Use the `pfs_groups` + property to retrieve all supported PFS groups. Groups `group_2` and `group_5` have been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] pfs_groups: The Perfect Forward Secrecy groups to use for IPsec + negotiation. + The order of the Perfect Forward Secrecy groups in this array indicates their + priority for negotiation, with each Perfect Forward Secrecy group having + priority over the one after it. :param ResourceGroupReference resource_group: The resource group for this IPsec policy. :param str resource_type: The resource type. @@ -52045,15 +52690,18 @@ class IPsecPolicy: def __init__( self, authentication_algorithm: str, + authentication_algorithms: List[str], connections: List['VPNGatewayConnectionReference'], created_at: datetime, encapsulation_mode: str, encryption_algorithm: str, + encryption_algorithms: List[str], href: str, id: str, key_lifetime: int, name: str, pfs: str, + pfs_groups: List[str], resource_group: 'ResourceGroupReference', resource_type: str, transform_protocol: str, @@ -52061,11 +52709,19 @@ def __init__( """ Initialize a IPsecPolicy object. - :param str authentication_algorithm: The authentication algorithm + :param str authentication_algorithm: Deprecated: The authentication + algorithms. + If `multiple`, the policy supports more than one authentication algorithm. + Use the `authentication_algorithms` property to retrieve all supported + algorithms. The `md5` and `sha1` algorithms have been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] authentication_algorithms: The authentication algorithms + to use for IPsec Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param List[VPNGatewayConnectionReference] connections: The VPN gateway connections that use this IPsec policy. :param datetime created_at: The date and time that this IPsec policy was @@ -52074,21 +52730,34 @@ def __init__( The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. - :param str encryption_algorithm: The encryption algorithm + :param str encryption_algorithm: Deprecated: The encryption algorithm. + If `multiple`, the policy supports more than one encryption algorithm. Use + the `encryption_algorithms` property to retrieve all supported algorithms. The `triple_des` algorithm has been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] encryption_algorithms: The encryption algorithms to use + for IKE Negotiation. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. :param str href: The URL for this IPsec policy. :param str id: The unique identifier for this IPsec policy. :param int key_lifetime: The key lifetime in seconds. :param str name: The name for this IPsec policy. The name is unique across all IPsec policies in the region. - :param str pfs: The Perfect Forward Secrecy group + :param str pfs: Deprecated: The Perfect Forward Secrecy group. + If `multiple`, the policy supports more than one PFS group. Use the + `pfs_groups` property to retrieve all supported PFS groups. Groups `group_2` and `group_5` have been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param List[str] pfs_groups: The Perfect Forward Secrecy groups to use for + IPsec negotiation. + The order of the Perfect Forward Secrecy groups in this array indicates + their priority for negotiation, with each Perfect Forward Secrecy group + having priority over the one after it. :param ResourceGroupReference resource_group: The resource group for this IPsec policy. :param str resource_type: The resource type. @@ -52098,15 +52767,18 @@ def __init__( future. """ self.authentication_algorithm = authentication_algorithm + self.authentication_algorithms = authentication_algorithms self.connections = connections self.created_at = created_at self.encapsulation_mode = encapsulation_mode self.encryption_algorithm = encryption_algorithm + self.encryption_algorithms = encryption_algorithms self.href = href self.id = id self.key_lifetime = key_lifetime self.name = name self.pfs = pfs + self.pfs_groups = pfs_groups self.resource_group = resource_group self.resource_type = resource_type self.transform_protocol = transform_protocol @@ -52119,6 +52791,10 @@ def from_dict(cls, _dict: Dict) -> 'IPsecPolicy': args['authentication_algorithm'] = authentication_algorithm else: raise ValueError('Required property \'authentication_algorithm\' not present in IPsecPolicy JSON') + if (authentication_algorithms := _dict.get('authentication_algorithms')) is not None: + args['authentication_algorithms'] = authentication_algorithms + else: + raise ValueError('Required property \'authentication_algorithms\' not present in IPsecPolicy JSON') if (connections := _dict.get('connections')) is not None: args['connections'] = [VPNGatewayConnectionReference.from_dict(v) for v in connections] else: @@ -52135,6 +52811,10 @@ def from_dict(cls, _dict: Dict) -> 'IPsecPolicy': args['encryption_algorithm'] = encryption_algorithm else: raise ValueError('Required property \'encryption_algorithm\' not present in IPsecPolicy JSON') + if (encryption_algorithms := _dict.get('encryption_algorithms')) is not None: + args['encryption_algorithms'] = encryption_algorithms + else: + raise ValueError('Required property \'encryption_algorithms\' not present in IPsecPolicy JSON') if (href := _dict.get('href')) is not None: args['href'] = href else: @@ -52155,6 +52835,10 @@ def from_dict(cls, _dict: Dict) -> 'IPsecPolicy': args['pfs'] = pfs else: raise ValueError('Required property \'pfs\' not present in IPsecPolicy JSON') + if (pfs_groups := _dict.get('pfs_groups')) is not None: + args['pfs_groups'] = pfs_groups + else: + raise ValueError('Required property \'pfs_groups\' not present in IPsecPolicy JSON') if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: @@ -52179,6 +52863,8 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'authentication_algorithm') and self.authentication_algorithm is not None: _dict['authentication_algorithm'] = self.authentication_algorithm + if hasattr(self, 'authentication_algorithms') and self.authentication_algorithms is not None: + _dict['authentication_algorithms'] = self.authentication_algorithms if hasattr(self, 'connections') and self.connections is not None: connections_list = [] for v in self.connections: @@ -52193,6 +52879,8 @@ def to_dict(self) -> Dict: _dict['encapsulation_mode'] = self.encapsulation_mode if hasattr(self, 'encryption_algorithm') and self.encryption_algorithm is not None: _dict['encryption_algorithm'] = self.encryption_algorithm + if hasattr(self, 'encryption_algorithms') and self.encryption_algorithms is not None: + _dict['encryption_algorithms'] = self.encryption_algorithms if hasattr(self, 'href') and self.href is not None: _dict['href'] = self.href if hasattr(self, 'id') and self.id is not None: @@ -52203,6 +52891,8 @@ def to_dict(self) -> Dict: _dict['name'] = self.name if hasattr(self, 'pfs') and self.pfs is not None: _dict['pfs'] = self.pfs + if hasattr(self, 'pfs_groups') and self.pfs_groups is not None: + _dict['pfs_groups'] = self.pfs_groups if hasattr(self, 'resource_group') and self.resource_group is not None: if isinstance(self.resource_group, dict): _dict['resource_group'] = self.resource_group @@ -52234,7 +52924,9 @@ def __ne__(self, other: 'IPsecPolicy') -> bool: class AuthenticationAlgorithmEnum(str, Enum): """ - The authentication algorithm + The authentication algorithms. + If `multiple`, the policy supports more than one authentication algorithm. Use the + `authentication_algorithms` property to retrieve all supported algorithms. The `md5` and `sha1` algorithms have been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the @@ -52242,8 +52934,18 @@ class AuthenticationAlgorithmEnum(str, Enum): """ DISABLED = 'disabled' - MD5 = 'md5' - SHA1 = 'sha1' + MULTIPLE = 'multiple' + SHA256 = 'sha256' + SHA384 = 'sha384' + SHA512 = 'sha512' + + + class AuthenticationAlgorithmsEnum(str, Enum): + """ + authentication_algorithms. + """ + + DISABLED = 'disabled' SHA256 = 'sha256' SHA384 = 'sha384' SHA512 = 'sha512' @@ -52262,7 +52964,9 @@ class EncapsulationModeEnum(str, Enum): class EncryptionAlgorithmEnum(str, Enum): """ - The encryption algorithm + The encryption algorithm. + If `multiple`, the policy supports more than one encryption algorithm. Use the + `encryption_algorithms` property to retrieve all supported algorithms. The `triple_des` algorithm has been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the @@ -52275,12 +52979,28 @@ class EncryptionAlgorithmEnum(str, Enum): AES192GCM16 = 'aes192gcm16' AES256 = 'aes256' AES256GCM16 = 'aes256gcm16' + MULTIPLE = 'multiple' TRIPLE_DES = 'triple_des' + class EncryptionAlgorithmsEnum(str, Enum): + """ + encryption_algorithms. + """ + + AES128 = 'aes128' + AES128GCM16 = 'aes128gcm16' + AES192 = 'aes192' + AES192GCM16 = 'aes192gcm16' + AES256 = 'aes256' + AES256GCM16 = 'aes256gcm16' + + class PfsEnum(str, Enum): """ - The Perfect Forward Secrecy group + The Perfect Forward Secrecy group. + If `multiple`, the policy supports more than one PFS group. Use the `pfs_groups` + property to retrieve all supported PFS groups. Groups `group_2` and `group_5` have been deprecated The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the @@ -52302,6 +53022,27 @@ class PfsEnum(str, Enum): GROUP_24 = 'group_24' GROUP_31 = 'group_31' GROUP_5 = 'group_5' + MULTIPLE = 'multiple' + + + class PfsGroupsEnum(str, Enum): + """ + pfs_groups. + """ + + DISABLED = 'disabled' + GROUP_14 = 'group_14' + GROUP_15 = 'group_15' + GROUP_16 = 'group_16' + GROUP_17 = 'group_17' + GROUP_18 = 'group_18' + GROUP_19 = 'group_19' + GROUP_20 = 'group_20' + GROUP_21 = 'group_21' + GROUP_22 = 'group_22' + GROUP_23 = 'group_23' + GROUP_24 = 'group_24' + GROUP_31 = 'group_31' class ResourceTypeEnum(str, Enum): @@ -52563,54 +53304,151 @@ class IPsecPolicyPatch: """ IPsecPolicyPatch. - :param str authentication_algorithm: (optional) The authentication algorithm. + :param str authentication_algorithm: (optional) Deprecated: The authentication + algorithm. + `authentication_algorithm` has been deprecated. Use `authentication_algorithms` + instead. + If specified, `authentication_algorithms` must not be specified. Must be `disabled` if and only if the `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `md5` and `sha1` algorithms have been deprecated. - :param str encryption_algorithm: (optional) The encryption algorithm. + Updating this property will also update the + `authentication_algorithms` field accordingly. + :param List[str] authentication_algorithms: (optional) The authentication + algorithms to use for IPsec negotiation. + If specified, `authentication_algorithm` must not be specified. + Must be `["disabled"]` when `encryption_algorithms` has only combined-mode + algorithms + (`aes128gcm16`, `aes192gcm16`, and `aes256gcm16`). + The `md5` and `sha1` algorithms have been deprecated. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the + `authentication_algorithm` field accordingly. + :param str encryption_algorithm: (optional) Deprecated: The encryption + algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` instead. + If specified, `encryption_algorithms` must not be specified. The `authentication_algorithm` must be `disabled` if and only if `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `triple_des` algorithm has been deprecated. + Updating this property will also update the + `encryption_algorithms` field accordingly. + :param List[str] encryption_algorithms: (optional) The encryption algorithms to + use for IPsec negotiation. + If specified, `encryption_algorithm` must not be specified. + If only combined-mode encryption algorithms (`aes128gcm16`, `aes192gcm16`, and + `aes256gcm16`) are to be used, then `authentication_algorithms` must be + `["disabled"]`. + The `triple_des` algorithm has been deprecated. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the `encryption_algorithm` field + accordingly. :param int key_lifetime: (optional) The key lifetime in seconds. - :param str name: (optional) The name for this IPsec policy. The name must not be - used by another IPsec policy in the region. - :param str pfs: (optional) The Perfect Forward Secrecy group. + :param str name: (optional) The name for this IPsec policy. The name is unique + across all IPsec policies in the region. + :param str pfs: (optional) Deprecated: The Perfect Forward Secrecy group. + `pfs` has been deprecated. Use `pfs_groups` instead. + If specified, `pfs_groups` must not be specified. + Groups `group_2` and `group_5` have been deprecated. + Updating this property will also update the + `pfs_groups` field accordingly. + :param List[str] pfs_groups: (optional) The Perfect Forward Secrecy groups to + use for IPsec negotiation. + If specified, `pfs_groups` must not be specified. Groups `group_2` and `group_5` have been deprecated. + The order of the Perfect Forward Secrecy groups in this array indicates their + priority for negotiation, with each Perfect Forward Secrecy group having + priority over the one after it. + Updating this property will also update the `pfs` field accordingly. """ def __init__( self, *, authentication_algorithm: Optional[str] = None, + authentication_algorithms: Optional[List[str]] = None, encryption_algorithm: Optional[str] = None, + encryption_algorithms: Optional[List[str]] = None, key_lifetime: Optional[int] = None, name: Optional[str] = None, pfs: Optional[str] = None, + pfs_groups: Optional[List[str]] = None, ) -> None: """ Initialize a IPsecPolicyPatch object. - :param str authentication_algorithm: (optional) The authentication - algorithm. + :param str authentication_algorithm: (optional) Deprecated: The + authentication algorithm. + `authentication_algorithm` has been deprecated. Use + `authentication_algorithms` instead. + If specified, `authentication_algorithms` must not be specified. Must be `disabled` if and only if the `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `md5` and `sha1` algorithms have been deprecated. - :param str encryption_algorithm: (optional) The encryption algorithm. + Updating this property will also update the + `authentication_algorithms` field accordingly. + :param List[str] authentication_algorithms: (optional) The authentication + algorithms to use for IPsec negotiation. + If specified, `authentication_algorithm` must not be specified. + Must be `["disabled"]` when `encryption_algorithms` has only combined-mode + algorithms + (`aes128gcm16`, `aes192gcm16`, and `aes256gcm16`). + The `md5` and `sha1` algorithms have been deprecated. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the + `authentication_algorithm` field accordingly. + :param str encryption_algorithm: (optional) Deprecated: The encryption + algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` + instead. + If specified, `encryption_algorithms` must not be specified. The `authentication_algorithm` must be `disabled` if and only if `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `triple_des` algorithm has been deprecated. + Updating this property will also update the + `encryption_algorithms` field accordingly. + :param List[str] encryption_algorithms: (optional) The encryption + algorithms to use for IPsec negotiation. + If specified, `encryption_algorithm` must not be specified. + If only combined-mode encryption algorithms (`aes128gcm16`, `aes192gcm16`, + and + `aes256gcm16`) are to be used, then `authentication_algorithms` must be + `["disabled"]`. + The `triple_des` algorithm has been deprecated. + The order of the algorithms in this array indicates their priority for + negotiation, with each algorithm having priority over the one after it. + Updating this property will also update the `encryption_algorithm` field + accordingly. :param int key_lifetime: (optional) The key lifetime in seconds. - :param str name: (optional) The name for this IPsec policy. The name must - not be used by another IPsec policy in the region. - :param str pfs: (optional) The Perfect Forward Secrecy group. + :param str name: (optional) The name for this IPsec policy. The name is + unique across all IPsec policies in the region. + :param str pfs: (optional) Deprecated: The Perfect Forward Secrecy group. + `pfs` has been deprecated. Use `pfs_groups` instead. + If specified, `pfs_groups` must not be specified. + Groups `group_2` and `group_5` have been deprecated. + Updating this property will also update the + `pfs_groups` field accordingly. + :param List[str] pfs_groups: (optional) The Perfect Forward Secrecy groups + to use for IPsec negotiation. + If specified, `pfs_groups` must not be specified. Groups `group_2` and `group_5` have been deprecated. + The order of the Perfect Forward Secrecy groups in this array indicates + their priority for negotiation, with each Perfect Forward Secrecy group + having priority over the one after it. + Updating this property will also update the `pfs` field accordingly. """ self.authentication_algorithm = authentication_algorithm + self.authentication_algorithms = authentication_algorithms self.encryption_algorithm = encryption_algorithm + self.encryption_algorithms = encryption_algorithms self.key_lifetime = key_lifetime self.name = name self.pfs = pfs + self.pfs_groups = pfs_groups @classmethod def from_dict(cls, _dict: Dict) -> 'IPsecPolicyPatch': @@ -52618,14 +53456,20 @@ def from_dict(cls, _dict: Dict) -> 'IPsecPolicyPatch': args = {} if (authentication_algorithm := _dict.get('authentication_algorithm')) is not None: args['authentication_algorithm'] = authentication_algorithm + if (authentication_algorithms := _dict.get('authentication_algorithms')) is not None: + args['authentication_algorithms'] = authentication_algorithms if (encryption_algorithm := _dict.get('encryption_algorithm')) is not None: args['encryption_algorithm'] = encryption_algorithm + if (encryption_algorithms := _dict.get('encryption_algorithms')) is not None: + args['encryption_algorithms'] = encryption_algorithms if (key_lifetime := _dict.get('key_lifetime')) is not None: args['key_lifetime'] = key_lifetime if (name := _dict.get('name')) is not None: args['name'] = name if (pfs := _dict.get('pfs')) is not None: args['pfs'] = pfs + if (pfs_groups := _dict.get('pfs_groups')) is not None: + args['pfs_groups'] = pfs_groups return cls(**args) @classmethod @@ -52638,14 +53482,20 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'authentication_algorithm') and self.authentication_algorithm is not None: _dict['authentication_algorithm'] = self.authentication_algorithm + if hasattr(self, 'authentication_algorithms') and self.authentication_algorithms is not None: + _dict['authentication_algorithms'] = self.authentication_algorithms if hasattr(self, 'encryption_algorithm') and self.encryption_algorithm is not None: _dict['encryption_algorithm'] = self.encryption_algorithm + if hasattr(self, 'encryption_algorithms') and self.encryption_algorithms is not None: + _dict['encryption_algorithms'] = self.encryption_algorithms if hasattr(self, 'key_lifetime') and self.key_lifetime is not None: _dict['key_lifetime'] = self.key_lifetime if hasattr(self, 'name') and self.name is not None: _dict['name'] = self.name if hasattr(self, 'pfs') and self.pfs is not None: _dict['pfs'] = self.pfs + if hasattr(self, 'pfs_groups') and self.pfs_groups is not None: + _dict['pfs_groups'] = self.pfs_groups return _dict def _to_dict(self): @@ -52669,9 +53519,25 @@ def __ne__(self, other: 'IPsecPolicyPatch') -> bool: class AuthenticationAlgorithmEnum(str, Enum): """ The authentication algorithm. + `authentication_algorithm` has been deprecated. Use `authentication_algorithms` + instead. + If specified, `authentication_algorithms` must not be specified. Must be `disabled` if and only if the `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `md5` and `sha1` algorithms have been deprecated. + Updating this property will also update the + `authentication_algorithms` field accordingly. + """ + + DISABLED = 'disabled' + SHA256 = 'sha256' + SHA384 = 'sha384' + SHA512 = 'sha512' + + + class AuthenticationAlgorithmsEnum(str, Enum): + """ + authentication_algorithms. """ DISABLED = 'disabled' @@ -52683,9 +53549,26 @@ class AuthenticationAlgorithmEnum(str, Enum): class EncryptionAlgorithmEnum(str, Enum): """ The encryption algorithm. + `encryption_algorithm` has been deprecated. Use `encryption_algorithms` instead. + If specified, `encryption_algorithms` must not be specified. The `authentication_algorithm` must be `disabled` if and only if `encryption_algorithm` is `aes128gcm16`, `aes192gcm16`, or `aes256gcm16` The `triple_des` algorithm has been deprecated. + Updating this property will also update the + `encryption_algorithms` field accordingly. + """ + + AES128 = 'aes128' + AES128GCM16 = 'aes128gcm16' + AES192 = 'aes192' + AES192GCM16 = 'aes192gcm16' + AES256 = 'aes256' + AES256GCM16 = 'aes256gcm16' + + + class EncryptionAlgorithmsEnum(str, Enum): + """ + encryption_algorithms. """ AES128 = 'aes128' @@ -52699,7 +53582,31 @@ class EncryptionAlgorithmEnum(str, Enum): class PfsEnum(str, Enum): """ The Perfect Forward Secrecy group. + `pfs` has been deprecated. Use `pfs_groups` instead. + If specified, `pfs_groups` must not be specified. Groups `group_2` and `group_5` have been deprecated. + Updating this property will also update the + `pfs_groups` field accordingly. + """ + + DISABLED = 'disabled' + GROUP_14 = 'group_14' + GROUP_15 = 'group_15' + GROUP_16 = 'group_16' + GROUP_17 = 'group_17' + GROUP_18 = 'group_18' + GROUP_19 = 'group_19' + GROUP_20 = 'group_20' + GROUP_21 = 'group_21' + GROUP_22 = 'group_22' + GROUP_23 = 'group_23' + GROUP_24 = 'group_24' + GROUP_31 = 'group_31' + + + class PfsGroupsEnum(str, Enum): + """ + pfs_groups. """ DISABLED = 'disabled' @@ -52876,17 +53783,19 @@ class Image: [deleted](https://cloud.ibm.com/apidocs/vpc#deleted-resources)). If absent, this image was not created from a volume. :param str status: The status of this image: - - available: image can be used to create resources - - deleting: image is being deleted, and can no longer be used to create + - `available`: image can be used to create resources + - `deleting`: image is being deleted, and can no longer be used to create resources - - deprecated: image is slated to be deleted, but can still be used to create + - `deprecated`: image is slated to be deleted, but can still be used to create resources - - failed: image was not created successfully, and cannot be used to create + - `failed`: image was not created successfully, and cannot be used to create resources - - obsolete: image is slated to be deleted, and can no longer be used to create + - `obsolete`: image is slated to be deleted, and can no longer be used to create resources - - pending: image is being imported, and cannot yet be used to create resources - - unusable: image cannot be used (see `status_reasons[]` for possible + - `partially_available`: image can be used to create resources in the + zones listed in the `zones` property. + - `pending`: image is being imported, and cannot yet be used to create resources + - `unusable`: image cannot be used (see `status_reasons[]` for possible remediation) The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the @@ -52906,6 +53815,14 @@ class Image: :param str visibility: The visibility of this image. - `private`: Visible only to this account - `public`: Visible to all accounts. + :param List[ZoneReference] zones: The zones in which this image is available for + use. + If the image has a status of `available` or `deprecated`, this will include all + zones in the region. + If the image has a status of `partially_available`, this will include one or + more zones in the region. + If the image has a status of `failed`, `obsolete`, `pending`, `unusable`, or + `deleting`, this will be empty. """ def __init__( @@ -52926,6 +53843,7 @@ def __init__( status_reasons: List['ImageStatusReason'], user_data_format: str, visibility: str, + zones: List['ZoneReference'], *, deprecation_at: Optional[datetime] = None, encryption_key: Optional['EncryptionKeyReference'] = None, @@ -52955,20 +53873,23 @@ def __init__( image. :param str resource_type: The resource type. :param str status: The status of this image: - - available: image can be used to create resources - - deleting: image is being deleted, and can no longer be used to create + - `available`: image can be used to create resources + - `deleting`: image is being deleted, and can no longer be used to create resources - - deprecated: image is slated to be deleted, but can still be used to + - `deprecated`: image is slated to be deleted, but can still be used to create resources - - failed: image was not created successfully, and cannot be used to create + - `failed`: image was not created successfully, and cannot be used to + create resources - - obsolete: image is slated to be deleted, and can no longer be used to + - `obsolete`: image is slated to be deleted, and can no longer be used to create resources - - pending: image is being imported, and cannot yet be used to create + - `partially_available`: image can be used to create resources in the + zones listed in the `zones` property. + - `pending`: image is being imported, and cannot yet be used to create resources - - unusable: image cannot be used (see `status_reasons[]` for possible + - `unusable`: image cannot be used (see `status_reasons[]` for possible remediation) The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the @@ -52988,6 +53909,14 @@ def __init__( :param str visibility: The visibility of this image. - `private`: Visible only to this account - `public`: Visible to all accounts. + :param List[ZoneReference] zones: The zones in which this image is + available for use. + If the image has a status of `available` or `deprecated`, this will include + all zones in the region. + If the image has a status of `partially_available`, this will include one + or more zones in the region. + If the image has a status of `failed`, `obsolete`, `pending`, `unusable`, + or `deleting`, this will be empty. :param datetime deprecation_at: (optional) The deprecation date and time (UTC) for this image. If absent, no deprecation date and time has been set. @@ -53033,6 +53962,7 @@ def __init__( self.status_reasons = status_reasons self.user_data_format = user_data_format self.visibility = visibility + self.zones = zones @classmethod def from_dict(cls, _dict: Dict) -> 'Image': @@ -53114,6 +54044,10 @@ def from_dict(cls, _dict: Dict) -> 'Image': args['visibility'] = visibility else: raise ValueError('Required property \'visibility\' not present in Image JSON') + if (zones := _dict.get('zones')) is not None: + args['zones'] = [ZoneReference.from_dict(v) for v in zones] + else: + raise ValueError('Required property \'zones\' not present in Image JSON') return cls(**args) @classmethod @@ -53198,6 +54132,14 @@ def to_dict(self) -> Dict: _dict['user_data_format'] = self.user_data_format if hasattr(self, 'visibility') and self.visibility is not None: _dict['visibility'] = self.visibility + if hasattr(self, 'zones') and self.zones is not None: + zones_list = [] + for v in self.zones: + if isinstance(v, dict): + zones_list.append(v) + else: + zones_list.append(v.to_dict()) + _dict['zones'] = zones_list return _dict def _to_dict(self): @@ -53238,17 +54180,20 @@ class ResourceTypeEnum(str, Enum): class StatusEnum(str, Enum): """ The status of this image: - - available: image can be used to create resources - - deleting: image is being deleted, and can no longer be used to create + - `available`: image can be used to create resources + - `deleting`: image is being deleted, and can no longer be used to create resources - - deprecated: image is slated to be deleted, but can still be used to create + - `deprecated`: image is slated to be deleted, but can still be used to create resources - - failed: image was not created successfully, and cannot be used to create + - `failed`: image was not created successfully, and cannot be used to create resources - - obsolete: image is slated to be deleted, and can no longer be used to create + - `obsolete`: image is slated to be deleted, and can no longer be used to create resources - - pending: image is being imported, and cannot yet be used to create resources - - unusable: image cannot be used (see `status_reasons[]` for possible remediation) + - `partially_available`: image can be used to create resources in the + zones listed in the `zones` property. + - `pending`: image is being imported, and cannot yet be used to create resources + - `unusable`: image cannot be used (see `status_reasons[]` for possible + remediation) The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. @@ -53259,6 +54204,7 @@ class StatusEnum(str, Enum): DEPRECATED = 'deprecated' FAILED = 'failed' OBSOLETE = 'obsolete' + PARTIALLY_AVAILABLE = 'partially_available' PENDING = 'pending' UNUSABLE = 'unusable' @@ -53315,7 +54261,11 @@ class ImageAllowedUse: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -53348,7 +54298,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -53431,7 +54387,11 @@ class ImageAllowedUsePatch: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -53468,7 +54428,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -53548,7 +54514,11 @@ class ImageAllowedUsePrototype: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint. + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -53587,7 +54557,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint. + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -55606,6 +56582,8 @@ class Instance: :param ResourceGroupReference resource_group: The resource group for this instance. :param str resource_type: The resource type. + :param List[InstanceSoftwareAttachmentReference] software_attachments: The + software attachments for this instance. :param bool startable: Indicates whether the state of the virtual server instance permits a start request. :param str status: The status of the virtual server instance. @@ -55614,6 +56592,8 @@ class Instance: future. :param List[InstanceStatusReason] status_reasons: The reasons for the current status (if any). + :param int threads_per_core: The threads per core for this virtual server + instance. :param int total_network_bandwidth: The amount of bandwidth (in megabits per second) allocated exclusively to instance network attachments or instance network interfaces. @@ -55659,9 +56639,11 @@ def __init__( reservation_affinity: 'InstanceReservationAffinity', resource_group: 'ResourceGroupReference', resource_type: str, + software_attachments: List['InstanceSoftwareAttachmentReference'], startable: bool, status: str, status_reasons: List['InstanceStatusReason'], + threads_per_core: int, total_network_bandwidth: int, total_volume_bandwidth: int, vcpu: 'InstanceVCPU', @@ -55761,6 +56743,8 @@ def __init__( :param ResourceGroupReference resource_group: The resource group for this instance. :param str resource_type: The resource type. + :param List[InstanceSoftwareAttachmentReference] software_attachments: The + software attachments for this instance. :param bool startable: Indicates whether the state of the virtual server instance permits a start request. :param str status: The status of the virtual server instance. @@ -55769,6 +56753,8 @@ def __init__( future. :param List[InstanceStatusReason] status_reasons: The reasons for the current status (if any). + :param int threads_per_core: The threads per core for this virtual server + instance. :param int total_network_bandwidth: The amount of bandwidth (in megabits per second) allocated exclusively to instance network attachments or instance network interfaces. @@ -55846,9 +56832,11 @@ def __init__( self.reservation_affinity = reservation_affinity self.resource_group = resource_group self.resource_type = resource_type + self.software_attachments = software_attachments self.startable = startable self.status = status self.status_reasons = status_reasons + self.threads_per_core = threads_per_core self.total_network_bandwidth = total_network_bandwidth self.total_volume_bandwidth = total_volume_bandwidth self.vcpu = vcpu @@ -55985,6 +56973,10 @@ def from_dict(cls, _dict: Dict) -> 'Instance': args['resource_type'] = resource_type else: raise ValueError('Required property \'resource_type\' not present in Instance JSON') + if (software_attachments := _dict.get('software_attachments')) is not None: + args['software_attachments'] = [InstanceSoftwareAttachmentReference.from_dict(v) for v in software_attachments] + else: + raise ValueError('Required property \'software_attachments\' not present in Instance JSON') if (startable := _dict.get('startable')) is not None: args['startable'] = startable else: @@ -55997,6 +56989,10 @@ def from_dict(cls, _dict: Dict) -> 'Instance': args['status_reasons'] = [InstanceStatusReason.from_dict(v) for v in status_reasons] else: raise ValueError('Required property \'status_reasons\' not present in Instance JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core + else: + raise ValueError('Required property \'threads_per_core\' not present in Instance JSON') if (total_network_bandwidth := _dict.get('total_network_bandwidth')) is not None: args['total_network_bandwidth'] = total_network_bandwidth else: @@ -56194,6 +57190,14 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group.to_dict() if hasattr(self, 'resource_type') and self.resource_type is not None: _dict['resource_type'] = self.resource_type + if hasattr(self, 'software_attachments') and self.software_attachments is not None: + software_attachments_list = [] + for v in self.software_attachments: + if isinstance(v, dict): + software_attachments_list.append(v) + else: + software_attachments_list.append(v.to_dict()) + _dict['software_attachments'] = software_attachments_list if hasattr(self, 'startable') and self.startable is not None: _dict['startable'] = self.startable if hasattr(self, 'status') and self.status is not None: @@ -56206,6 +57210,8 @@ def to_dict(self) -> Dict: else: status_reasons_list.append(v.to_dict()) _dict['status_reasons'] = status_reasons_list + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_network_bandwidth') and self.total_network_bandwidth is not None: _dict['total_network_bandwidth'] = self.total_network_bandwidth if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: @@ -62136,6 +63142,8 @@ class InstanceLifecycleReason: InstanceLifecycleReason. :param str code: A reason code for this lifecycle state: + - `failed_licensing`: Allocation of one or more software license(s) has failed. + Delete - `failed_registration`: The instance's registration to Resource Controller has failed. Delete the instance and provision it again. If the problem persists, contact IBM Support. @@ -62163,6 +63171,8 @@ def __init__( Initialize a InstanceLifecycleReason object. :param str code: A reason code for this lifecycle state: + - `failed_licensing`: Allocation of one or more software license(s) has + failed. Delete - `failed_registration`: The instance's registration to Resource Controller has failed. Delete the instance and provision it again. If the problem @@ -62239,6 +63249,8 @@ def __ne__(self, other: 'InstanceLifecycleReason') -> bool: class CodeEnum(str, Enum): """ A reason code for this lifecycle state: + - `failed_licensing`: Allocation of one or more software license(s) has failed. + Delete - `failed_registration`: The instance's registration to Resource Controller has failed. Delete the instance and provision it again. If the problem persists, contact IBM Support. @@ -62252,6 +63264,7 @@ class CodeEnum(str, Enum): future. """ + FAILED_LICENSING = 'failed_licensing' FAILED_REGISTRATION = 'failed_registration' INTERNAL_ERROR = 'internal_error' PENDING_REGISTRATION = 'pending_registration' @@ -63203,8 +64216,11 @@ class InstancePatch: must not be used by another virtual server instance in the region. Changing the name will not affect the system hostname. :param InstancePlacementTargetPatch placement_target: (optional) The placement - restrictions to use for the virtual server instance. - If specified, `reservation_affinity.policy` must be `disabled`. If specifying a + restrictions to use for the virtual server instance. For the + placement restrictions to be changed, the instance `status` must be `stopping` + or + `stopped`. + If set, `reservation_affinity.policy` must be `disabled`. If specifying a dedicated host or dedicated host group, the `vcpu.percentage` must be `100` and the instance must @@ -63226,6 +64242,11 @@ class InstancePatch: - Have the `volume_bandwidth_qos_mode` listed in its `volume_bandwidth_qos_modes`. :param InstanceReservationAffinityPatch reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + For this property to be changed, the virtual server instance `status` must be + `stopping` or `stopped`. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -63250,6 +64271,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPatch'] = None, profile: Optional['InstancePatchProfile'] = None, reservation_affinity: Optional['InstanceReservationAffinityPatch'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, vcpu: Optional['InstanceVCPUPatch'] = None, volume_bandwidth_qos_mode: Optional[str] = None, @@ -63275,9 +64297,12 @@ def __init__( name must not be used by another virtual server instance in the region. Changing the name will not affect the system hostname. :param InstancePlacementTargetPatch placement_target: (optional) The - placement restrictions to use for the virtual server instance. - If specified, `reservation_affinity.policy` must be `disabled`. If - specifying a dedicated + placement restrictions to use for the virtual server instance. For the + placement restrictions to be changed, the instance `status` must be + `stopping` or + `stopped`. + If set, `reservation_affinity.policy` must be `disabled`. If specifying a + dedicated host or dedicated host group, the `vcpu.percentage` must be `100` and the instance must have two or more vCPUs. @@ -63301,6 +64326,12 @@ def __init__( - Have the `volume_bandwidth_qos_mode` listed in its `volume_bandwidth_qos_modes`. :param InstanceReservationAffinityPatch reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + For this property to be changed, the virtual server instance `status` must + be + `stopping` or `stopped`. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -63322,6 +64353,7 @@ def __init__( self.placement_target = placement_target self.profile = profile self.reservation_affinity = reservation_affinity + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.vcpu = vcpu self.volume_bandwidth_qos_mode = volume_bandwidth_qos_mode @@ -63348,6 +64380,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePatch': args['profile'] = profile if (reservation_affinity := _dict.get('reservation_affinity')) is not None: args['reservation_affinity'] = InstanceReservationAffinityPatch.from_dict(reservation_affinity) + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (vcpu := _dict.get('vcpu')) is not None: @@ -63400,6 +64434,8 @@ def to_dict(self) -> Dict: _dict['reservation_affinity'] = self.reservation_affinity else: _dict['reservation_affinity'] = self.reservation_affinity.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'vcpu') and self.vcpu is not None: @@ -63506,10 +64542,12 @@ def __init__( class InstancePlacementTargetPatch: """ - The placement restrictions to use for the virtual server instance. - If specified, `reservation_affinity.policy` must be `disabled`. If specifying a - dedicated host or dedicated host group, the `vcpu.percentage` must be `100` and the - instance must have two or more vCPUs. + The placement restrictions to use for the virtual server instance. For the placement + restrictions to be changed, the instance `status` must be `stopping` or + `stopped`. + If set, `reservation_affinity.policy` must be `disabled`. If specifying a dedicated + host or dedicated host group, the `vcpu.percentage` must be `100` and the instance + must have two or more vCPUs. """ @@ -63593,6 +64631,9 @@ class InstanceProfile: future. :param List[ClusterNetworkProfileReference] supported_cluster_network_profiles: The cluster network profiles that support this instance profile. + :param InstanceProfileSupportedVCPUCountEnum supported_vcpu_count: The supported + values for vcpu count for an instance with this profile. + :param InstanceProfileThreadsPerCoreEnum threads_per_core: :param InstanceProfileVolumeBandwidth total_volume_bandwidth: :param InstanceProfileVCPUArchitecture vcpu_architecture: :param InstanceProfileVCPUBurstLimit vcpu_burst_limit: @@ -63601,6 +64642,8 @@ class InstanceProfile: :param InstanceProfileVCPUPercentage vcpu_percentage: The permitted values for VCPU percentage for an instance with this profile. :param InstanceProfileVolumeBandwidthQoSModes volume_bandwidth_qos_modes: + :param List[ZoneReference] zones: The zones in this region that support this + instance profile. """ def __init__( @@ -63624,6 +64667,8 @@ def __init__( secure_boot_modes: 'InstanceProfileSupportedSecureBootModes', status: str, supported_cluster_network_profiles: List['ClusterNetworkProfileReference'], + supported_vcpu_count: 'InstanceProfileSupportedVCPUCountEnum', + threads_per_core: 'InstanceProfileThreadsPerCoreEnum', total_volume_bandwidth: 'InstanceProfileVolumeBandwidth', vcpu_architecture: 'InstanceProfileVCPUArchitecture', vcpu_burst_limit: 'InstanceProfileVCPUBurstLimit', @@ -63631,6 +64676,7 @@ def __init__( vcpu_manufacturer: 'InstanceProfileVCPUManufacturer', vcpu_percentage: 'InstanceProfileVCPUPercentage', volume_bandwidth_qos_modes: 'InstanceProfileVolumeBandwidthQoSModes', + zones: List['ZoneReference'], *, gpu_count: Optional['InstanceProfileGPU'] = None, gpu_manufacturer: Optional['InstanceProfileGPUManufacturer'] = None, @@ -63678,6 +64724,9 @@ def __init__( :param List[ClusterNetworkProfileReference] supported_cluster_network_profiles: The cluster network profiles that support this instance profile. + :param InstanceProfileSupportedVCPUCountEnum supported_vcpu_count: The + supported values for vcpu count for an instance with this profile. + :param InstanceProfileThreadsPerCoreEnum threads_per_core: :param InstanceProfileVolumeBandwidth total_volume_bandwidth: :param InstanceProfileVCPUArchitecture vcpu_architecture: :param InstanceProfileVCPUBurstLimit vcpu_burst_limit: @@ -63686,6 +64735,8 @@ def __init__( :param InstanceProfileVCPUPercentage vcpu_percentage: The permitted values for VCPU percentage for an instance with this profile. :param InstanceProfileVolumeBandwidthQoSModes volume_bandwidth_qos_modes: + :param List[ZoneReference] zones: The zones in this region that support + this instance profile. :param InstanceProfileGPU gpu_count: (optional) :param InstanceProfileGPUManufacturer gpu_manufacturer: (optional) :param InstanceProfileGPUMemory gpu_memory: (optional) @@ -63716,6 +64767,8 @@ def __init__( self.secure_boot_modes = secure_boot_modes self.status = status self.supported_cluster_network_profiles = supported_cluster_network_profiles + self.supported_vcpu_count = supported_vcpu_count + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.vcpu_architecture = vcpu_architecture self.vcpu_burst_limit = vcpu_burst_limit @@ -63723,6 +64776,7 @@ def __init__( self.vcpu_manufacturer = vcpu_manufacturer self.vcpu_percentage = vcpu_percentage self.volume_bandwidth_qos_modes = volume_bandwidth_qos_modes + self.zones = zones @classmethod def from_dict(cls, _dict: Dict) -> 'InstanceProfile': @@ -63814,6 +64868,14 @@ def from_dict(cls, _dict: Dict) -> 'InstanceProfile': args['supported_cluster_network_profiles'] = [ClusterNetworkProfileReference.from_dict(v) for v in supported_cluster_network_profiles] else: raise ValueError('Required property \'supported_cluster_network_profiles\' not present in InstanceProfile JSON') + if (supported_vcpu_count := _dict.get('supported_vcpu_count')) is not None: + args['supported_vcpu_count'] = InstanceProfileSupportedVCPUCountEnum.from_dict(supported_vcpu_count) + else: + raise ValueError('Required property \'supported_vcpu_count\' not present in InstanceProfile JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = InstanceProfileThreadsPerCoreEnum.from_dict(threads_per_core) + else: + raise ValueError('Required property \'threads_per_core\' not present in InstanceProfile JSON') if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth else: @@ -63842,6 +64904,10 @@ def from_dict(cls, _dict: Dict) -> 'InstanceProfile': args['volume_bandwidth_qos_modes'] = volume_bandwidth_qos_modes else: raise ValueError('Required property \'volume_bandwidth_qos_modes\' not present in InstanceProfile JSON') + if (zones := _dict.get('zones')) is not None: + args['zones'] = [ZoneReference.from_dict(v) for v in zones] + else: + raise ValueError('Required property \'zones\' not present in InstanceProfile JSON') return cls(**args) @classmethod @@ -63963,6 +65029,16 @@ def to_dict(self) -> Dict: else: supported_cluster_network_profiles_list.append(v.to_dict()) _dict['supported_cluster_network_profiles'] = supported_cluster_network_profiles_list + if hasattr(self, 'supported_vcpu_count') and self.supported_vcpu_count is not None: + if isinstance(self.supported_vcpu_count, dict): + _dict['supported_vcpu_count'] = self.supported_vcpu_count + else: + _dict['supported_vcpu_count'] = self.supported_vcpu_count.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + if isinstance(self.threads_per_core, dict): + _dict['threads_per_core'] = self.threads_per_core + else: + _dict['threads_per_core'] = self.threads_per_core.to_dict() if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: if isinstance(self.total_volume_bandwidth, dict): _dict['total_volume_bandwidth'] = self.total_volume_bandwidth @@ -63998,6 +65074,14 @@ def to_dict(self) -> Dict: _dict['volume_bandwidth_qos_modes'] = self.volume_bandwidth_qos_modes else: _dict['volume_bandwidth_qos_modes'] = self.volume_bandwidth_qos_modes.to_dict() + if hasattr(self, 'zones') and self.zones is not None: + zones_list = [] + for v in self.zones: + if isinstance(v, dict): + zones_list.append(v) + else: + zones_list.append(v.to_dict()) + _dict['zones'] = zones_list return _dict def _to_dict(self): @@ -64108,29 +65192,67 @@ class InstanceProfileCollection: """ InstanceProfileCollection. - :param List[InstanceProfile] profiles: The virtual server instance profiles. + :param PageLink first: A link to the first page of resources. + :param int limit: The maximum number of resources that can be returned by the + request. + :param PageLink next: (optional) A link to the next page of resources. This + property is present for all pages + except the last page. + :param List[InstanceProfile] profiles: A page of virtual server instance + profiles. + :param int total_count: The total number of resources across all pages. """ def __init__( self, + first: 'PageLink', + limit: int, profiles: List['InstanceProfile'], + total_count: int, + *, + next: Optional['PageLink'] = None, ) -> None: """ Initialize a InstanceProfileCollection object. - :param List[InstanceProfile] profiles: The virtual server instance + :param PageLink first: A link to the first page of resources. + :param int limit: The maximum number of resources that can be returned by + the request. + :param List[InstanceProfile] profiles: A page of virtual server instance profiles. + :param int total_count: The total number of resources across all pages. + :param PageLink next: (optional) A link to the next page of resources. This + property is present for all pages + except the last page. """ + self.first = first + self.limit = limit + self.next = next self.profiles = profiles + self.total_count = total_count @classmethod def from_dict(cls, _dict: Dict) -> 'InstanceProfileCollection': """Initialize a InstanceProfileCollection object from a json dictionary.""" args = {} + if (first := _dict.get('first')) is not None: + args['first'] = PageLink.from_dict(first) + else: + raise ValueError('Required property \'first\' not present in InstanceProfileCollection JSON') + if (limit := _dict.get('limit')) is not None: + args['limit'] = limit + else: + raise ValueError('Required property \'limit\' not present in InstanceProfileCollection JSON') + if (next := _dict.get('next')) is not None: + args['next'] = PageLink.from_dict(next) if (profiles := _dict.get('profiles')) is not None: args['profiles'] = [InstanceProfile.from_dict(v) for v in profiles] else: raise ValueError('Required property \'profiles\' not present in InstanceProfileCollection JSON') + if (total_count := _dict.get('total_count')) is not None: + args['total_count'] = total_count + else: + raise ValueError('Required property \'total_count\' not present in InstanceProfileCollection JSON') return cls(**args) @classmethod @@ -64141,6 +65263,18 @@ def _from_dict(cls, _dict): def to_dict(self) -> Dict: """Return a json dictionary representing this model.""" _dict = {} + if hasattr(self, 'first') and self.first is not None: + if isinstance(self.first, dict): + _dict['first'] = self.first + else: + _dict['first'] = self.first.to_dict() + if hasattr(self, 'limit') and self.limit is not None: + _dict['limit'] = self.limit + if hasattr(self, 'next') and self.next is not None: + if isinstance(self.next, dict): + _dict['next'] = self.next + else: + _dict['next'] = self.next.to_dict() if hasattr(self, 'profiles') and self.profiles is not None: profiles_list = [] for v in self.profiles: @@ -64149,6 +65283,8 @@ def to_dict(self) -> Dict: else: profiles_list.append(v.to_dict()) _dict['profiles'] = profiles_list + if hasattr(self, 'total_count') and self.total_count is not None: + _dict['total_count'] = self.total_count return _dict def _to_dict(self): @@ -65227,6 +66363,174 @@ class TypeEnum(str, Enum): +class InstanceProfileSupportedVCPUCountEnum: + """ + The supported values for vcpu count for an instance with this profile. + + :param str type: The type for this profile field. + :param List[int] values: The permitted values for this profile field. + """ + + def __init__( + self, + type: str, + values: List[int], + ) -> None: + """ + Initialize a InstanceProfileSupportedVCPUCountEnum object. + + :param str type: The type for this profile field. + :param List[int] values: The permitted values for this profile field. + """ + self.type = type + self.values = values + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceProfileSupportedVCPUCountEnum': + """Initialize a InstanceProfileSupportedVCPUCountEnum object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in InstanceProfileSupportedVCPUCountEnum JSON') + if (values := _dict.get('values')) is not None: + args['values'] = values + else: + raise ValueError('Required property \'values\' not present in InstanceProfileSupportedVCPUCountEnum JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceProfileSupportedVCPUCountEnum object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + if hasattr(self, 'values') and self.values is not None: + _dict['values'] = self.values + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceProfileSupportedVCPUCountEnum object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceProfileSupportedVCPUCountEnum') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceProfileSupportedVCPUCountEnum') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + ENUM = 'enum' + + + +class InstanceProfileThreadsPerCoreEnum: + """ + InstanceProfileThreadsPerCoreEnum. + + :param int default: The default threads per core value for an instance with this + profile. + :param str type: The type for this profile field. + :param List[int] values: The permitted threads per core values for an instance + with this profile. + """ + + def __init__( + self, + default: int, + type: str, + values: List[int], + ) -> None: + """ + Initialize a InstanceProfileThreadsPerCoreEnum object. + + :param int default: The default threads per core value for an instance with + this profile. + :param str type: The type for this profile field. + :param List[int] values: The permitted threads per core values for an + instance with this profile. + """ + self.default = default + self.type = type + self.values = values + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceProfileThreadsPerCoreEnum': + """Initialize a InstanceProfileThreadsPerCoreEnum object from a json dictionary.""" + args = {} + if (default := _dict.get('default')) is not None: + args['default'] = default + else: + raise ValueError('Required property \'default\' not present in InstanceProfileThreadsPerCoreEnum JSON') + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in InstanceProfileThreadsPerCoreEnum JSON') + if (values := _dict.get('values')) is not None: + args['values'] = values + else: + raise ValueError('Required property \'values\' not present in InstanceProfileThreadsPerCoreEnum JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceProfileThreadsPerCoreEnum object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'default') and self.default is not None: + _dict['default'] = self.default + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + if hasattr(self, 'values') and self.values is not None: + _dict['values'] = self.values + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceProfileThreadsPerCoreEnum object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceProfileThreadsPerCoreEnum') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceProfileThreadsPerCoreEnum') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + ENUM = 'enum' + + + class InstanceProfileVCPU: """ InstanceProfileVCPU. @@ -65562,6 +66866,10 @@ class InstancePrototype: use. If unspecified, the account's [default resource group](https://cloud.ibm.com/apidocs/resource-manager#introduction) will be used. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -65599,6 +66907,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -65678,6 +66987,10 @@ def __init__( to use. If unspecified, the account's [default resource group](https://cloud.ibm.com/apidocs/resource-manager#introduction) will be used. + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -66195,6 +67508,936 @@ class PolicyEnum(str, Enum): +class InstanceSoftwareAttachment: + """ + InstanceSoftwareAttachment. + + :param InstanceSoftwareAttachmentCatalogOffering catalog_offering: (optional) + The [catalog](https://cloud.ibm.com/docs/account?topic=account-restrict-by-user) + offering for this instance software attachment. May be absent if + `software_attachment.lifecycle_state` is not `stable`. + :param datetime created_at: The date and time that the instance software + attachment was created. + :param InstanceSoftwareAttachmentEntitlement entitlement: (optional) The + entitlement for the licensed software for this instance software attachment. + :param str href: The URL for this instance software attachment. + :param str id: The unique identifier for this instance software attachment. + :param List[InstanceSoftwareAttachmentLifecycleReason] lifecycle_reasons: The + lifecycle reasons for this instance software attachment (if any). + :param str lifecycle_state: The lifecycle state of the instance software + attachment. + :param str name: The name for this instance software attachment. The name is + unique across all instance software attachments for the instance. + :param InstanceSoftwareAttachmentOfferingInstance offering_instance: (optional) + :param str resource_type: The resource type. + """ + + def __init__( + self, + created_at: datetime, + href: str, + id: str, + lifecycle_reasons: List['InstanceSoftwareAttachmentLifecycleReason'], + lifecycle_state: str, + name: str, + resource_type: str, + *, + catalog_offering: Optional['InstanceSoftwareAttachmentCatalogOffering'] = None, + entitlement: Optional['InstanceSoftwareAttachmentEntitlement'] = None, + offering_instance: Optional['InstanceSoftwareAttachmentOfferingInstance'] = None, + ) -> None: + """ + Initialize a InstanceSoftwareAttachment object. + + :param datetime created_at: The date and time that the instance software + attachment was created. + :param str href: The URL for this instance software attachment. + :param str id: The unique identifier for this instance software attachment. + :param List[InstanceSoftwareAttachmentLifecycleReason] lifecycle_reasons: + The lifecycle reasons for this instance software attachment (if any). + :param str lifecycle_state: The lifecycle state of the instance software + attachment. + :param str name: The name for this instance software attachment. The name + is unique across all instance software attachments for the instance. + :param str resource_type: The resource type. + :param InstanceSoftwareAttachmentCatalogOffering catalog_offering: + (optional) The + [catalog](https://cloud.ibm.com/docs/account?topic=account-restrict-by-user) + offering for this instance software attachment. May be absent if + `software_attachment.lifecycle_state` is not `stable`. + :param InstanceSoftwareAttachmentEntitlement entitlement: (optional) The + entitlement for the licensed software for this instance software + attachment. + :param InstanceSoftwareAttachmentOfferingInstance offering_instance: + (optional) + """ + self.catalog_offering = catalog_offering + self.created_at = created_at + self.entitlement = entitlement + self.href = href + self.id = id + self.lifecycle_reasons = lifecycle_reasons + self.lifecycle_state = lifecycle_state + self.name = name + self.offering_instance = offering_instance + self.resource_type = resource_type + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachment': + """Initialize a InstanceSoftwareAttachment object from a json dictionary.""" + args = {} + if (catalog_offering := _dict.get('catalog_offering')) is not None: + args['catalog_offering'] = InstanceSoftwareAttachmentCatalogOffering.from_dict(catalog_offering) + if (created_at := _dict.get('created_at')) is not None: + args['created_at'] = string_to_datetime(created_at) + else: + raise ValueError('Required property \'created_at\' not present in InstanceSoftwareAttachment JSON') + if (entitlement := _dict.get('entitlement')) is not None: + args['entitlement'] = InstanceSoftwareAttachmentEntitlement.from_dict(entitlement) + if (href := _dict.get('href')) is not None: + args['href'] = href + else: + raise ValueError('Required property \'href\' not present in InstanceSoftwareAttachment JSON') + if (id := _dict.get('id')) is not None: + args['id'] = id + else: + raise ValueError('Required property \'id\' not present in InstanceSoftwareAttachment JSON') + if (lifecycle_reasons := _dict.get('lifecycle_reasons')) is not None: + args['lifecycle_reasons'] = [InstanceSoftwareAttachmentLifecycleReason.from_dict(v) for v in lifecycle_reasons] + else: + raise ValueError('Required property \'lifecycle_reasons\' not present in InstanceSoftwareAttachment JSON') + if (lifecycle_state := _dict.get('lifecycle_state')) is not None: + args['lifecycle_state'] = lifecycle_state + else: + raise ValueError('Required property \'lifecycle_state\' not present in InstanceSoftwareAttachment JSON') + if (name := _dict.get('name')) is not None: + args['name'] = name + else: + raise ValueError('Required property \'name\' not present in InstanceSoftwareAttachment JSON') + if (offering_instance := _dict.get('offering_instance')) is not None: + args['offering_instance'] = InstanceSoftwareAttachmentOfferingInstance.from_dict(offering_instance) + if (resource_type := _dict.get('resource_type')) is not None: + args['resource_type'] = resource_type + else: + raise ValueError('Required property \'resource_type\' not present in InstanceSoftwareAttachment JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachment object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'catalog_offering') and self.catalog_offering is not None: + if isinstance(self.catalog_offering, dict): + _dict['catalog_offering'] = self.catalog_offering + else: + _dict['catalog_offering'] = self.catalog_offering.to_dict() + if hasattr(self, 'created_at') and self.created_at is not None: + _dict['created_at'] = datetime_to_string(self.created_at) + if hasattr(self, 'entitlement') and self.entitlement is not None: + if isinstance(self.entitlement, dict): + _dict['entitlement'] = self.entitlement + else: + _dict['entitlement'] = self.entitlement.to_dict() + if hasattr(self, 'href') and self.href is not None: + _dict['href'] = self.href + if hasattr(self, 'id') and self.id is not None: + _dict['id'] = self.id + if hasattr(self, 'lifecycle_reasons') and self.lifecycle_reasons is not None: + lifecycle_reasons_list = [] + for v in self.lifecycle_reasons: + if isinstance(v, dict): + lifecycle_reasons_list.append(v) + else: + lifecycle_reasons_list.append(v.to_dict()) + _dict['lifecycle_reasons'] = lifecycle_reasons_list + if hasattr(self, 'lifecycle_state') and self.lifecycle_state is not None: + _dict['lifecycle_state'] = self.lifecycle_state + if hasattr(self, 'name') and self.name is not None: + _dict['name'] = self.name + if hasattr(self, 'offering_instance') and self.offering_instance is not None: + if isinstance(self.offering_instance, dict): + _dict['offering_instance'] = self.offering_instance + else: + _dict['offering_instance'] = self.offering_instance.to_dict() + if hasattr(self, 'resource_type') and self.resource_type is not None: + _dict['resource_type'] = self.resource_type + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachment object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachment') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachment') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LifecycleStateEnum(str, Enum): + """ + The lifecycle state of the instance software attachment. + """ + + DELETING = 'deleting' + FAILED = 'failed' + PENDING = 'pending' + STABLE = 'stable' + SUSPENDED = 'suspended' + UPDATING = 'updating' + WAITING = 'waiting' + + + class ResourceTypeEnum(str, Enum): + """ + The resource type. + """ + + INSTANCE_SOFTWARE_ATTACHMENT = 'instance_software_attachment' + + + +class InstanceSoftwareAttachmentCatalogOffering: + """ + The [catalog](https://cloud.ibm.com/docs/account?topic=account-restrict-by-user) + offering for this instance software attachment. May be absent if + `software_attachment.lifecycle_state` is not `stable`. + + :param CatalogOfferingVersionPlanReference plan: (optional) The billing plan for + the catalog offering version associated with this instance software + attachment. + If absent, no billing plan is associated with the catalog offering version + (free). + :param CatalogOfferingVersionReference version: The catalog offering version + associated with this instance software attachment. + """ + + def __init__( + self, + version: 'CatalogOfferingVersionReference', + *, + plan: Optional['CatalogOfferingVersionPlanReference'] = None, + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentCatalogOffering object. + + :param CatalogOfferingVersionReference version: The catalog offering + version associated with this instance software attachment. + :param CatalogOfferingVersionPlanReference plan: (optional) The billing + plan for the catalog offering version associated with this instance + software + attachment. + If absent, no billing plan is associated with the catalog offering version + (free). + """ + self.plan = plan + self.version = version + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentCatalogOffering': + """Initialize a InstanceSoftwareAttachmentCatalogOffering object from a json dictionary.""" + args = {} + if (plan := _dict.get('plan')) is not None: + args['plan'] = CatalogOfferingVersionPlanReference.from_dict(plan) + if (version := _dict.get('version')) is not None: + args['version'] = CatalogOfferingVersionReference.from_dict(version) + else: + raise ValueError('Required property \'version\' not present in InstanceSoftwareAttachmentCatalogOffering JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentCatalogOffering object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'plan') and self.plan is not None: + if isinstance(self.plan, dict): + _dict['plan'] = self.plan + else: + _dict['plan'] = self.plan.to_dict() + if hasattr(self, 'version') and self.version is not None: + if isinstance(self.version, dict): + _dict['version'] = self.version + else: + _dict['version'] = self.version.to_dict() + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentCatalogOffering object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentCatalogOffering') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentCatalogOffering') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentCollection: + """ + InstanceSoftwareAttachmentCollection. + + :param List[InstanceSoftwareAttachment] software_attachments: The software + attachments for the instance. + """ + + def __init__( + self, + software_attachments: List['InstanceSoftwareAttachment'], + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentCollection object. + + :param List[InstanceSoftwareAttachment] software_attachments: The software + attachments for the instance. + """ + self.software_attachments = software_attachments + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentCollection': + """Initialize a InstanceSoftwareAttachmentCollection object from a json dictionary.""" + args = {} + if (software_attachments := _dict.get('software_attachments')) is not None: + args['software_attachments'] = [InstanceSoftwareAttachment.from_dict(v) for v in software_attachments] + else: + raise ValueError('Required property \'software_attachments\' not present in InstanceSoftwareAttachmentCollection JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentCollection object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'software_attachments') and self.software_attachments is not None: + software_attachments_list = [] + for v in self.software_attachments: + if isinstance(v, dict): + software_attachments_list.append(v) + else: + software_attachments_list.append(v.to_dict()) + _dict['software_attachments'] = software_attachments_list + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentCollection object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentCollection') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentCollection') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentEntitlement: + """ + The entitlement for the licensed software for this instance software attachment. + + :param List[InstanceSoftwareAttachmentEntitlementLicensedSoftware] + licensed_software: The licensed software for this instance software attachment + entitlement. + """ + + def __init__( + self, + licensed_software: List['InstanceSoftwareAttachmentEntitlementLicensedSoftware'], + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentEntitlement object. + + :param List[InstanceSoftwareAttachmentEntitlementLicensedSoftware] + licensed_software: The licensed software for this instance software + attachment entitlement. + """ + self.licensed_software = licensed_software + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentEntitlement': + """Initialize a InstanceSoftwareAttachmentEntitlement object from a json dictionary.""" + args = {} + if (licensed_software := _dict.get('licensed_software')) is not None: + args['licensed_software'] = [InstanceSoftwareAttachmentEntitlementLicensedSoftware.from_dict(v) for v in licensed_software] + else: + raise ValueError('Required property \'licensed_software\' not present in InstanceSoftwareAttachmentEntitlement JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentEntitlement object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'licensed_software') and self.licensed_software is not None: + licensed_software_list = [] + for v in self.licensed_software: + if isinstance(v, dict): + licensed_software_list.append(v) + else: + licensed_software_list.append(v.to_dict()) + _dict['licensed_software'] = licensed_software_list + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentEntitlement object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentEntitlement') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentEntitlement') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentEntitlementLicensedSoftware: + """ + The licensed software for the instance software attachment's entitlement. + + :param str sku: The SKU for this licensed software. + :param InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor vendor: + """ + + def __init__( + self, + sku: str, + vendor: 'InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor', + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentEntitlementLicensedSoftware object. + + :param str sku: The SKU for this licensed software. + :param InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor vendor: + """ + self.sku = sku + self.vendor = vendor + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentEntitlementLicensedSoftware': + """Initialize a InstanceSoftwareAttachmentEntitlementLicensedSoftware object from a json dictionary.""" + args = {} + if (sku := _dict.get('sku')) is not None: + args['sku'] = sku + else: + raise ValueError('Required property \'sku\' not present in InstanceSoftwareAttachmentEntitlementLicensedSoftware JSON') + if (vendor := _dict.get('vendor')) is not None: + args['vendor'] = InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor.from_dict(vendor) + else: + raise ValueError('Required property \'vendor\' not present in InstanceSoftwareAttachmentEntitlementLicensedSoftware JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentEntitlementLicensedSoftware object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'sku') and self.sku is not None: + _dict['sku'] = self.sku + if hasattr(self, 'vendor') and self.vendor is not None: + if isinstance(self.vendor, dict): + _dict['vendor'] = self.vendor + else: + _dict['vendor'] = self.vendor.to_dict() + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentEntitlementLicensedSoftware object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentEntitlementLicensedSoftware') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentEntitlementLicensedSoftware') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor: + """ + InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor. + + :param str name: The name of the vendor providing this licensed software. + """ + + def __init__( + self, + name: str, + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor object. + + :param str name: The name of the vendor providing this licensed software. + """ + self.name = name + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor': + """Initialize a InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor object from a json dictionary.""" + args = {} + if (name := _dict.get('name')) is not None: + args['name'] = name + else: + raise ValueError('Required property \'name\' not present in InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'name') and self.name is not None: + _dict['name'] = self.name + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentLifecycleReason: + """ + InstanceSoftwareAttachmentLifecycleReason. + + :param str code: A reason code for this lifecycle state: + - `failed_licensing`: Allocation of one or more software license(s) has failed. + Delete + the instance and provision it again. If the problem persists, contact IBM + Support. + - `failed_registration`: The software instance's registration to Resource + Controller has + failed. Delete the instance and provision it again. If the problem persists, + contact IBM + Support. + - `internal_error`: Internal error (contact IBM support) + - `pending_registration`: The software instance's registration to Resource + Controller, + and the creation of any required software license(s), is being processed. + The enumerated values for this property may + [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the + future. + :param str message: An explanation of the reason for this lifecycle state. + :param str more_info: (optional) A link to documentation about the reason for + this lifecycle state. + """ + + def __init__( + self, + code: str, + message: str, + *, + more_info: Optional[str] = None, + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentLifecycleReason object. + + :param str code: A reason code for this lifecycle state: + - `failed_licensing`: Allocation of one or more software license(s) has + failed. Delete + the instance and provision it again. If the problem persists, contact IBM + Support. + - `failed_registration`: The software instance's registration to Resource + Controller has + failed. Delete the instance and provision it again. If the problem + persists, contact IBM + Support. + - `internal_error`: Internal error (contact IBM support) + - `pending_registration`: The software instance's registration to Resource + Controller, + and the creation of any required software license(s), is being processed. + The enumerated values for this property may + [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the + future. + :param str message: An explanation of the reason for this lifecycle state. + :param str more_info: (optional) A link to documentation about the reason + for this lifecycle state. + """ + self.code = code + self.message = message + self.more_info = more_info + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentLifecycleReason': + """Initialize a InstanceSoftwareAttachmentLifecycleReason object from a json dictionary.""" + args = {} + if (code := _dict.get('code')) is not None: + args['code'] = code + else: + raise ValueError('Required property \'code\' not present in InstanceSoftwareAttachmentLifecycleReason JSON') + if (message := _dict.get('message')) is not None: + args['message'] = message + else: + raise ValueError('Required property \'message\' not present in InstanceSoftwareAttachmentLifecycleReason JSON') + if (more_info := _dict.get('more_info')) is not None: + args['more_info'] = more_info + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentLifecycleReason object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'code') and self.code is not None: + _dict['code'] = self.code + if hasattr(self, 'message') and self.message is not None: + _dict['message'] = self.message + if hasattr(self, 'more_info') and self.more_info is not None: + _dict['more_info'] = self.more_info + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentLifecycleReason object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentLifecycleReason') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentLifecycleReason') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class CodeEnum(str, Enum): + """ + A reason code for this lifecycle state: + - `failed_licensing`: Allocation of one or more software license(s) has failed. + Delete + the instance and provision it again. If the problem persists, contact IBM + Support. + - `failed_registration`: The software instance's registration to Resource + Controller has + failed. Delete the instance and provision it again. If the problem persists, + contact IBM + Support. + - `internal_error`: Internal error (contact IBM support) + - `pending_registration`: The software instance's registration to Resource + Controller, + and the creation of any required software license(s), is being processed. + The enumerated values for this property may + [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the + future. + """ + + FAILED_LICENSING = 'failed_licensing' + FAILED_REGISTRATION = 'failed_registration' + INTERNAL_ERROR = 'internal_error' + PENDING_REGISTRATION = 'pending_registration' + + + +class InstanceSoftwareAttachmentOfferingInstance: + """ + InstanceSoftwareAttachmentOfferingInstance. + + :param str crn: The CRN for the software offering instance registered with + Resource Controller that is associated with the instance software attachment. + """ + + def __init__( + self, + crn: str, + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentOfferingInstance object. + + :param str crn: The CRN for the software offering instance registered with + Resource Controller that is associated with the instance software + attachment. + """ + self.crn = crn + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentOfferingInstance': + """Initialize a InstanceSoftwareAttachmentOfferingInstance object from a json dictionary.""" + args = {} + if (crn := _dict.get('crn')) is not None: + args['crn'] = crn + else: + raise ValueError('Required property \'crn\' not present in InstanceSoftwareAttachmentOfferingInstance JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentOfferingInstance object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'crn') and self.crn is not None: + _dict['crn'] = self.crn + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentOfferingInstance object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentOfferingInstance') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentOfferingInstance') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentPatch: + """ + InstanceSoftwareAttachmentPatch. + + :param str name: (optional) The name for this instance software attachment. The + name must not be used by another software attachment for this instance. + """ + + def __init__( + self, + *, + name: Optional[str] = None, + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentPatch object. + + :param str name: (optional) The name for this instance software attachment. + The name must not be used by another software attachment for this instance. + """ + self.name = name + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentPatch': + """Initialize a InstanceSoftwareAttachmentPatch object from a json dictionary.""" + args = {} + if (name := _dict.get('name')) is not None: + args['name'] = name + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentPatch object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'name') and self.name is not None: + _dict['name'] = self.name + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentPatch object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentPatch') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentPatch') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class InstanceSoftwareAttachmentReference: + """ + InstanceSoftwareAttachmentReference. + + :param Deleted deleted: (optional) If present, this property indicates the + referenced resource has been deleted, and provides + some supplementary information. + :param str href: The URL for this instance software attachment. + :param str id: The unique identifier for this instance software attachment. + :param str name: The name for this instance software attachment. The name is + unique across all instance software attachments for the instance. + :param str resource_type: The resource type. + """ + + def __init__( + self, + href: str, + id: str, + name: str, + resource_type: str, + *, + deleted: Optional['Deleted'] = None, + ) -> None: + """ + Initialize a InstanceSoftwareAttachmentReference object. + + :param str href: The URL for this instance software attachment. + :param str id: The unique identifier for this instance software attachment. + :param str name: The name for this instance software attachment. The name + is unique across all instance software attachments for the instance. + :param str resource_type: The resource type. + :param Deleted deleted: (optional) If present, this property indicates the + referenced resource has been deleted, and provides + some supplementary information. + """ + self.deleted = deleted + self.href = href + self.id = id + self.name = name + self.resource_type = resource_type + + @classmethod + def from_dict(cls, _dict: Dict) -> 'InstanceSoftwareAttachmentReference': + """Initialize a InstanceSoftwareAttachmentReference object from a json dictionary.""" + args = {} + if (deleted := _dict.get('deleted')) is not None: + args['deleted'] = Deleted.from_dict(deleted) + if (href := _dict.get('href')) is not None: + args['href'] = href + else: + raise ValueError('Required property \'href\' not present in InstanceSoftwareAttachmentReference JSON') + if (id := _dict.get('id')) is not None: + args['id'] = id + else: + raise ValueError('Required property \'id\' not present in InstanceSoftwareAttachmentReference JSON') + if (name := _dict.get('name')) is not None: + args['name'] = name + else: + raise ValueError('Required property \'name\' not present in InstanceSoftwareAttachmentReference JSON') + if (resource_type := _dict.get('resource_type')) is not None: + args['resource_type'] = resource_type + else: + raise ValueError('Required property \'resource_type\' not present in InstanceSoftwareAttachmentReference JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a InstanceSoftwareAttachmentReference object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'deleted') and self.deleted is not None: + if isinstance(self.deleted, dict): + _dict['deleted'] = self.deleted + else: + _dict['deleted'] = self.deleted.to_dict() + if hasattr(self, 'href') and self.href is not None: + _dict['href'] = self.href + if hasattr(self, 'id') and self.id is not None: + _dict['id'] = self.id + if hasattr(self, 'name') and self.name is not None: + _dict['name'] = self.name + if hasattr(self, 'resource_type') and self.resource_type is not None: + _dict['resource_type'] = self.resource_type + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this InstanceSoftwareAttachmentReference object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'InstanceSoftwareAttachmentReference') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'InstanceSoftwareAttachmentReference') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class ResourceTypeEnum(str, Enum): + """ + The resource type. + """ + + INSTANCE_SOFTWARE_ATTACHMENT = 'instance_software_attachment' + + + class InstanceStatusReason: """ InstanceStatusReason. @@ -66373,6 +68616,10 @@ class InstanceTemplate: the instance must have two or more vCPUs, and `vcpu.percentage` must be `100`. :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -66414,6 +68661,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -66494,6 +68742,10 @@ def __init__( instance. If specified, the instance must have two or more vCPUs, and `vcpu.percentage` must be `100`. + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -66806,6 +69058,10 @@ class InstanceTemplatePrototype: use. If unspecified, the account's [default resource group](https://cloud.ibm.com/apidocs/resource-manager#introduction) will be used. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -66843,6 +69099,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -66921,6 +69178,10 @@ def __init__( to use. If unspecified, the account's [default resource group](https://cloud.ibm.com/apidocs/resource-manager#introduction) will be used. + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -68051,6 +70312,8 @@ class LoadBalancer: The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param bool advanced_health_checks_supported: Indicates whether this load + balancer supports advanced health checks. :param List[LoadBalancerPoolMemberReference] attached_load_balancer_pool_members: The load balancer pool members attached to this load balancer. @@ -68073,6 +70336,8 @@ class LoadBalancer: Not supported by private path load balancers. :param List[str] failsafe_policy_actions: The supported `failsafe_policy.action` values for this load balancer's pools. + :param bool fqdn_pool_members_supported: Indicates whether this load balancer + supports pool members specified by their fully qualified domain names. :param str hostname: The fully qualified domain name assigned to this load balancer. :param str href: The URL for this load balancer. @@ -68086,6 +70351,7 @@ class LoadBalancer: balancer. :param LoadBalancerLogging logging: The logging configuration for this load balancer. + :param bool mtls_supported: Indicates whether this load balancer supports mTLS. :param str name: The name for this load balancer. The name is unique across all load balancers in the VPC. :param str operating_status: The operating status of this load balancer. @@ -68137,11 +70403,13 @@ class LoadBalancer: def __init__( self, access_mode: str, + advanced_health_checks_supported: bool, attached_load_balancer_pool_members: List['LoadBalancerPoolMemberReference'], availability: str, created_at: datetime, crn: str, failsafe_policy_actions: List[str], + fqdn_pool_members_supported: bool, hostname: str, href: str, id: str, @@ -68150,6 +70418,7 @@ def __init__( is_public: bool, listeners: List['LoadBalancerListenerReference'], logging: 'LoadBalancerLogging', + mtls_supported: bool, name: str, operating_status: str, pools: List['LoadBalancerPoolReference'], @@ -68180,6 +70449,8 @@ def __init__( The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param bool advanced_health_checks_supported: Indicates whether this load + balancer supports advanced health checks. :param List[LoadBalancerPoolMemberReference] attached_load_balancer_pool_members: The load balancer pool members attached to this load balancer. @@ -68197,6 +70468,9 @@ def __init__( :param str crn: The CRN for this load balancer. :param List[str] failsafe_policy_actions: The supported `failsafe_policy.action` values for this load balancer's pools. + :param bool fqdn_pool_members_supported: Indicates whether this load + balancer supports pool members specified by their fully qualified domain + names. :param str hostname: The fully qualified domain name assigned to this load balancer. :param str href: The URL for this load balancer. @@ -68210,6 +70484,8 @@ def __init__( load balancer. :param LoadBalancerLogging logging: The logging configuration for this load balancer. + :param bool mtls_supported: Indicates whether this load balancer supports + mTLS. :param str name: The name for this load balancer. The name is unique across all load balancers in the VPC. :param str operating_status: The operating status of this load balancer. @@ -68270,12 +70546,14 @@ def __init__( Not supported by private path load balancers. """ self.access_mode = access_mode + self.advanced_health_checks_supported = advanced_health_checks_supported self.attached_load_balancer_pool_members = attached_load_balancer_pool_members self.availability = availability self.created_at = created_at self.crn = crn self.dns = dns self.failsafe_policy_actions = failsafe_policy_actions + self.fqdn_pool_members_supported = fqdn_pool_members_supported self.hostname = hostname self.href = href self.id = id @@ -68284,6 +70562,7 @@ def __init__( self.is_public = is_public self.listeners = listeners self.logging = logging + self.mtls_supported = mtls_supported self.name = name self.operating_status = operating_status self.pools = pools @@ -68308,6 +70587,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancer': args['access_mode'] = access_mode else: raise ValueError('Required property \'access_mode\' not present in LoadBalancer JSON') + if (advanced_health_checks_supported := _dict.get('advanced_health_checks_supported')) is not None: + args['advanced_health_checks_supported'] = advanced_health_checks_supported + else: + raise ValueError('Required property \'advanced_health_checks_supported\' not present in LoadBalancer JSON') if (attached_load_balancer_pool_members := _dict.get('attached_load_balancer_pool_members')) is not None: args['attached_load_balancer_pool_members'] = [LoadBalancerPoolMemberReference.from_dict(v) for v in attached_load_balancer_pool_members] else: @@ -68330,6 +70613,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancer': args['failsafe_policy_actions'] = failsafe_policy_actions else: raise ValueError('Required property \'failsafe_policy_actions\' not present in LoadBalancer JSON') + if (fqdn_pool_members_supported := _dict.get('fqdn_pool_members_supported')) is not None: + args['fqdn_pool_members_supported'] = fqdn_pool_members_supported + else: + raise ValueError('Required property \'fqdn_pool_members_supported\' not present in LoadBalancer JSON') if (hostname := _dict.get('hostname')) is not None: args['hostname'] = hostname else: @@ -68362,6 +70649,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancer': args['logging'] = LoadBalancerLogging.from_dict(logging) else: raise ValueError('Required property \'logging\' not present in LoadBalancer JSON') + if (mtls_supported := _dict.get('mtls_supported')) is not None: + args['mtls_supported'] = mtls_supported + else: + raise ValueError('Required property \'mtls_supported\' not present in LoadBalancer JSON') if (name := _dict.get('name')) is not None: args['name'] = name else: @@ -68434,6 +70725,8 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'access_mode') and self.access_mode is not None: _dict['access_mode'] = self.access_mode + if hasattr(self, 'advanced_health_checks_supported') and self.advanced_health_checks_supported is not None: + _dict['advanced_health_checks_supported'] = self.advanced_health_checks_supported if hasattr(self, 'attached_load_balancer_pool_members') and self.attached_load_balancer_pool_members is not None: attached_load_balancer_pool_members_list = [] for v in self.attached_load_balancer_pool_members: @@ -68455,6 +70748,8 @@ def to_dict(self) -> Dict: _dict['dns'] = self.dns.to_dict() if hasattr(self, 'failsafe_policy_actions') and self.failsafe_policy_actions is not None: _dict['failsafe_policy_actions'] = self.failsafe_policy_actions + if hasattr(self, 'fqdn_pool_members_supported') and self.fqdn_pool_members_supported is not None: + _dict['fqdn_pool_members_supported'] = self.fqdn_pool_members_supported if hasattr(self, 'hostname') and self.hostname is not None: _dict['hostname'] = self.hostname if hasattr(self, 'href') and self.href is not None: @@ -68480,6 +70775,8 @@ def to_dict(self) -> Dict: _dict['logging'] = self.logging else: _dict['logging'] = self.logging.to_dict() + if hasattr(self, 'mtls_supported') and self.mtls_supported is not None: + _dict['mtls_supported'] = self.mtls_supported if hasattr(self, 'name') and self.name is not None: _dict['name'] = self.name if hasattr(self, 'operating_status') and self.operating_status is not None: @@ -69077,6 +71374,8 @@ class LoadBalancerListener: :param CertificateInstanceReference certificate_instance: (optional) The certificate instance used for SSL termination. If absent, this listener is not using a certificate instance. + :param LoadBalancerListenerClientAuthentication client_authentication: + (optional) :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. This property will be present for load balancers in the `application` family. @@ -69123,6 +71422,7 @@ def __init__( provisioning_status: str, *, certificate_instance: Optional['CertificateInstanceReference'] = None, + client_authentication: Optional['LoadBalancerListenerClientAuthentication'] = None, connection_limit: Optional[int] = None, default_pool: Optional['LoadBalancerPoolReference'] = None, https_redirect: Optional['LoadBalancerListenerHTTPSRedirect'] = None, @@ -69164,6 +71464,8 @@ def __init__( :param CertificateInstanceReference certificate_instance: (optional) The certificate instance used for SSL termination. If absent, this listener is not using a certificate instance. + :param LoadBalancerListenerClientAuthentication client_authentication: + (optional) :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. This property will be present for load balancers in the `application` @@ -69183,6 +71485,7 @@ def __init__( """ self.accept_proxy_protocol = accept_proxy_protocol self.certificate_instance = certificate_instance + self.client_authentication = client_authentication self.connection_limit = connection_limit self.created_at = created_at self.default_pool = default_pool @@ -69207,6 +71510,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerListener': raise ValueError('Required property \'accept_proxy_protocol\' not present in LoadBalancerListener JSON') if (certificate_instance := _dict.get('certificate_instance')) is not None: args['certificate_instance'] = CertificateInstanceReference.from_dict(certificate_instance) + if (client_authentication := _dict.get('client_authentication')) is not None: + args['client_authentication'] = LoadBalancerListenerClientAuthentication.from_dict(client_authentication) if (connection_limit := _dict.get('connection_limit')) is not None: args['connection_limit'] = connection_limit if (created_at := _dict.get('created_at')) is not None: @@ -69266,6 +71571,11 @@ def to_dict(self) -> Dict: _dict['certificate_instance'] = self.certificate_instance else: _dict['certificate_instance'] = self.certificate_instance.to_dict() + if hasattr(self, 'client_authentication') and self.client_authentication is not None: + if isinstance(self.client_authentication, dict): + _dict['client_authentication'] = self.client_authentication + else: + _dict['client_authentication'] = self.client_authentication.to_dict() if hasattr(self, 'connection_limit') and self.connection_limit is not None: _dict['connection_limit'] = self.connection_limit if hasattr(self, 'created_at') and self.created_at is not None: @@ -69354,6 +71664,280 @@ class ProvisioningStatusEnum(str, Enum): +class LoadBalancerListenerClientAuthentication: + """ + LoadBalancerListenerClientAuthentication. + + :param CertificateInstanceReference certificate_authority: The certificate + instance used for the listener client certificate authority. + :param str certificate_revocation_list: (optional) A + [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) certificate revocation + list + (CRL) used for the listener. + """ + + def __init__( + self, + certificate_authority: 'CertificateInstanceReference', + *, + certificate_revocation_list: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerListenerClientAuthentication object. + + :param CertificateInstanceReference certificate_authority: The certificate + instance used for the listener client certificate authority. + :param str certificate_revocation_list: (optional) A + [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) certificate + revocation list + (CRL) used for the listener. + """ + self.certificate_authority = certificate_authority + self.certificate_revocation_list = certificate_revocation_list + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerListenerClientAuthentication': + """Initialize a LoadBalancerListenerClientAuthentication object from a json dictionary.""" + args = {} + if (certificate_authority := _dict.get('certificate_authority')) is not None: + args['certificate_authority'] = CertificateInstanceReference.from_dict(certificate_authority) + else: + raise ValueError('Required property \'certificate_authority\' not present in LoadBalancerListenerClientAuthentication JSON') + if (certificate_revocation_list := _dict.get('certificate_revocation_list')) is not None: + args['certificate_revocation_list'] = certificate_revocation_list + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerListenerClientAuthentication object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_authority') and self.certificate_authority is not None: + if isinstance(self.certificate_authority, dict): + _dict['certificate_authority'] = self.certificate_authority + else: + _dict['certificate_authority'] = self.certificate_authority.to_dict() + if hasattr(self, 'certificate_revocation_list') and self.certificate_revocation_list is not None: + _dict['certificate_revocation_list'] = self.certificate_revocation_list + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerListenerClientAuthentication object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerListenerClientAuthentication') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerListenerClientAuthentication') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerListenerClientAuthenticationCertificateAuthorityPatch: + """ + The certificate instance to use for the listener client certificate authority. + Specify `null` to remove an existing certificate authority. + + """ + + def __init__( + self, + ) -> None: + """ + Initialize a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatch object. + + """ + msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( + ", ".join(['LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN']) + ) + raise Exception(msg) + + +class LoadBalancerListenerClientAuthenticationPatch: + """ + The client authentication to use for this listener. + Supported by load balancers with `mtls_supported` set to `true`. The listener must + have a `protocol` of `https`. + Specify `null` to remove an existing client authentication. + + :param LoadBalancerListenerClientAuthenticationCertificateAuthorityPatch + certificate_authority: (optional) The certificate instance to use for the + listener client certificate authority. + Specify `null` to remove an existing certificate authority. + :param str certificate_revocation_list: (optional) A + [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) (with the label `X509 + CRL`) certificate revocation list (CRL) to use for the listener. + The CRL must be formatted using the X.509 standard as described in + [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280). + Specify `null` to remove an existing certificate revocation list. + """ + + def __init__( + self, + *, + certificate_authority: Optional['LoadBalancerListenerClientAuthenticationCertificateAuthorityPatch'] = None, + certificate_revocation_list: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerListenerClientAuthenticationPatch object. + + :param LoadBalancerListenerClientAuthenticationCertificateAuthorityPatch + certificate_authority: (optional) The certificate instance to use for the + listener client certificate authority. + Specify `null` to remove an existing certificate authority. + :param str certificate_revocation_list: (optional) A + [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) (with the label `X509 + CRL`) certificate revocation list (CRL) to use for the listener. + The CRL must be formatted using the X.509 standard as described in + [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280). + Specify `null` to remove an existing certificate revocation list. + """ + self.certificate_authority = certificate_authority + self.certificate_revocation_list = certificate_revocation_list + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerListenerClientAuthenticationPatch': + """Initialize a LoadBalancerListenerClientAuthenticationPatch object from a json dictionary.""" + args = {} + if (certificate_authority := _dict.get('certificate_authority')) is not None: + args['certificate_authority'] = certificate_authority + if (certificate_revocation_list := _dict.get('certificate_revocation_list')) is not None: + args['certificate_revocation_list'] = certificate_revocation_list + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerListenerClientAuthenticationPatch object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_authority') and self.certificate_authority is not None: + if isinstance(self.certificate_authority, dict): + _dict['certificate_authority'] = self.certificate_authority + else: + _dict['certificate_authority'] = self.certificate_authority.to_dict() + if hasattr(self, 'certificate_revocation_list') and self.certificate_revocation_list is not None: + _dict['certificate_revocation_list'] = self.certificate_revocation_list + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerListenerClientAuthenticationPatch object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerListenerClientAuthenticationPatch') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerListenerClientAuthenticationPatch') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerListenerClientAuthenticationPrototype: + """ + The client authentication to use for this listener. + Supported by load balancers with `mtls_supported` set to `true`. The listener must + have a `protocol` of `https`. + + :param CertificateInstanceIdentity certificate_authority: The certificate + instance to use for the listener client certificate authority. + Required if `certificate_revocation_list` is specified. + :param str certificate_revocation_list: (optional) A + [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) (with the label `X509 + CRL`) certificate revocation list (CRL) to use for the listener. + The CRL must be formatted using the X.509 standard as described in + [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280). + If specified, `certificate_authority` must also be specified. + """ + + def __init__( + self, + certificate_authority: 'CertificateInstanceIdentity', + *, + certificate_revocation_list: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerListenerClientAuthenticationPrototype object. + + :param CertificateInstanceIdentity certificate_authority: The certificate + instance to use for the listener client certificate authority. + Required if `certificate_revocation_list` is specified. + :param str certificate_revocation_list: (optional) A + [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) (with the label `X509 + CRL`) certificate revocation list (CRL) to use for the listener. + The CRL must be formatted using the X.509 standard as described in + [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280). + If specified, `certificate_authority` must also be specified. + """ + self.certificate_authority = certificate_authority + self.certificate_revocation_list = certificate_revocation_list + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerListenerClientAuthenticationPrototype': + """Initialize a LoadBalancerListenerClientAuthenticationPrototype object from a json dictionary.""" + args = {} + if (certificate_authority := _dict.get('certificate_authority')) is not None: + args['certificate_authority'] = certificate_authority + else: + raise ValueError('Required property \'certificate_authority\' not present in LoadBalancerListenerClientAuthenticationPrototype JSON') + if (certificate_revocation_list := _dict.get('certificate_revocation_list')) is not None: + args['certificate_revocation_list'] = certificate_revocation_list + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerListenerClientAuthenticationPrototype object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_authority') and self.certificate_authority is not None: + if isinstance(self.certificate_authority, dict): + _dict['certificate_authority'] = self.certificate_authority + else: + _dict['certificate_authority'] = self.certificate_authority.to_dict() + if hasattr(self, 'certificate_revocation_list') and self.certificate_revocation_list is not None: + _dict['certificate_revocation_list'] = self.certificate_revocation_list + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerListenerClientAuthenticationPrototype object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerListenerClientAuthenticationPrototype') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerListenerClientAuthenticationPrototype') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LoadBalancerListenerCollection: """ LoadBalancerListenerCollection. @@ -69738,6 +72322,12 @@ class LoadBalancerListenerPatch: :param CertificateInstanceIdentity certificate_instance: (optional) The certificate instance to use for SSL termination. The listener must have a `protocol` of `https`. + :param LoadBalancerListenerClientAuthenticationPatch client_authentication: + (optional) The client authentication to use for this listener. + Supported by load balancers with `mtls_supported` set to `true`. The listener + must + have a `protocol` of `https`. + Specify `null` to remove an existing client authentication. :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. Supported for load balancers in the `application` family. @@ -69811,6 +72401,7 @@ def __init__( *, accept_proxy_protocol: Optional[bool] = None, certificate_instance: Optional['CertificateInstanceIdentity'] = None, + client_authentication: Optional['LoadBalancerListenerClientAuthenticationPatch'] = None, connection_limit: Optional[int] = None, default_pool: Optional['LoadBalancerListenerDefaultPoolPatch'] = None, https_redirect: Optional['LoadBalancerListenerHTTPSRedirectPatch'] = None, @@ -69837,6 +72428,12 @@ def __init__( :param CertificateInstanceIdentity certificate_instance: (optional) The certificate instance to use for SSL termination. The listener must have a `protocol` of `https`. + :param LoadBalancerListenerClientAuthenticationPatch client_authentication: + (optional) The client authentication to use for this listener. + Supported by load balancers with `mtls_supported` set to `true`. The + listener must + have a `protocol` of `https`. + Specify `null` to remove an existing client authentication. :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. Supported for load balancers in the `application` family. @@ -69911,6 +72508,7 @@ def __init__( """ self.accept_proxy_protocol = accept_proxy_protocol self.certificate_instance = certificate_instance + self.client_authentication = client_authentication self.connection_limit = connection_limit self.default_pool = default_pool self.https_redirect = https_redirect @@ -69928,6 +72526,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerListenerPatch': args['accept_proxy_protocol'] = accept_proxy_protocol if (certificate_instance := _dict.get('certificate_instance')) is not None: args['certificate_instance'] = certificate_instance + if (client_authentication := _dict.get('client_authentication')) is not None: + args['client_authentication'] = LoadBalancerListenerClientAuthenticationPatch.from_dict(client_authentication) if (connection_limit := _dict.get('connection_limit')) is not None: args['connection_limit'] = connection_limit if (default_pool := _dict.get('default_pool')) is not None: @@ -69961,6 +72561,11 @@ def to_dict(self) -> Dict: _dict['certificate_instance'] = self.certificate_instance else: _dict['certificate_instance'] = self.certificate_instance.to_dict() + if hasattr(self, 'client_authentication') and self.client_authentication is not None: + if isinstance(self.client_authentication, dict): + _dict['client_authentication'] = self.client_authentication + else: + _dict['client_authentication'] = self.client_authentication.to_dict() if hasattr(self, 'connection_limit') and self.connection_limit is not None: _dict['connection_limit'] = self.connection_limit if hasattr(self, 'default_pool') and self.default_pool is not None: @@ -70884,6 +73489,7 @@ class ConditionEnum(str, Enum): CONTAINS = 'contains' EQUALS = 'equals' MATCHES_REGEX = 'matches_regex' + STARTS_WITH = 'starts_with' class ProvisioningStatusEnum(str, Enum): @@ -71113,6 +73719,7 @@ class ConditionEnum(str, Enum): CONTAINS = 'contains' EQUALS = 'equals' MATCHES_REGEX = 'matches_regex' + STARTS_WITH = 'starts_with' class TypeEnum(str, Enum): @@ -71270,6 +73877,7 @@ class ConditionEnum(str, Enum): CONTAINS = 'contains' EQUALS = 'equals' MATCHES_REGEX = 'matches_regex' + STARTS_WITH = 'starts_with' class TypeEnum(str, Enum): @@ -71478,6 +74086,11 @@ class LoadBalancerListenerPrototypeLoadBalancerContext: :param CertificateInstanceIdentity certificate_instance: (optional) The certificate instance to use for SSL termination. The listener must have a `protocol` of `https`. + :param LoadBalancerListenerClientAuthenticationPrototype client_authentication: + (optional) The client authentication to use for this listener. + Supported by load balancers with `mtls_supported` set to `true`. The listener + must + have a `protocol` of `https`. :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. Supported for load balancers in the `application` family. @@ -71550,6 +74163,7 @@ def __init__( *, accept_proxy_protocol: Optional[bool] = None, certificate_instance: Optional['CertificateInstanceIdentity'] = None, + client_authentication: Optional['LoadBalancerListenerClientAuthenticationPrototype'] = None, connection_limit: Optional[int] = None, default_pool: Optional['LoadBalancerPoolIdentityByName'] = None, https_redirect: Optional['LoadBalancerListenerHTTPSRedirectPrototype'] = None, @@ -71588,6 +74202,12 @@ def __init__( :param CertificateInstanceIdentity certificate_instance: (optional) The certificate instance to use for SSL termination. The listener must have a `protocol` of `https`. + :param LoadBalancerListenerClientAuthenticationPrototype + client_authentication: (optional) The client authentication to use for this + listener. + Supported by load balancers with `mtls_supported` set to `true`. The + listener must + have a `protocol` of `https`. :param int connection_limit: (optional) The concurrent connection limit for the listener. If reached, incoming connections may be queued or rejected. Supported for load balancers in the `application` family. @@ -71647,6 +74267,7 @@ def __init__( """ self.accept_proxy_protocol = accept_proxy_protocol self.certificate_instance = certificate_instance + self.client_authentication = client_authentication self.connection_limit = connection_limit self.default_pool = default_pool self.https_redirect = https_redirect @@ -71664,6 +74285,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerListenerPrototypeLoadBalancerCon args['accept_proxy_protocol'] = accept_proxy_protocol if (certificate_instance := _dict.get('certificate_instance')) is not None: args['certificate_instance'] = certificate_instance + if (client_authentication := _dict.get('client_authentication')) is not None: + args['client_authentication'] = LoadBalancerListenerClientAuthenticationPrototype.from_dict(client_authentication) if (connection_limit := _dict.get('connection_limit')) is not None: args['connection_limit'] = connection_limit if (default_pool := _dict.get('default_pool')) is not None: @@ -71699,6 +74322,11 @@ def to_dict(self) -> Dict: _dict['certificate_instance'] = self.certificate_instance else: _dict['certificate_instance'] = self.certificate_instance.to_dict() + if hasattr(self, 'client_authentication') and self.client_authentication is not None: + if isinstance(self.client_authentication, dict): + _dict['client_authentication'] = self.client_authentication + else: + _dict['client_authentication'] = self.client_authentication.to_dict() if hasattr(self, 'connection_limit') and self.connection_limit is not None: _dict['connection_limit'] = self.connection_limit if hasattr(self, 'default_pool') and self.default_pool is not None: @@ -72352,6 +74980,8 @@ class LoadBalancerPool: The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param LoadBalancerPoolClientAuthentication client_authentication: (optional) + The client authentication used for this pool. :param datetime created_at: The date and time that this pool was created. :param LoadBalancerPoolFailsafePolicy failsafe_policy: :param LoadBalancerPoolHealthMonitor health_monitor: The health monitor of this @@ -72393,6 +75023,9 @@ class LoadBalancerPool: The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param LoadBalancerPoolServerAuthentication server_authentication: (optional) + The server authentication used for this pool. + This property will be absent if the `pool.protocol` is not `https`. :param LoadBalancerPoolSessionPersistence session_persistence: (optional) The session persistence of this pool. If absent, session persistence will be disabled, and traffic will be distributed @@ -72412,8 +75045,10 @@ def __init__( provisioning_status: str, proxy_protocol: str, *, + client_authentication: Optional['LoadBalancerPoolClientAuthentication'] = None, instance_group: Optional['InstanceGroupReference'] = None, members: Optional[List['LoadBalancerPoolMemberReference']] = None, + server_authentication: Optional['LoadBalancerPoolServerAuthentication'] = None, session_persistence: Optional['LoadBalancerPoolSessionPersistence'] = None, ) -> None: """ @@ -72461,10 +75096,15 @@ def __init__( The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param LoadBalancerPoolClientAuthentication client_authentication: + (optional) The client authentication used for this pool. :param InstanceGroupReference instance_group: (optional) The instance group that is managing this pool. :param List[LoadBalancerPoolMemberReference] members: (optional) The backend server members of the pool. + :param LoadBalancerPoolServerAuthentication server_authentication: + (optional) The server authentication used for this pool. + This property will be absent if the `pool.protocol` is not `https`. :param LoadBalancerPoolSessionPersistence session_persistence: (optional) The session persistence of this pool. If absent, session persistence will be disabled, and traffic will be @@ -72472,6 +75112,7 @@ def __init__( across backend server members of the pool. """ self.algorithm = algorithm + self.client_authentication = client_authentication self.created_at = created_at self.failsafe_policy = failsafe_policy self.health_monitor = health_monitor @@ -72483,6 +75124,7 @@ def __init__( self.protocol = protocol self.provisioning_status = provisioning_status self.proxy_protocol = proxy_protocol + self.server_authentication = server_authentication self.session_persistence = session_persistence @classmethod @@ -72493,6 +75135,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPool': args['algorithm'] = algorithm else: raise ValueError('Required property \'algorithm\' not present in LoadBalancerPool JSON') + if (client_authentication := _dict.get('client_authentication')) is not None: + args['client_authentication'] = LoadBalancerPoolClientAuthentication.from_dict(client_authentication) if (created_at := _dict.get('created_at')) is not None: args['created_at'] = string_to_datetime(created_at) else: @@ -72533,6 +75177,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPool': args['proxy_protocol'] = proxy_protocol else: raise ValueError('Required property \'proxy_protocol\' not present in LoadBalancerPool JSON') + if (server_authentication := _dict.get('server_authentication')) is not None: + args['server_authentication'] = LoadBalancerPoolServerAuthentication.from_dict(server_authentication) if (session_persistence := _dict.get('session_persistence')) is not None: args['session_persistence'] = LoadBalancerPoolSessionPersistence.from_dict(session_persistence) return cls(**args) @@ -72547,6 +75193,11 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'algorithm') and self.algorithm is not None: _dict['algorithm'] = self.algorithm + if hasattr(self, 'client_authentication') and self.client_authentication is not None: + if isinstance(self.client_authentication, dict): + _dict['client_authentication'] = self.client_authentication + else: + _dict['client_authentication'] = self.client_authentication.to_dict() if hasattr(self, 'created_at') and self.created_at is not None: _dict['created_at'] = datetime_to_string(self.created_at) if hasattr(self, 'failsafe_policy') and self.failsafe_policy is not None: @@ -72584,6 +75235,11 @@ def to_dict(self) -> Dict: _dict['provisioning_status'] = self.provisioning_status if hasattr(self, 'proxy_protocol') and self.proxy_protocol is not None: _dict['proxy_protocol'] = self.proxy_protocol + if hasattr(self, 'server_authentication') and self.server_authentication is not None: + if isinstance(self.server_authentication, dict): + _dict['server_authentication'] = self.server_authentication + else: + _dict['server_authentication'] = self.server_authentication.to_dict() if hasattr(self, 'session_persistence') and self.session_persistence is not None: if isinstance(self.session_persistence, dict): _dict['session_persistence'] = self.session_persistence @@ -72668,6 +75324,212 @@ class ProxyProtocolEnum(str, Enum): +class LoadBalancerPoolClientAuthentication: + """ + The client authentication used for this pool. + + :param CertificateInstanceReference certificate_instance: + """ + + def __init__( + self, + certificate_instance: 'CertificateInstanceReference', + ) -> None: + """ + Initialize a LoadBalancerPoolClientAuthentication object. + + :param CertificateInstanceReference certificate_instance: + """ + self.certificate_instance = certificate_instance + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolClientAuthentication': + """Initialize a LoadBalancerPoolClientAuthentication object from a json dictionary.""" + args = {} + if (certificate_instance := _dict.get('certificate_instance')) is not None: + args['certificate_instance'] = CertificateInstanceReference.from_dict(certificate_instance) + else: + raise ValueError('Required property \'certificate_instance\' not present in LoadBalancerPoolClientAuthentication JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolClientAuthentication object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_instance') and self.certificate_instance is not None: + if isinstance(self.certificate_instance, dict): + _dict['certificate_instance'] = self.certificate_instance + else: + _dict['certificate_instance'] = self.certificate_instance.to_dict() + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolClientAuthentication object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolClientAuthentication') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolClientAuthentication') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolClientAuthenticationPatch: + """ + The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must have a + `protocol` of `https`. + Specify `null` to remove an existing client authentication. + + :param CertificateInstanceIdentity certificate_instance: (optional) The backend + certificate instance to use for client + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must have a `protocol` of `https`. + """ + + def __init__( + self, + *, + certificate_instance: Optional['CertificateInstanceIdentity'] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolClientAuthenticationPatch object. + + :param CertificateInstanceIdentity certificate_instance: (optional) The + backend certificate instance to use for client + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must have a `protocol` of `https`. + """ + self.certificate_instance = certificate_instance + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolClientAuthenticationPatch': + """Initialize a LoadBalancerPoolClientAuthenticationPatch object from a json dictionary.""" + args = {} + if (certificate_instance := _dict.get('certificate_instance')) is not None: + args['certificate_instance'] = certificate_instance + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolClientAuthenticationPatch object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_instance') and self.certificate_instance is not None: + if isinstance(self.certificate_instance, dict): + _dict['certificate_instance'] = self.certificate_instance + else: + _dict['certificate_instance'] = self.certificate_instance.to_dict() + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolClientAuthenticationPatch object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolClientAuthenticationPatch') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolClientAuthenticationPatch') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolClientAuthenticationPrototype: + """ + The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must have a + `protocol` of `https`. + + :param CertificateInstanceIdentity certificate_instance: The backend certificate + instance to use for client + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must have a `protocol` of `https`. + """ + + def __init__( + self, + certificate_instance: 'CertificateInstanceIdentity', + ) -> None: + """ + Initialize a LoadBalancerPoolClientAuthenticationPrototype object. + + :param CertificateInstanceIdentity certificate_instance: The backend + certificate instance to use for client + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must have a `protocol` of `https`. + """ + self.certificate_instance = certificate_instance + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolClientAuthenticationPrototype': + """Initialize a LoadBalancerPoolClientAuthenticationPrototype object from a json dictionary.""" + args = {} + if (certificate_instance := _dict.get('certificate_instance')) is not None: + args['certificate_instance'] = certificate_instance + else: + raise ValueError('Required property \'certificate_instance\' not present in LoadBalancerPoolClientAuthenticationPrototype JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolClientAuthenticationPrototype object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_instance') and self.certificate_instance is not None: + if isinstance(self.certificate_instance, dict): + _dict['certificate_instance'] = self.certificate_instance + else: + _dict['certificate_instance'] = self.certificate_instance.to_dict() + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolClientAuthenticationPrototype object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolClientAuthenticationPrototype') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolClientAuthenticationPrototype') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LoadBalancerPoolCollection: """ LoadBalancerPoolCollection. @@ -72884,9 +75746,21 @@ class LoadBalancerPoolFailsafePolicyPatch: - Belong to this load balancer - Have the same `protocol` as this pool, or have a compatible protocol. At present, the compatible protocols are `http` and `https`. - - Not have a `failsafe_policy.action` of `forward` or `bypass`. + For load balancers in the `application` family, the failsafe target pool must + not + already be the default pool or a failsafe target pool for the same listener. + For load balancers in the `network` family, the pool specified in the URL must + not + be a failsafe target pool for another pool. If specified, `action` must be `forward`. Specify `null` to remove an existing failsafe target pool. + **For more information, see:** + - [Creating an application load balancer]( + https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui) + - [Working with application load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-alb-pools&interface=ui) + - [Working with network load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-pools&interface=ui). """ def __init__( @@ -72915,9 +75789,22 @@ def __init__( - Belong to this load balancer - Have the same `protocol` as this pool, or have a compatible protocol. At present, the compatible protocols are `http` and `https`. - - Not have a `failsafe_policy.action` of `forward` or `bypass`. + For load balancers in the `application` family, the failsafe target pool + must not + already be the default pool or a failsafe target pool for the same + listener. + For load balancers in the `network` family, the pool specified in the URL + must not + be a failsafe target pool for another pool. If specified, `action` must be `forward`. Specify `null` to remove an existing failsafe target pool. + **For more information, see:** + - [Creating an application load balancer]( + https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui) + - [Working with application load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-alb-pools&interface=ui) + - [Working with network load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-pools&interface=ui). """ self.action = action self.target = target @@ -73009,8 +75896,20 @@ class LoadBalancerPoolFailsafePolicyPrototype: - Belong to this load balancer - Have the same `protocol` as this pool, or have a compatible protocol. At present, the compatible protocols are `http` and `https`. - - Have a `failsafe_policy.action` of `fail` or `drop` + For load balancers in the `application` family, the failsafe target pool must + not + already be the default pool or a failsafe target pool for the same listener. + For load balancers in the `network` family, the pool specified in the URL must + not + be a failsafe target pool for another pool. If specified, `action` must be `forward`. + **For more information, see:** + - [Creating an application load balancer]( + https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui) + - [Working with application load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-alb-pools&interface=ui) + - [Working with network load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-pools&interface=ui). """ def __init__( @@ -73039,8 +75938,21 @@ def __init__( - Belong to this load balancer - Have the same `protocol` as this pool, or have a compatible protocol. At present, the compatible protocols are `http` and `https`. - - Have a `failsafe_policy.action` of `fail` or `drop` + For load balancers in the `application` family, the failsafe target pool + must not + already be the default pool or a failsafe target pool for the same + listener. + For load balancers in the `network` family, the pool specified in the URL + must not + be a failsafe target pool for another pool. If specified, `action` must be `forward`. + **For more information, see:** + - [Creating an application load balancer]( + https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui) + - [Working with application load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-alb-pools&interface=ui) + - [Working with network load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-pools&interface=ui). """ self.action = action self.target = target @@ -73118,9 +76030,19 @@ class LoadBalancerPoolFailsafePolicyTargetPatch: - Belong to this load balancer - Have the same `protocol` as this pool, or have a compatible protocol. At present, the compatible protocols are `http` and `https`. - - Not have a `failsafe_policy.action` of `forward` or `bypass`. + For load balancers in the `application` family, the failsafe target pool must not + already be the default pool or a failsafe target pool for the same listener. + For load balancers in the `network` family, the pool specified in the URL must not be + a failsafe target pool for another pool. If specified, `action` must be `forward`. Specify `null` to remove an existing failsafe target pool. + **For more information, see:** + - [Creating an application load balancer]( + https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui) + - [Working with application load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-alb-pools&interface=ui) + - [Working with network load balancer pools]( + https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-pools&interface=ui). """ @@ -73203,6 +76125,12 @@ class LoadBalancerPoolHealthMonitorPatch: :param int port: (optional) The health check port. If set, this overrides the pool member port values. Specify `null` to remove an existing health check port. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch request: + (optional) Supported by load balancers with `advanced_health_checks_supported` + set to `true`. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch response: + (optional) Supported by load balancers with `advanced_health_checks_supported` + set to `true`. :param int timeout: The seconds to wait for a response to a health check. Must be less than `delay`. :param str type: The protocol type to use for health checks. @@ -73221,6 +76149,8 @@ def __init__( type: str, *, port: Optional[int] = None, + request: Optional['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch'] = None, + response: Optional['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch'] = None, url_path: Optional[str] = None, ) -> None: """ @@ -73235,6 +76165,12 @@ def __init__( :param int port: (optional) The health check port. If set, this overrides the pool member port values. Specify `null` to remove an existing health check port. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch request: + (optional) Supported by load balancers with + `advanced_health_checks_supported` set to `true`. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch response: + (optional) Supported by load balancers with + `advanced_health_checks_supported` set to `true`. :param str url_path: (optional) The health check URL path. If specified, `type` must be `http` or `https`. Must be in the format of an [origin-form request @@ -73244,6 +76180,8 @@ def __init__( self.delay = delay self.max_retries = max_retries self.port = port + self.request = request + self.response = response self.timeout = timeout self.type = type self.url_path = url_path @@ -73262,6 +76200,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorPatch': raise ValueError('Required property \'max_retries\' not present in LoadBalancerPoolHealthMonitorPatch JSON') if (port := _dict.get('port')) is not None: args['port'] = port + if (request := _dict.get('request')) is not None: + args['request'] = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch.from_dict(request) + if (response := _dict.get('response')) is not None: + args['response'] = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch.from_dict(response) if (timeout := _dict.get('timeout')) is not None: args['timeout'] = timeout else: @@ -73288,6 +76230,16 @@ def to_dict(self) -> Dict: _dict['max_retries'] = self.max_retries if hasattr(self, 'port') and self.port is not None: _dict['port'] = self.port + if hasattr(self, 'request') and self.request is not None: + if isinstance(self.request, dict): + _dict['request'] = self.request + else: + _dict['request'] = self.request.to_dict() + if hasattr(self, 'response') and self.response is not None: + if isinstance(self.response, dict): + _dict['response'] = self.response + else: + _dict['response'] = self.response.to_dict() if hasattr(self, 'timeout') and self.timeout is not None: _dict['timeout'] = self.timeout if hasattr(self, 'type') and self.type is not None: @@ -73376,6 +76328,617 @@ class TypeEnum(str, Enum): +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest: + """ + LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest. + + :param str body: (optional) The HTTP request body used for health checks. + If absent, the health checks will ignore the request body. + :param List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader] headers_: + (optional) The HTTP request headers used for health checks. + If empty, the health checks will ignore the request headers. + :param str method: The HTTP request method used for health checks. + """ + + def __init__( + self, + method: str, + *, + body: Optional[str] = None, + headers_: Optional[List['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader']] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest object. + + :param str method: The HTTP request method used for health checks. + :param str body: (optional) The HTTP request body used for health checks. + If absent, the health checks will ignore the request body. + :param List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader] + headers_: (optional) The HTTP request headers used for health checks. + If empty, the health checks will ignore the request headers. + """ + self.body = body + self.headers_ = headers_ + self.method = method + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest object from a json dictionary.""" + args = {} + if (body := _dict.get('body')) is not None: + args['body'] = body + if (headers_ := _dict.get('headers')) is not None: + args['headers_'] = [LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader.from_dict(v) for v in headers_] + if (method := _dict.get('method')) is not None: + args['method'] = method + else: + raise ValueError('Required property \'method\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'body') and self.body is not None: + _dict['body'] = self.body + if hasattr(self, 'headers_') and self.headers_ is not None: + headers_list = [] + for v in self.headers_: + if isinstance(v, dict): + headers_list.append(v) + else: + headers_list.append(v.to_dict()) + _dict['headers'] = headers_list + if hasattr(self, 'method') and self.method is not None: + _dict['method'] = self.method + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class MethodEnum(str, Enum): + """ + The HTTP request method used for health checks. + """ + + GET = 'get' + POST = 'post' + + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader: + """ + An HTTP request header used for health checks. + + :param str field: The field of an HTTP request header used for health checks. + :param str value: The value of an HTTP request header used for health checks. + """ + + def __init__( + self, + field: str, + value: str, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader object. + + :param str field: The field of an HTTP request header used for health + checks. + :param str value: The value of an HTTP request header used for health + checks. + """ + self.field = field + self.value = value + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader object from a json dictionary.""" + args = {} + if (field := _dict.get('field')) is not None: + args['field'] = field + else: + raise ValueError('Required property \'field\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader JSON') + if (value := _dict.get('value')) is not None: + args['value'] = value + else: + raise ValueError('Required property \'value\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'field') and self.field is not None: + _dict['field'] = self.field + if hasattr(self, 'value') and self.value is not None: + _dict['value'] = self.value + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype: + """ + An HTTP request header to use for health checks. + + :param str field: The field of an HTTP request header to use for health checks. + :param str value: The value of an HTTP request header to use for health checks. + """ + + def __init__( + self, + field: str, + value: str, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype object. + + :param str field: The field of an HTTP request header to use for health + checks. + :param str value: The value of an HTTP request header to use for health + checks. + """ + self.field = field + self.value = value + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype object from a json dictionary.""" + args = {} + if (field := _dict.get('field')) is not None: + args['field'] = field + else: + raise ValueError('Required property \'field\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype JSON') + if (value := _dict.get('value')) is not None: + args['value'] = value + else: + raise ValueError('Required property \'value\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'field') and self.field is not None: + _dict['field'] = self.field + if hasattr(self, 'value') and self.value is not None: + _dict['value'] = self.value + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch: + """ + Supported by load balancers with `advanced_health_checks_supported` set to `true`. + + :param str body: (optional) The HTTP request body to use for health checks. If + set, a corresponding `Content-Type` field must be included in the + `request.headers` array. + Specify `null` to remove the request body used for health checks. + The body must be formatted in a way that will be understood by the backend + server member. + :param List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype] + headers_: (optional) The HTTP request headers to use for health checks. + Specify an empty array to remove the request headers for health checks. + Include a `Host` field and its value to enable the `HTTP/1.1` protocol for + health checks. If a `Host` header is not included, `HTTP/1.0` will be used by + default. More than one + `Host` header is not allowed. + Include a `Content-Type` field and its value to indicate the media type of the + `request.body` (if set). + A header must not exceed 1000 characters, and all headers combined must not + exceed 4000 characters. + :param str method: (optional) The HTTP request method to use for health checks. + If updating to `get`, the + `health_monitor.request.body` property (if set) must be removed. + """ + + def __init__( + self, + *, + body: Optional[str] = None, + headers_: Optional[List['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype']] = None, + method: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch object. + + :param str body: (optional) The HTTP request body to use for health checks. + If set, a corresponding `Content-Type` field must be included in the + `request.headers` array. + Specify `null` to remove the request body used for health checks. + The body must be formatted in a way that will be understood by the backend + server member. + :param + List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype] + headers_: (optional) The HTTP request headers to use for health checks. + Specify an empty array to remove the request headers for health checks. + Include a `Host` field and its value to enable the `HTTP/1.1` protocol for + health checks. If a `Host` header is not included, `HTTP/1.0` will be used + by default. More than one + `Host` header is not allowed. + Include a `Content-Type` field and its value to indicate the media type of + the + `request.body` (if set). + A header must not exceed 1000 characters, and all headers combined must not + exceed 4000 characters. + :param str method: (optional) The HTTP request method to use for health + checks. If updating to `get`, the + `health_monitor.request.body` property (if set) must be removed. + """ + self.body = body + self.headers_ = headers_ + self.method = method + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch object from a json dictionary.""" + args = {} + if (body := _dict.get('body')) is not None: + args['body'] = body + if (headers_ := _dict.get('headers')) is not None: + args['headers_'] = [LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype.from_dict(v) for v in headers_] + if (method := _dict.get('method')) is not None: + args['method'] = method + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'body') and self.body is not None: + _dict['body'] = self.body + if hasattr(self, 'headers_') and self.headers_ is not None: + headers_list = [] + for v in self.headers_: + if isinstance(v, dict): + headers_list.append(v) + else: + headers_list.append(v.to_dict()) + _dict['headers'] = headers_list + if hasattr(self, 'method') and self.method is not None: + _dict['method'] = self.method + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class MethodEnum(str, Enum): + """ + The HTTP request method to use for health checks. If updating to `get`, the + `health_monitor.request.body` property (if set) must be removed. + """ + + GET = 'get' + POST = 'post' + + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype: + """ + The HTTP request to use for health checks. If unspecified, a `request.method` value of + `get` will be used with no `request.headers`. + Supported by load balancers with `advanced_health_checks_supported` set to `true`. + + """ + + def __init__( + self, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype object. + + """ + msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( + ", ".join(['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype', 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype']) + ) + raise Exception(msg) + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse: + """ + LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse. + + :param str body_regex: (optional) The PCRE-flavor regular expression that HTTP + response bodies must match for successful health checks. + If absent, health checks will ignore any response body. + :param List[str] codes: The HTTP response codes expected for successful health + checks. + """ + + def __init__( + self, + codes: List[str], + *, + body_regex: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse object. + + :param List[str] codes: The HTTP response codes expected for successful + health checks. + :param str body_regex: (optional) The PCRE-flavor regular expression that + HTTP response bodies must match for successful health checks. + If absent, health checks will ignore any response body. + """ + self.body_regex = body_regex + self.codes = codes + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse object from a json dictionary.""" + args = {} + if (body_regex := _dict.get('body_regex')) is not None: + args['body_regex'] = body_regex + if (codes := _dict.get('codes')) is not None: + args['codes'] = codes + else: + raise ValueError('Required property \'codes\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'body_regex') and self.body_regex is not None: + _dict['body_regex'] = self.body_regex + if hasattr(self, 'codes') and self.codes is not None: + _dict['codes'] = self.codes + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch: + """ + Supported by load balancers with `advanced_health_checks_supported` set to `true`. + + :param str body_regex: (optional) The PCRE-flavor regular expression that HTTP + response bodies will be expected to match for successful health checks. + Specify `null` to remove the response body for successful health checks. If + removed, health checks will ignore any response body. + :param List[str] codes: (optional) The HTTP response codes to expect for + successful health checks. + """ + + def __init__( + self, + *, + body_regex: Optional[str] = None, + codes: Optional[List[str]] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch object. + + :param str body_regex: (optional) The PCRE-flavor regular expression that + HTTP response bodies will be expected to match for successful health + checks. + Specify `null` to remove the response body for successful health checks. If + removed, health checks will ignore any response body. + :param List[str] codes: (optional) The HTTP response codes to expect for + successful health checks. + """ + self.body_regex = body_regex + self.codes = codes + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch object from a json dictionary.""" + args = {} + if (body_regex := _dict.get('body_regex')) is not None: + args['body_regex'] = body_regex + if (codes := _dict.get('codes')) is not None: + args['codes'] = codes + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'body_regex') and self.body_regex is not None: + _dict['body_regex'] = self.body_regex + if hasattr(self, 'codes') and self.codes is not None: + _dict['codes'] = self.codes + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype: + """ + The HTTP response to use for health checks. If unspecified, a `response.codes` value + of + `["200"]` will be used with no `response.body_regex`. + Supported by load balancers with `advanced_health_checks_supported` set to `true`. + + :param str body_regex: (optional) The PCRE-flavor regular expression that HTTP + response bodies will be expected to match for successful health checks. + If unspecified, health checks will ignore any response body. + :param List[str] codes: (optional) The HTTP response codes to expect for + successful health checks. + """ + + def __init__( + self, + *, + body_regex: Optional[str] = None, + codes: Optional[List[str]] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype object. + + :param str body_regex: (optional) The PCRE-flavor regular expression that + HTTP response bodies will be expected to match for successful health + checks. + If unspecified, health checks will ignore any response body. + :param List[str] codes: (optional) The HTTP response codes to expect for + successful health checks. + """ + self.body_regex = body_regex + self.codes = codes + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype object from a json dictionary.""" + args = {} + if (body_regex := _dict.get('body_regex')) is not None: + args['body_regex'] = body_regex + if (codes := _dict.get('codes')) is not None: + args['codes'] = codes + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'body_regex') and self.body_regex is not None: + _dict['body_regex'] = self.body_regex + if hasattr(self, 'codes') and self.codes is not None: + _dict['codes'] = self.codes + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LoadBalancerPoolIdentity: """ Identifies a load balancer pool by a unique property. @@ -74042,7 +77605,7 @@ def __init__( """ msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( - ", ".join(['LoadBalancerPoolMemberTargetInstanceReference', 'LoadBalancerPoolMemberTargetByReservedIp', 'LoadBalancerPoolMemberTargetIPNotReservedIP', 'LoadBalancerPoolMemberTargetLoadBalancerReference']) + ", ".join(['LoadBalancerPoolMemberTargetInstanceReference', 'LoadBalancerPoolMemberTargetByReservedIp', 'LoadBalancerPoolMemberTargetIPNotReservedIP', 'LoadBalancerPoolMemberTargetLoadBalancerReference', 'LoadBalancerPoolMemberTargetFQDN']) ) raise Exception(msg) @@ -74065,7 +77628,7 @@ def __init__( """ msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( - ", ".join(['LoadBalancerPoolMemberTargetPrototypeInstanceIdentity', 'LoadBalancerPoolMemberTargetPrototypeReservedIPIdentity', 'LoadBalancerPoolMemberTargetPrototypeIP', 'LoadBalancerPoolMemberTargetPrototypeLoadBalancerIdentity']) + ", ".join(['LoadBalancerPoolMemberTargetPrototypeInstanceIdentity', 'LoadBalancerPoolMemberTargetPrototypeReservedIPIdentity', 'LoadBalancerPoolMemberTargetPrototypeIP', 'LoadBalancerPoolMemberTargetPrototypeLoadBalancerIdentity', 'LoadBalancerPoolMemberTargetPrototypeFQDN']) ) raise Exception(msg) @@ -74077,6 +77640,11 @@ class LoadBalancerPoolPatch: :param str algorithm: (optional) The load balancing algorithm. The `least_connections` algorithm is only supported for load balancers that have `availability` with value `subnet` in the profile. + :param LoadBalancerPoolClientAuthenticationPatch client_authentication: + (optional) The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must + have a `protocol` of `https`. + Specify `null` to remove an existing client authentication. :param LoadBalancerPoolFailsafePolicyPatch failsafe_policy: (optional) The failsafe policy for this load balancer pool. :param LoadBalancerPoolHealthMonitorPatch health_monitor: (optional) The health @@ -74109,6 +77677,11 @@ class LoadBalancerPoolPatch: - `v2`: Enabled with version 2 (binary header format) - `disabled`: Disabled For load balancers in the `network` family, this property must be `disabled`. + :param LoadBalancerPoolServerAuthenticationPatch server_authentication: + (optional) The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must + have a `protocol` of `https`. + Specify `null` to remove an existing server authentication. :param LoadBalancerPoolSessionPersistencePatch session_persistence: (optional) The session persistence of this pool. """ @@ -74117,11 +77690,13 @@ def __init__( self, *, algorithm: Optional[str] = None, + client_authentication: Optional['LoadBalancerPoolClientAuthenticationPatch'] = None, failsafe_policy: Optional['LoadBalancerPoolFailsafePolicyPatch'] = None, health_monitor: Optional['LoadBalancerPoolHealthMonitorPatch'] = None, name: Optional[str] = None, protocol: Optional[str] = None, proxy_protocol: Optional[str] = None, + server_authentication: Optional['LoadBalancerPoolServerAuthenticationPatch'] = None, session_persistence: Optional['LoadBalancerPoolSessionPersistencePatch'] = None, ) -> None: """ @@ -74130,6 +77705,12 @@ def __init__( :param str algorithm: (optional) The load balancing algorithm. The `least_connections` algorithm is only supported for load balancers that have `availability` with value `subnet` in the profile. + :param LoadBalancerPoolClientAuthenticationPatch client_authentication: + (optional) The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. + Specify `null` to remove an existing client authentication. :param LoadBalancerPoolFailsafePolicyPatch failsafe_policy: (optional) The failsafe policy for this load balancer pool. :param LoadBalancerPoolHealthMonitorPatch health_monitor: (optional) The @@ -74167,15 +77748,23 @@ def __init__( - `disabled`: Disabled For load balancers in the `network` family, this property must be `disabled`. + :param LoadBalancerPoolServerAuthenticationPatch server_authentication: + (optional) The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. + Specify `null` to remove an existing server authentication. :param LoadBalancerPoolSessionPersistencePatch session_persistence: (optional) The session persistence of this pool. """ self.algorithm = algorithm + self.client_authentication = client_authentication self.failsafe_policy = failsafe_policy self.health_monitor = health_monitor self.name = name self.protocol = protocol self.proxy_protocol = proxy_protocol + self.server_authentication = server_authentication self.session_persistence = session_persistence @classmethod @@ -74184,6 +77773,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolPatch': args = {} if (algorithm := _dict.get('algorithm')) is not None: args['algorithm'] = algorithm + if (client_authentication := _dict.get('client_authentication')) is not None: + args['client_authentication'] = LoadBalancerPoolClientAuthenticationPatch.from_dict(client_authentication) if (failsafe_policy := _dict.get('failsafe_policy')) is not None: args['failsafe_policy'] = LoadBalancerPoolFailsafePolicyPatch.from_dict(failsafe_policy) if (health_monitor := _dict.get('health_monitor')) is not None: @@ -74194,6 +77785,8 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolPatch': args['protocol'] = protocol if (proxy_protocol := _dict.get('proxy_protocol')) is not None: args['proxy_protocol'] = proxy_protocol + if (server_authentication := _dict.get('server_authentication')) is not None: + args['server_authentication'] = LoadBalancerPoolServerAuthenticationPatch.from_dict(server_authentication) if (session_persistence := _dict.get('session_persistence')) is not None: args['session_persistence'] = LoadBalancerPoolSessionPersistencePatch.from_dict(session_persistence) return cls(**args) @@ -74208,6 +77801,11 @@ def to_dict(self) -> Dict: _dict = {} if hasattr(self, 'algorithm') and self.algorithm is not None: _dict['algorithm'] = self.algorithm + if hasattr(self, 'client_authentication') and self.client_authentication is not None: + if isinstance(self.client_authentication, dict): + _dict['client_authentication'] = self.client_authentication + else: + _dict['client_authentication'] = self.client_authentication.to_dict() if hasattr(self, 'failsafe_policy') and self.failsafe_policy is not None: if isinstance(self.failsafe_policy, dict): _dict['failsafe_policy'] = self.failsafe_policy @@ -74224,6 +77822,11 @@ def to_dict(self) -> Dict: _dict['protocol'] = self.protocol if hasattr(self, 'proxy_protocol') and self.proxy_protocol is not None: _dict['proxy_protocol'] = self.proxy_protocol + if hasattr(self, 'server_authentication') and self.server_authentication is not None: + if isinstance(self.server_authentication, dict): + _dict['server_authentication'] = self.server_authentication + else: + _dict['server_authentication'] = self.server_authentication.to_dict() if hasattr(self, 'session_persistence') and self.session_persistence is not None: if isinstance(self.session_persistence, dict): _dict['session_persistence'] = self.session_persistence @@ -74292,181 +77895,368 @@ class ProxyProtocolEnum(str, Enum): -class LoadBalancerPoolPrototypeLoadBalancerContext: +class LoadBalancerPoolPrototypeLoadBalancerContext: + """ + LoadBalancerPoolPrototypeLoadBalancerContext. + + :param str algorithm: The load balancing algorithm. The `least_connections` + algorithm is only supported for load balancers that have `availability` with + value `subnet` in the profile. + :param LoadBalancerPoolClientAuthenticationPrototype client_authentication: + (optional) The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must + have a `protocol` of `https`. + :param LoadBalancerPoolHealthMonitorPrototype health_monitor: The health monitor + of this pool. + If this pool has a member targeting a load balancer then: + - If the targeted load balancer has multiple subnets, this health monitor will + be + used to direct traffic to the available subnets. + - The health checks spawned by this health monitor will be handled as any other + traffic (that is, subject to the configuration of listeners and pools on the + target + load balancer). + - This health monitor does not affect how pool member health is determined + within the + target load balancer. + For more information, see [Private Path network load balancer frequently asked + questions](https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-faqs#ppnlb-faqs). + :param List[LoadBalancerPoolMemberPrototype] members: (optional) The members for + this load balancer pool. For load balancers in the `network` family, the same + `port` and `target` tuple cannot be shared by a pool member of any other load + balancer in the same VPC. + :param str name: (optional) The name for this load balancer pool. The name must + not be used by another pool for the load balancer. If unspecified, the name will + be a hyphenated list of randomly-selected words. + :param str protocol: The protocol used for this load balancer pool. Load + balancers in the `network` family support `tcp` and `udp` (if `udp_supported` is + `true`). Load balancers in the + `application` family support `tcp`, `http`, and `https`. + **NOTE**: HTTP sends data in plain text, making it vulnerable to eavesdropping + and tampering. Additionally, HTTP has no built-in mechanism to verify the + identity of the server you are connecting to. It is recommended to choose + `https` instead of `http`. For more details, see: + https://www.cloudflare.com/learning/ssl/why-is-http-not-secure. + :param str proxy_protocol: (optional) The PROXY protocol setting for this pool: + - `v1`: Enabled with version 1 (human-readable header format) + - `v2`: Enabled with version 2 (binary header format) + - `disabled`: Disabled + For load balancers in the `network` family, this property must be `disabled`. + :param LoadBalancerPoolServerAuthenticationPrototype server_authentication: + (optional) The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must + have a `protocol` of `https`. + :param LoadBalancerPoolSessionPersistencePrototype session_persistence: + (optional) The session persistence of this pool. If specified, the load balancer + must have + `source_ip_session_persistence_supported` set to `true` in its profile. + If unspecified, session persistence will be disabled, and traffic will be + distributed + across members of the pool. + """ + + def __init__( + self, + algorithm: str, + health_monitor: 'LoadBalancerPoolHealthMonitorPrototype', + protocol: str, + *, + client_authentication: Optional['LoadBalancerPoolClientAuthenticationPrototype'] = None, + members: Optional[List['LoadBalancerPoolMemberPrototype']] = None, + name: Optional[str] = None, + proxy_protocol: Optional[str] = None, + server_authentication: Optional['LoadBalancerPoolServerAuthenticationPrototype'] = None, + session_persistence: Optional['LoadBalancerPoolSessionPersistencePrototype'] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolPrototypeLoadBalancerContext object. + + :param str algorithm: The load balancing algorithm. The `least_connections` + algorithm is only supported for load balancers that have `availability` + with value `subnet` in the profile. + :param LoadBalancerPoolHealthMonitorPrototype health_monitor: The health + monitor of this pool. + If this pool has a member targeting a load balancer then: + - If the targeted load balancer has multiple subnets, this health monitor + will be + used to direct traffic to the available subnets. + - The health checks spawned by this health monitor will be handled as any + other + traffic (that is, subject to the configuration of listeners and pools on + the target + load balancer). + - This health monitor does not affect how pool member health is determined + within the + target load balancer. + For more information, see [Private Path network load balancer frequently + asked + questions](https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-faqs#ppnlb-faqs). + :param str protocol: The protocol used for this load balancer pool. Load + balancers in the `network` family support `tcp` and `udp` (if + `udp_supported` is `true`). Load balancers in the + `application` family support `tcp`, `http`, and `https`. + **NOTE**: HTTP sends data in plain text, making it vulnerable to + eavesdropping and tampering. Additionally, HTTP has no built-in mechanism + to verify the identity of the server you are connecting to. It is + recommended to choose `https` instead of `http`. For more details, see: + https://www.cloudflare.com/learning/ssl/why-is-http-not-secure. + :param LoadBalancerPoolClientAuthenticationPrototype client_authentication: + (optional) The client authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. + :param List[LoadBalancerPoolMemberPrototype] members: (optional) The + members for this load balancer pool. For load balancers in the `network` + family, the same `port` and `target` tuple cannot be shared by a pool + member of any other load balancer in the same VPC. + :param str name: (optional) The name for this load balancer pool. The name + must not be used by another pool for the load balancer. If unspecified, the + name will be a hyphenated list of randomly-selected words. + :param str proxy_protocol: (optional) The PROXY protocol setting for this + pool: + - `v1`: Enabled with version 1 (human-readable header format) + - `v2`: Enabled with version 2 (binary header format) + - `disabled`: Disabled + For load balancers in the `network` family, this property must be + `disabled`. + :param LoadBalancerPoolServerAuthenticationPrototype server_authentication: + (optional) The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. + :param LoadBalancerPoolSessionPersistencePrototype session_persistence: + (optional) The session persistence of this pool. If specified, the load + balancer must have + `source_ip_session_persistence_supported` set to `true` in its profile. + If unspecified, session persistence will be disabled, and traffic will be + distributed + across members of the pool. + """ + self.algorithm = algorithm + self.client_authentication = client_authentication + self.health_monitor = health_monitor + self.members = members + self.name = name + self.protocol = protocol + self.proxy_protocol = proxy_protocol + self.server_authentication = server_authentication + self.session_persistence = session_persistence + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolPrototypeLoadBalancerContext': + """Initialize a LoadBalancerPoolPrototypeLoadBalancerContext object from a json dictionary.""" + args = {} + if (algorithm := _dict.get('algorithm')) is not None: + args['algorithm'] = algorithm + else: + raise ValueError('Required property \'algorithm\' not present in LoadBalancerPoolPrototypeLoadBalancerContext JSON') + if (client_authentication := _dict.get('client_authentication')) is not None: + args['client_authentication'] = LoadBalancerPoolClientAuthenticationPrototype.from_dict(client_authentication) + if (health_monitor := _dict.get('health_monitor')) is not None: + args['health_monitor'] = health_monitor + else: + raise ValueError('Required property \'health_monitor\' not present in LoadBalancerPoolPrototypeLoadBalancerContext JSON') + if (members := _dict.get('members')) is not None: + args['members'] = [LoadBalancerPoolMemberPrototype.from_dict(v) for v in members] + if (name := _dict.get('name')) is not None: + args['name'] = name + if (protocol := _dict.get('protocol')) is not None: + args['protocol'] = protocol + else: + raise ValueError('Required property \'protocol\' not present in LoadBalancerPoolPrototypeLoadBalancerContext JSON') + if (proxy_protocol := _dict.get('proxy_protocol')) is not None: + args['proxy_protocol'] = proxy_protocol + if (server_authentication := _dict.get('server_authentication')) is not None: + args['server_authentication'] = LoadBalancerPoolServerAuthenticationPrototype.from_dict(server_authentication) + if (session_persistence := _dict.get('session_persistence')) is not None: + args['session_persistence'] = LoadBalancerPoolSessionPersistencePrototype.from_dict(session_persistence) + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolPrototypeLoadBalancerContext object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'algorithm') and self.algorithm is not None: + _dict['algorithm'] = self.algorithm + if hasattr(self, 'client_authentication') and self.client_authentication is not None: + if isinstance(self.client_authentication, dict): + _dict['client_authentication'] = self.client_authentication + else: + _dict['client_authentication'] = self.client_authentication.to_dict() + if hasattr(self, 'health_monitor') and self.health_monitor is not None: + if isinstance(self.health_monitor, dict): + _dict['health_monitor'] = self.health_monitor + else: + _dict['health_monitor'] = self.health_monitor.to_dict() + if hasattr(self, 'members') and self.members is not None: + members_list = [] + for v in self.members: + if isinstance(v, dict): + members_list.append(v) + else: + members_list.append(v.to_dict()) + _dict['members'] = members_list + if hasattr(self, 'name') and self.name is not None: + _dict['name'] = self.name + if hasattr(self, 'protocol') and self.protocol is not None: + _dict['protocol'] = self.protocol + if hasattr(self, 'proxy_protocol') and self.proxy_protocol is not None: + _dict['proxy_protocol'] = self.proxy_protocol + if hasattr(self, 'server_authentication') and self.server_authentication is not None: + if isinstance(self.server_authentication, dict): + _dict['server_authentication'] = self.server_authentication + else: + _dict['server_authentication'] = self.server_authentication.to_dict() + if hasattr(self, 'session_persistence') and self.session_persistence is not None: + if isinstance(self.session_persistence, dict): + _dict['session_persistence'] = self.session_persistence + else: + _dict['session_persistence'] = self.session_persistence.to_dict() + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolPrototypeLoadBalancerContext object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolPrototypeLoadBalancerContext') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolPrototypeLoadBalancerContext') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class AlgorithmEnum(str, Enum): + """ + The load balancing algorithm. The `least_connections` algorithm is only supported + for load balancers that have `availability` with value `subnet` in the profile. + """ + + LEAST_CONNECTIONS = 'least_connections' + ROUND_ROBIN = 'round_robin' + WEIGHTED_ROUND_ROBIN = 'weighted_round_robin' + + + class ProtocolEnum(str, Enum): + """ + The protocol used for this load balancer pool. Load balancers in the `network` + family support `tcp` and `udp` (if `udp_supported` is `true`). Load balancers in + the + `application` family support `tcp`, `http`, and `https`. + **NOTE**: HTTP sends data in plain text, making it vulnerable to eavesdropping and + tampering. Additionally, HTTP has no built-in mechanism to verify the identity of + the server you are connecting to. It is recommended to choose `https` instead of + `http`. For more details, see: + https://www.cloudflare.com/learning/ssl/why-is-http-not-secure. + """ + + HTTP = 'http' + HTTPS = 'https' + TCP = 'tcp' + UDP = 'udp' + + + class ProxyProtocolEnum(str, Enum): + """ + The PROXY protocol setting for this pool: + - `v1`: Enabled with version 1 (human-readable header format) + - `v2`: Enabled with version 2 (binary header format) + - `disabled`: Disabled + For load balancers in the `network` family, this property must be `disabled`. + """ + + DISABLED = 'disabled' + V1 = 'v1' + V2 = 'v2' + + + +class LoadBalancerPoolReference: """ - LoadBalancerPoolPrototypeLoadBalancerContext. + LoadBalancerPoolReference. - :param str algorithm: The load balancing algorithm. The `least_connections` - algorithm is only supported for load balancers that have `availability` with - value `subnet` in the profile. - :param LoadBalancerPoolHealthMonitorPrototype health_monitor: The health monitor - of this pool. - If this pool has a member targeting a load balancer then: - - If the targeted load balancer has multiple subnets, this health monitor will - be - used to direct traffic to the available subnets. - - The health checks spawned by this health monitor will be handled as any other - traffic (that is, subject to the configuration of listeners and pools on the - target - load balancer). - - This health monitor does not affect how pool member health is determined - within the - target load balancer. - For more information, see [Private Path network load balancer frequently asked - questions](https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-faqs#ppnlb-faqs). - :param List[LoadBalancerPoolMemberPrototype] members: (optional) The members for - this load balancer pool. For load balancers in the `network` family, the same - `port` and `target` tuple cannot be shared by a pool member of any other load - balancer in the same VPC. - :param str name: (optional) The name for this load balancer pool. The name must - not be used by another pool for the load balancer. If unspecified, the name will - be a hyphenated list of randomly-selected words. - :param str protocol: The protocol used for this load balancer pool. Load - balancers in the `network` family support `tcp` and `udp` (if `udp_supported` is - `true`). Load balancers in the - `application` family support `tcp`, `http`, and `https`. - :param str proxy_protocol: (optional) The PROXY protocol setting for this pool: - - `v1`: Enabled with version 1 (human-readable header format) - - `v2`: Enabled with version 2 (binary header format) - - `disabled`: Disabled - For load balancers in the `network` family, this property must be `disabled`. - :param LoadBalancerPoolSessionPersistencePrototype session_persistence: - (optional) The session persistence of this pool. If specified, the load balancer - must have - `source_ip_session_persistence_supported` set to `true` in its profile. - If unspecified, session persistence will be disabled, and traffic will be - distributed - across members of the pool. + :param Deleted deleted: (optional) If present, this property indicates the + referenced resource has been deleted, and provides + some supplementary information. + :param str href: The URL for this load balancer pool. + :param str id: The unique identifier for this load balancer pool. + :param str name: The name for this load balancer pool. The name is unique across + all pools for the load balancer. """ def __init__( self, - algorithm: str, - health_monitor: 'LoadBalancerPoolHealthMonitorPrototype', - protocol: str, + href: str, + id: str, + name: str, *, - members: Optional[List['LoadBalancerPoolMemberPrototype']] = None, - name: Optional[str] = None, - proxy_protocol: Optional[str] = None, - session_persistence: Optional['LoadBalancerPoolSessionPersistencePrototype'] = None, + deleted: Optional['Deleted'] = None, ) -> None: """ - Initialize a LoadBalancerPoolPrototypeLoadBalancerContext object. + Initialize a LoadBalancerPoolReference object. - :param str algorithm: The load balancing algorithm. The `least_connections` - algorithm is only supported for load balancers that have `availability` - with value `subnet` in the profile. - :param LoadBalancerPoolHealthMonitorPrototype health_monitor: The health - monitor of this pool. - If this pool has a member targeting a load balancer then: - - If the targeted load balancer has multiple subnets, this health monitor - will be - used to direct traffic to the available subnets. - - The health checks spawned by this health monitor will be handled as any - other - traffic (that is, subject to the configuration of listeners and pools on - the target - load balancer). - - This health monitor does not affect how pool member health is determined - within the - target load balancer. - For more information, see [Private Path network load balancer frequently - asked - questions](https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-faqs#ppnlb-faqs). - :param str protocol: The protocol used for this load balancer pool. Load - balancers in the `network` family support `tcp` and `udp` (if - `udp_supported` is `true`). Load balancers in the - `application` family support `tcp`, `http`, and `https`. - :param List[LoadBalancerPoolMemberPrototype] members: (optional) The - members for this load balancer pool. For load balancers in the `network` - family, the same `port` and `target` tuple cannot be shared by a pool - member of any other load balancer in the same VPC. - :param str name: (optional) The name for this load balancer pool. The name - must not be used by another pool for the load balancer. If unspecified, the - name will be a hyphenated list of randomly-selected words. - :param str proxy_protocol: (optional) The PROXY protocol setting for this - pool: - - `v1`: Enabled with version 1 (human-readable header format) - - `v2`: Enabled with version 2 (binary header format) - - `disabled`: Disabled - For load balancers in the `network` family, this property must be - `disabled`. - :param LoadBalancerPoolSessionPersistencePrototype session_persistence: - (optional) The session persistence of this pool. If specified, the load - balancer must have - `source_ip_session_persistence_supported` set to `true` in its profile. - If unspecified, session persistence will be disabled, and traffic will be - distributed - across members of the pool. + :param str href: The URL for this load balancer pool. + :param str id: The unique identifier for this load balancer pool. + :param str name: The name for this load balancer pool. The name is unique + across all pools for the load balancer. + :param Deleted deleted: (optional) If present, this property indicates the + referenced resource has been deleted, and provides + some supplementary information. """ - self.algorithm = algorithm - self.health_monitor = health_monitor - self.members = members + self.deleted = deleted + self.href = href + self.id = id self.name = name - self.protocol = protocol - self.proxy_protocol = proxy_protocol - self.session_persistence = session_persistence @classmethod - def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolPrototypeLoadBalancerContext': - """Initialize a LoadBalancerPoolPrototypeLoadBalancerContext object from a json dictionary.""" + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolReference': + """Initialize a LoadBalancerPoolReference object from a json dictionary.""" args = {} - if (algorithm := _dict.get('algorithm')) is not None: - args['algorithm'] = algorithm + if (deleted := _dict.get('deleted')) is not None: + args['deleted'] = Deleted.from_dict(deleted) + if (href := _dict.get('href')) is not None: + args['href'] = href else: - raise ValueError('Required property \'algorithm\' not present in LoadBalancerPoolPrototypeLoadBalancerContext JSON') - if (health_monitor := _dict.get('health_monitor')) is not None: - args['health_monitor'] = health_monitor + raise ValueError('Required property \'href\' not present in LoadBalancerPoolReference JSON') + if (id := _dict.get('id')) is not None: + args['id'] = id else: - raise ValueError('Required property \'health_monitor\' not present in LoadBalancerPoolPrototypeLoadBalancerContext JSON') - if (members := _dict.get('members')) is not None: - args['members'] = [LoadBalancerPoolMemberPrototype.from_dict(v) for v in members] + raise ValueError('Required property \'id\' not present in LoadBalancerPoolReference JSON') if (name := _dict.get('name')) is not None: args['name'] = name - if (protocol := _dict.get('protocol')) is not None: - args['protocol'] = protocol else: - raise ValueError('Required property \'protocol\' not present in LoadBalancerPoolPrototypeLoadBalancerContext JSON') - if (proxy_protocol := _dict.get('proxy_protocol')) is not None: - args['proxy_protocol'] = proxy_protocol - if (session_persistence := _dict.get('session_persistence')) is not None: - args['session_persistence'] = LoadBalancerPoolSessionPersistencePrototype.from_dict(session_persistence) + raise ValueError('Required property \'name\' not present in LoadBalancerPoolReference JSON') return cls(**args) @classmethod def _from_dict(cls, _dict): - """Initialize a LoadBalancerPoolPrototypeLoadBalancerContext object from a json dictionary.""" + """Initialize a LoadBalancerPoolReference object from a json dictionary.""" return cls.from_dict(_dict) def to_dict(self) -> Dict: """Return a json dictionary representing this model.""" _dict = {} - if hasattr(self, 'algorithm') and self.algorithm is not None: - _dict['algorithm'] = self.algorithm - if hasattr(self, 'health_monitor') and self.health_monitor is not None: - if isinstance(self.health_monitor, dict): - _dict['health_monitor'] = self.health_monitor + if hasattr(self, 'deleted') and self.deleted is not None: + if isinstance(self.deleted, dict): + _dict['deleted'] = self.deleted else: - _dict['health_monitor'] = self.health_monitor.to_dict() - if hasattr(self, 'members') and self.members is not None: - members_list = [] - for v in self.members: - if isinstance(v, dict): - members_list.append(v) - else: - members_list.append(v.to_dict()) - _dict['members'] = members_list + _dict['deleted'] = self.deleted.to_dict() + if hasattr(self, 'href') and self.href is not None: + _dict['href'] = self.href + if hasattr(self, 'id') and self.id is not None: + _dict['id'] = self.id if hasattr(self, 'name') and self.name is not None: _dict['name'] = self.name - if hasattr(self, 'protocol') and self.protocol is not None: - _dict['protocol'] = self.protocol - if hasattr(self, 'proxy_protocol') and self.proxy_protocol is not None: - _dict['proxy_protocol'] = self.proxy_protocol - if hasattr(self, 'session_persistence') and self.session_persistence is not None: - if isinstance(self.session_persistence, dict): - _dict['session_persistence'] = self.session_persistence - else: - _dict['session_persistence'] = self.session_persistence.to_dict() return _dict def _to_dict(self): @@ -74474,135 +78264,262 @@ def _to_dict(self): return self.to_dict() def __str__(self) -> str: - """Return a `str` version of this LoadBalancerPoolPrototypeLoadBalancerContext object.""" + """Return a `str` version of this LoadBalancerPoolReference object.""" return json.dumps(self.to_dict(), indent=2) - def __eq__(self, other: 'LoadBalancerPoolPrototypeLoadBalancerContext') -> bool: + def __eq__(self, other: 'LoadBalancerPoolReference') -> bool: """Return `true` when self and other are equal, false otherwise.""" if not isinstance(other, self.__class__): return False return self.__dict__ == other.__dict__ - def __ne__(self, other: 'LoadBalancerPoolPrototypeLoadBalancerContext') -> bool: + def __ne__(self, other: 'LoadBalancerPoolReference') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other - class AlgorithmEnum(str, Enum): - """ - The load balancing algorithm. The `least_connections` algorithm is only supported - for load balancers that have `availability` with value `subnet` in the profile. - """ - LEAST_CONNECTIONS = 'least_connections' - ROUND_ROBIN = 'round_robin' - WEIGHTED_ROUND_ROBIN = 'weighted_round_robin' +class LoadBalancerPoolServerAuthentication: + """ + The server authentication used for this pool. + This property will be absent if the `pool.protocol` is not `https`. + :param CertificateInstanceReference certificate_authority: (optional) The + backend server certificate authority instance used for server + certificate verification. + :param bool verify_certificate: If set to `true`, the backend server certificate + is verified. + """ - class ProtocolEnum(str, Enum): + def __init__( + self, + verify_certificate: bool, + *, + certificate_authority: Optional['CertificateInstanceReference'] = None, + ) -> None: """ - The protocol used for this load balancer pool. Load balancers in the `network` - family support `tcp` and `udp` (if `udp_supported` is `true`). Load balancers in - the - `application` family support `tcp`, `http`, and `https`. + Initialize a LoadBalancerPoolServerAuthentication object. + + :param bool verify_certificate: If set to `true`, the backend server + certificate is verified. + :param CertificateInstanceReference certificate_authority: (optional) The + backend server certificate authority instance used for server + certificate verification. """ + self.certificate_authority = certificate_authority + self.verify_certificate = verify_certificate - HTTP = 'http' - HTTPS = 'https' - TCP = 'tcp' - UDP = 'udp' + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolServerAuthentication': + """Initialize a LoadBalancerPoolServerAuthentication object from a json dictionary.""" + args = {} + if (certificate_authority := _dict.get('certificate_authority')) is not None: + args['certificate_authority'] = CertificateInstanceReference.from_dict(certificate_authority) + if (verify_certificate := _dict.get('verify_certificate')) is not None: + args['verify_certificate'] = verify_certificate + else: + raise ValueError('Required property \'verify_certificate\' not present in LoadBalancerPoolServerAuthentication JSON') + return cls(**args) + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolServerAuthentication object from a json dictionary.""" + return cls.from_dict(_dict) - class ProxyProtocolEnum(str, Enum): + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_authority') and self.certificate_authority is not None: + if isinstance(self.certificate_authority, dict): + _dict['certificate_authority'] = self.certificate_authority + else: + _dict['certificate_authority'] = self.certificate_authority.to_dict() + if hasattr(self, 'verify_certificate') and self.verify_certificate is not None: + _dict['verify_certificate'] = self.verify_certificate + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolServerAuthentication object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolServerAuthentication') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolServerAuthentication') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolServerAuthenticationPatch: + """ + The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must have a + `protocol` of `https`. + Specify `null` to remove an existing server authentication. + + :param CertificateInstanceIdentity certificate_authority: (optional) The backend + server certificate authority instance to use for server + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool must + have a `protocol` of `https`. + If specified, `verify_certificate` must be `true`. + :param bool verify_certificate: (optional) Indicates whether server certificate + verification is enabled. + If set to `true`, the backend server certificate is verified by: + - `certificate_authority`, if specified. + - the system default certificate authorities, if `certificate_authority` + is not specified. + """ + + def __init__( + self, + *, + certificate_authority: Optional['CertificateInstanceIdentity'] = None, + verify_certificate: Optional[bool] = None, + ) -> None: """ - The PROXY protocol setting for this pool: - - `v1`: Enabled with version 1 (human-readable header format) - - `v2`: Enabled with version 2 (binary header format) - - `disabled`: Disabled - For load balancers in the `network` family, this property must be `disabled`. + Initialize a LoadBalancerPoolServerAuthenticationPatch object. + + :param CertificateInstanceIdentity certificate_authority: (optional) The + backend server certificate authority instance to use for server + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. + If specified, `verify_certificate` must be `true`. + :param bool verify_certificate: (optional) Indicates whether server + certificate verification is enabled. + If set to `true`, the backend server certificate is verified by: + - `certificate_authority`, if specified. + - the system default certificate authorities, if `certificate_authority` + is not specified. """ + self.certificate_authority = certificate_authority + self.verify_certificate = verify_certificate - DISABLED = 'disabled' - V1 = 'v1' - V2 = 'v2' + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolServerAuthenticationPatch': + """Initialize a LoadBalancerPoolServerAuthenticationPatch object from a json dictionary.""" + args = {} + if (certificate_authority := _dict.get('certificate_authority')) is not None: + args['certificate_authority'] = certificate_authority + if (verify_certificate := _dict.get('verify_certificate')) is not None: + args['verify_certificate'] = verify_certificate + return cls(**args) + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolServerAuthenticationPatch object from a json dictionary.""" + return cls.from_dict(_dict) + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'certificate_authority') and self.certificate_authority is not None: + if isinstance(self.certificate_authority, dict): + _dict['certificate_authority'] = self.certificate_authority + else: + _dict['certificate_authority'] = self.certificate_authority.to_dict() + if hasattr(self, 'verify_certificate') and self.verify_certificate is not None: + _dict['verify_certificate'] = self.verify_certificate + return _dict -class LoadBalancerPoolReference: + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolServerAuthenticationPatch object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolServerAuthenticationPatch') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolServerAuthenticationPatch') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + +class LoadBalancerPoolServerAuthenticationPrototype: """ - LoadBalancerPoolReference. + The server authentication to use for this pool. + Supported by load balancers with `mtls_supported` set to `true`. The pool must have a + `protocol` of `https`. - :param Deleted deleted: (optional) If present, this property indicates the - referenced resource has been deleted, and provides - some supplementary information. - :param str href: The URL for this load balancer pool. - :param str id: The unique identifier for this load balancer pool. - :param str name: The name for this load balancer pool. The name is unique across - all pools for the load balancer. + :param CertificateInstanceIdentity certificate_authority: (optional) The backend + server certificate authority instance to use for server + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool must + have a `protocol` of `https`. + If specified, `verify_certificate` must be `true`. + :param bool verify_certificate: (optional) Indicates whether server certificate + verification is enabled. + If set to `true`, the backend server certificate is verified by: + - `certificate_authority`, if specified. + - the system default certificate authorities, if `certificate_authority` + is not specified. """ def __init__( self, - href: str, - id: str, - name: str, *, - deleted: Optional['Deleted'] = None, + certificate_authority: Optional['CertificateInstanceIdentity'] = None, + verify_certificate: Optional[bool] = None, ) -> None: """ - Initialize a LoadBalancerPoolReference object. + Initialize a LoadBalancerPoolServerAuthenticationPrototype object. - :param str href: The URL for this load balancer pool. - :param str id: The unique identifier for this load balancer pool. - :param str name: The name for this load balancer pool. The name is unique - across all pools for the load balancer. - :param Deleted deleted: (optional) If present, this property indicates the - referenced resource has been deleted, and provides - some supplementary information. + :param CertificateInstanceIdentity certificate_authority: (optional) The + backend server certificate authority instance to use for server + certificate verification. + Supported by load balancers with `mtls_supported` set to `true`. The pool + must + have a `protocol` of `https`. + If specified, `verify_certificate` must be `true`. + :param bool verify_certificate: (optional) Indicates whether server + certificate verification is enabled. + If set to `true`, the backend server certificate is verified by: + - `certificate_authority`, if specified. + - the system default certificate authorities, if `certificate_authority` + is not specified. """ - self.deleted = deleted - self.href = href - self.id = id - self.name = name + self.certificate_authority = certificate_authority + self.verify_certificate = verify_certificate @classmethod - def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolReference': - """Initialize a LoadBalancerPoolReference object from a json dictionary.""" + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolServerAuthenticationPrototype': + """Initialize a LoadBalancerPoolServerAuthenticationPrototype object from a json dictionary.""" args = {} - if (deleted := _dict.get('deleted')) is not None: - args['deleted'] = Deleted.from_dict(deleted) - if (href := _dict.get('href')) is not None: - args['href'] = href - else: - raise ValueError('Required property \'href\' not present in LoadBalancerPoolReference JSON') - if (id := _dict.get('id')) is not None: - args['id'] = id - else: - raise ValueError('Required property \'id\' not present in LoadBalancerPoolReference JSON') - if (name := _dict.get('name')) is not None: - args['name'] = name - else: - raise ValueError('Required property \'name\' not present in LoadBalancerPoolReference JSON') + if (certificate_authority := _dict.get('certificate_authority')) is not None: + args['certificate_authority'] = certificate_authority + if (verify_certificate := _dict.get('verify_certificate')) is not None: + args['verify_certificate'] = verify_certificate return cls(**args) @classmethod def _from_dict(cls, _dict): - """Initialize a LoadBalancerPoolReference object from a json dictionary.""" + """Initialize a LoadBalancerPoolServerAuthenticationPrototype object from a json dictionary.""" return cls.from_dict(_dict) def to_dict(self) -> Dict: """Return a json dictionary representing this model.""" _dict = {} - if hasattr(self, 'deleted') and self.deleted is not None: - if isinstance(self.deleted, dict): - _dict['deleted'] = self.deleted + if hasattr(self, 'certificate_authority') and self.certificate_authority is not None: + if isinstance(self.certificate_authority, dict): + _dict['certificate_authority'] = self.certificate_authority else: - _dict['deleted'] = self.deleted.to_dict() - if hasattr(self, 'href') and self.href is not None: - _dict['href'] = self.href - if hasattr(self, 'id') and self.id is not None: - _dict['id'] = self.id - if hasattr(self, 'name') and self.name is not None: - _dict['name'] = self.name + _dict['certificate_authority'] = self.certificate_authority.to_dict() + if hasattr(self, 'verify_certificate') and self.verify_certificate is not None: + _dict['verify_certificate'] = self.verify_certificate return _dict def _to_dict(self): @@ -74610,16 +78527,16 @@ def _to_dict(self): return self.to_dict() def __str__(self) -> str: - """Return a `str` version of this LoadBalancerPoolReference object.""" + """Return a `str` version of this LoadBalancerPoolServerAuthenticationPrototype object.""" return json.dumps(self.to_dict(), indent=2) - def __eq__(self, other: 'LoadBalancerPoolReference') -> bool: + def __eq__(self, other: 'LoadBalancerPoolServerAuthenticationPrototype') -> bool: """Return `true` when self and other are equal, false otherwise.""" if not isinstance(other, self.__class__): return False return self.__dict__ == other.__dict__ - def __ne__(self, other: 'LoadBalancerPoolReference') -> bool: + def __ne__(self, other: 'LoadBalancerPoolServerAuthenticationPrototype') -> bool: """Return `true` when self and other are not equal, false otherwise.""" return not self == other @@ -74895,16 +78812,20 @@ class LoadBalancerProfile: LoadBalancerProfile. :param LoadBalancerProfileAccessModes access_modes: + :param LoadBalancerProfileAdvancedHealthCheckSupported + advanced_health_checks_supported: :param LoadBalancerProfileAvailability availability: :param LoadBalancerProfileFailsafePolicyActions failsafe_policy_actions: :param str family: The product family this load balancer profile belongs to. The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param LoadBalancerProfileFQDNSupported fqdn_pool_members_supported: :param str href: The URL for this load balancer profile. :param LoadBalancerProfileInstanceGroupsSupported instance_groups_supported: :param LoadBalancerProfileLoggingSupported logging_supported: Indicates which logging type(s) are supported for a load balancer with this profile. + :param LoadBalancerProfileMtlsSupported mtls_supported: :param str name: The globally unique name for this load balancer profile. :param LoadBalancerProfileRouteModeSupported route_mode_supported: :param LoadBalancerProfileSecurityGroupsSupported security_groups_supported: @@ -74919,12 +78840,15 @@ class LoadBalancerProfile: def __init__( self, access_modes: 'LoadBalancerProfileAccessModes', + advanced_health_checks_supported: 'LoadBalancerProfileAdvancedHealthCheckSupported', availability: 'LoadBalancerProfileAvailability', failsafe_policy_actions: 'LoadBalancerProfileFailsafePolicyActions', family: str, + fqdn_pool_members_supported: 'LoadBalancerProfileFQDNSupported', href: str, instance_groups_supported: 'LoadBalancerProfileInstanceGroupsSupported', logging_supported: 'LoadBalancerProfileLoggingSupported', + mtls_supported: 'LoadBalancerProfileMtlsSupported', name: str, route_mode_supported: 'LoadBalancerProfileRouteModeSupported', security_groups_supported: 'LoadBalancerProfileSecurityGroupsSupported', @@ -74937,6 +78861,8 @@ def __init__( Initialize a LoadBalancerProfile object. :param LoadBalancerProfileAccessModes access_modes: + :param LoadBalancerProfileAdvancedHealthCheckSupported + advanced_health_checks_supported: :param LoadBalancerProfileAvailability availability: :param LoadBalancerProfileFailsafePolicyActions failsafe_policy_actions: :param str family: The product family this load balancer profile belongs @@ -74944,11 +78870,13 @@ def __init__( The enumerated values for this property may [expand](https://cloud.ibm.com/apidocs/vpc#property-value-expansion) in the future. + :param LoadBalancerProfileFQDNSupported fqdn_pool_members_supported: :param str href: The URL for this load balancer profile. :param LoadBalancerProfileInstanceGroupsSupported instance_groups_supported: :param LoadBalancerProfileLoggingSupported logging_supported: Indicates which logging type(s) are supported for a load balancer with this profile. + :param LoadBalancerProfileMtlsSupported mtls_supported: :param str name: The globally unique name for this load balancer profile. :param LoadBalancerProfileRouteModeSupported route_mode_supported: :param LoadBalancerProfileSecurityGroupsSupported @@ -74963,12 +78891,15 @@ def __init__( :param LoadBalancerProfileUDPSupported udp_supported: """ self.access_modes = access_modes + self.advanced_health_checks_supported = advanced_health_checks_supported self.availability = availability self.failsafe_policy_actions = failsafe_policy_actions self.family = family + self.fqdn_pool_members_supported = fqdn_pool_members_supported self.href = href self.instance_groups_supported = instance_groups_supported self.logging_supported = logging_supported + self.mtls_supported = mtls_supported self.name = name self.route_mode_supported = route_mode_supported self.security_groups_supported = security_groups_supported @@ -74985,6 +78916,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfile': args['access_modes'] = LoadBalancerProfileAccessModes.from_dict(access_modes) else: raise ValueError('Required property \'access_modes\' not present in LoadBalancerProfile JSON') + if (advanced_health_checks_supported := _dict.get('advanced_health_checks_supported')) is not None: + args['advanced_health_checks_supported'] = advanced_health_checks_supported + else: + raise ValueError('Required property \'advanced_health_checks_supported\' not present in LoadBalancerProfile JSON') if (availability := _dict.get('availability')) is not None: args['availability'] = availability else: @@ -74997,6 +78932,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfile': args['family'] = family else: raise ValueError('Required property \'family\' not present in LoadBalancerProfile JSON') + if (fqdn_pool_members_supported := _dict.get('fqdn_pool_members_supported')) is not None: + args['fqdn_pool_members_supported'] = fqdn_pool_members_supported + else: + raise ValueError('Required property \'fqdn_pool_members_supported\' not present in LoadBalancerProfile JSON') if (href := _dict.get('href')) is not None: args['href'] = href else: @@ -75009,6 +78948,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfile': args['logging_supported'] = LoadBalancerProfileLoggingSupported.from_dict(logging_supported) else: raise ValueError('Required property \'logging_supported\' not present in LoadBalancerProfile JSON') + if (mtls_supported := _dict.get('mtls_supported')) is not None: + args['mtls_supported'] = mtls_supported + else: + raise ValueError('Required property \'mtls_supported\' not present in LoadBalancerProfile JSON') if (name := _dict.get('name')) is not None: args['name'] = name else: @@ -75052,6 +78995,11 @@ def to_dict(self) -> Dict: _dict['access_modes'] = self.access_modes else: _dict['access_modes'] = self.access_modes.to_dict() + if hasattr(self, 'advanced_health_checks_supported') and self.advanced_health_checks_supported is not None: + if isinstance(self.advanced_health_checks_supported, dict): + _dict['advanced_health_checks_supported'] = self.advanced_health_checks_supported + else: + _dict['advanced_health_checks_supported'] = self.advanced_health_checks_supported.to_dict() if hasattr(self, 'availability') and self.availability is not None: if isinstance(self.availability, dict): _dict['availability'] = self.availability @@ -75064,6 +79012,11 @@ def to_dict(self) -> Dict: _dict['failsafe_policy_actions'] = self.failsafe_policy_actions.to_dict() if hasattr(self, 'family') and self.family is not None: _dict['family'] = self.family + if hasattr(self, 'fqdn_pool_members_supported') and self.fqdn_pool_members_supported is not None: + if isinstance(self.fqdn_pool_members_supported, dict): + _dict['fqdn_pool_members_supported'] = self.fqdn_pool_members_supported + else: + _dict['fqdn_pool_members_supported'] = self.fqdn_pool_members_supported.to_dict() if hasattr(self, 'href') and self.href is not None: _dict['href'] = self.href if hasattr(self, 'instance_groups_supported') and self.instance_groups_supported is not None: @@ -75076,6 +79029,11 @@ def to_dict(self) -> Dict: _dict['logging_supported'] = self.logging_supported else: _dict['logging_supported'] = self.logging_supported.to_dict() + if hasattr(self, 'mtls_supported') and self.mtls_supported is not None: + if isinstance(self.mtls_supported, dict): + _dict['mtls_supported'] = self.mtls_supported + else: + _dict['mtls_supported'] = self.mtls_supported.to_dict() if hasattr(self, 'name') and self.name is not None: _dict['name'] = self.name if hasattr(self, 'route_mode_supported') and self.route_mode_supported is not None: @@ -75239,6 +79197,25 @@ class ValuesEnum(str, Enum): +class LoadBalancerProfileAdvancedHealthCheckSupported: + """ + LoadBalancerProfileAdvancedHealthCheckSupported. + + """ + + def __init__( + self, + ) -> None: + """ + Initialize a LoadBalancerProfileAdvancedHealthCheckSupported object. + + """ + msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( + ", ".join(['LoadBalancerProfileAdvancedHealthCheckSupportedFixed', 'LoadBalancerProfileAdvancedHealthCheckSupportedDependent']) + ) + raise Exception(msg) + + class LoadBalancerProfileAvailability: """ LoadBalancerProfileAvailability. @@ -75375,6 +79352,25 @@ def __ne__(self, other: 'LoadBalancerProfileCollection') -> bool: return not self == other +class LoadBalancerProfileFQDNSupported: + """ + LoadBalancerProfileFQDNSupported. + + """ + + def __init__( + self, + ) -> None: + """ + Initialize a LoadBalancerProfileFQDNSupported object. + + """ + msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( + ", ".join(['LoadBalancerProfileFQDNSupportedFixed', 'LoadBalancerProfileFQDNSupportedDependent']) + ) + raise Exception(msg) + + class LoadBalancerProfileFailsafePolicyActions: """ LoadBalancerProfileFailsafePolicyActions. @@ -75511,6 +79507,25 @@ class TypeEnum(str, Enum): +class LoadBalancerProfileMtlsSupported: + """ + LoadBalancerProfileMtlsSupported. + + """ + + def __init__( + self, + ) -> None: + """ + Initialize a LoadBalancerProfileMtlsSupported object. + + """ + msg = "Cannot instantiate base class. Instead, instantiate one of the defined subclasses: {0}".format( + ", ".join(['LoadBalancerProfileMtlsSupportedFixed', 'LoadBalancerProfileMtlsSupportedDependent']) + ) + raise Exception(msg) + + class LoadBalancerProfileReference: """ LoadBalancerProfileReference. @@ -93178,6 +97193,7 @@ class SharePatch: mount target control access to the mount target. - `vpc`: All clients in the VPC for a mount target have access to the mount target. + The `vpc` access control mode has been deprecated. Use `security_group` instead. For this property to be changed, the share must have no mount targets, `replication_role` must be `none` and `accessor_binding_role` must not be `accessor`. @@ -93248,6 +97264,8 @@ def __init__( mount target control access to the mount target. - `vpc`: All clients in the VPC for a mount target have access to the mount target. + The `vpc` access control mode has been deprecated. Use `security_group` + instead. For this property to be changed, the share must have no mount targets, `replication_role` must be `none` and `accessor_binding_role` must not be `accessor`. @@ -93396,6 +97414,7 @@ class AccessControlModeEnum(str, Enum): mount target control access to the mount target. - `vpc`: All clients in the VPC for a mount target have access to the mount target. + The `vpc` access control mode has been deprecated. Use `security_group` instead. For this property to be changed, the share must have no mount targets, `replication_role` must be `none` and `accessor_binding_role` must not be `accessor`. @@ -95928,7 +99947,11 @@ class SnapshotAllowedUse: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -95962,7 +99985,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -96046,7 +100075,11 @@ class SnapshotAllowedUsePatch: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -96084,7 +100117,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -96165,7 +100204,11 @@ class SnapshotAllowedUsePrototype: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint. + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -96205,7 +100248,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint. + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -96679,6 +100728,10 @@ class SnapshotConsistencyGroup: """ SnapshotConsistencyGroup. + :param BackupPolicyJobReference backup_policy_job: (optional) If present, the + backup policy job that created this snapshot consistency group. + Snapshot consistency groups with the same backup policy job identifier represent + snapshots of the same instance across different storage generations. :param BackupPolicyPlanReference backup_policy_plan: (optional) If present, the backup policy plan which created this snapshot consistency group. :param datetime created_at: The date and time that this snapshot consistency @@ -96718,6 +100771,7 @@ def __init__( service_tags: List[str], snapshots: List['SnapshotReference'], *, + backup_policy_job: Optional['BackupPolicyJobReference'] = None, backup_policy_plan: Optional['BackupPolicyPlanReference'] = None, ) -> None: """ @@ -96744,9 +100798,15 @@ def __init__( :param List[SnapshotReference] snapshots: The member snapshots that are data-consistent with respect to captured time. (may be [deleted](https://cloud.ibm.com/apidocs/vpc#deleted-resources)). + :param BackupPolicyJobReference backup_policy_job: (optional) If present, + the backup policy job that created this snapshot consistency group. + Snapshot consistency groups with the same backup policy job identifier + represent + snapshots of the same instance across different storage generations. :param BackupPolicyPlanReference backup_policy_plan: (optional) If present, the backup policy plan which created this snapshot consistency group. """ + self.backup_policy_job = backup_policy_job self.backup_policy_plan = backup_policy_plan self.created_at = created_at self.crn = crn @@ -96764,6 +100824,8 @@ def __init__( def from_dict(cls, _dict: Dict) -> 'SnapshotConsistencyGroup': """Initialize a SnapshotConsistencyGroup object from a json dictionary.""" args = {} + if (backup_policy_job := _dict.get('backup_policy_job')) is not None: + args['backup_policy_job'] = BackupPolicyJobReference.from_dict(backup_policy_job) if (backup_policy_plan := _dict.get('backup_policy_plan')) is not None: args['backup_policy_plan'] = BackupPolicyPlanReference.from_dict(backup_policy_plan) if (created_at := _dict.get('created_at')) is not None: @@ -96820,6 +100882,11 @@ def _from_dict(cls, _dict): def to_dict(self) -> Dict: """Return a json dictionary representing this model.""" _dict = {} + if hasattr(self, 'backup_policy_job') and self.backup_policy_job is not None: + if isinstance(self.backup_policy_job, dict): + _dict['backup_policy_job'] = self.backup_policy_job + else: + _dict['backup_policy_job'] = self.backup_policy_job.to_dict() if hasattr(self, 'backup_policy_plan') and self.backup_policy_plan is not None: if isinstance(self.backup_policy_plan, dict): _dict['backup_policy_plan'] = self.backup_policy_plan @@ -109356,7 +113423,11 @@ class VolumeAllowedUse: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -109390,7 +113461,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -109474,7 +113551,11 @@ class VolumeAllowedUsePatch: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -109511,7 +113592,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -109592,7 +113679,11 @@ class VolumeAllowedUsePrototype: - `gpu.count` (integer): The number of GPUs - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is enabled + - `metadata_service.protocol` (string): The communication protocol used for the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ def __init__( @@ -109631,7 +113722,13 @@ def __init__( - `gpu.manufacturer` (string): The GPU manufacturer - `gpu.memory` (integer): The overall amount of GPU memory in GiB (gibibytes) - - `gpu.model` (string): The GPU model. + - `gpu.model` (string): The GPU model + - `metadata_service.enabled` (boolean): Whether the metadata service is + enabled + - `metadata_service.protocol` (string): The communication protocol used for + the + metadata service endpoint + - `vcpu.count` (integer): The number of virtual CPUs. """ self.api_version = api_version self.bare_metal_server = bare_metal_server @@ -109961,7 +114058,8 @@ def __ne__(self, other: 'VolumeAttachmentCollection') -> bool: class VolumeAttachmentDevice: """ - VolumeAttachmentDevice. + The configuration for the volume as a device in the instance operating system. + This property may be absent if the volume attachment's `status` is not `attached`. :param str id: A unique identifier for the device which is exposed to the instance operating system. @@ -112776,9 +116874,14 @@ class VolumePrototypeInstanceByImageContext: `capacity`](https://cloud.ibm.com/docs/vpc?topic=vpc-block-storage-profiles&interface=api). :param int capacity: (optional) The capacity to use for the volume (in gigabytes). The specified value must be at least the image's - `minimum_provisioned_size`, at most 250 gigabytes, and within the - `boot_capacity` range of the volume's profile. - If unspecified, the capacity will be the image's `minimum_provisioned_size`. + `minimum_provisioned_size`, at most 250 gigabytes for + `storage_generation: 1` or at most 32,000 gigabytes for `storage_generation: 2`, + and within the `boot_capacity` range of the volume's profile. + If unspecified, the capacity will depend on the image: + - When using a system-provided image, 100 gigabytes or the + `minimum_provisioned_size` + of the image, whichever is larger. + - When using a custom image, the `minimum_provisioned_size` of the image. :param EncryptionKeyIdentity encryption_key: (optional) The root key to use to wrap the data encryption key for the volume. If unspecified, the `encryption` type for the volume will be `provider_managed`. @@ -112838,10 +116941,15 @@ def __init__( `capacity`](https://cloud.ibm.com/docs/vpc?topic=vpc-block-storage-profiles&interface=api). :param int capacity: (optional) The capacity to use for the volume (in gigabytes). The specified value must be at least the image's - `minimum_provisioned_size`, at most 250 gigabytes, and within the - `boot_capacity` range of the volume's profile. - If unspecified, the capacity will be the image's - `minimum_provisioned_size`. + `minimum_provisioned_size`, at most 250 gigabytes for + `storage_generation: 1` or at most 32,000 gigabytes for + `storage_generation: 2`, and within the `boot_capacity` range of the + volume's profile. + If unspecified, the capacity will depend on the image: + - When using a system-provided image, 100 gigabytes or the + `minimum_provisioned_size` + of the image, whichever is larger. + - When using a custom image, the `minimum_provisioned_size` of the image. :param EncryptionKeyIdentity encryption_key: (optional) The root key to use to wrap the data encryption key for the volume. If unspecified, the `encryption` type for the volume will be @@ -112977,8 +117085,9 @@ class VolumePrototypeInstanceBySourceSnapshotContext: `capacity`](https://cloud.ibm.com/docs/vpc?topic=vpc-block-storage-profiles&interface=api). :param int capacity: (optional) The capacity to use for the volume (in gigabytes). The specified value must be at least the snapshot's - `minimum_capacity`, at most 250 gigabytes, and within the - `boot_capacity` range of the volume's profile. + `minimum_capacity`, at most 250 gigabytes for + `storage_generation: 1` or at most 32,000 gigabytes for `storage_generation: 2`, + and within the `boot_capacity` range of the volume's profile. :param EncryptionKeyIdentity encryption_key: (optional) The root key to use to wrap the data encryption key for the volume. If unspecified, the `encryption` type for the volume will be `provider_managed`. @@ -113050,8 +117159,10 @@ def __init__( `capacity`](https://cloud.ibm.com/docs/vpc?topic=vpc-block-storage-profiles&interface=api). :param int capacity: (optional) The capacity to use for the volume (in gigabytes). The specified value must be at least the snapshot's - `minimum_capacity`, at most 250 gigabytes, and within the - `boot_capacity` range of the volume's profile. + `minimum_capacity`, at most 250 gigabytes for + `storage_generation: 1` or at most 32,000 gigabytes for + `storage_generation: 2`, and within the `boot_capacity` range of the + volume's profile. :param EncryptionKeyIdentity encryption_key: (optional) The root key to use to wrap the data encryption key for the volume. If unspecified, the `encryption` type for the volume will be @@ -115368,8 +119479,9 @@ class BackupPolicyPrototypeBackupPolicyMatchResourceTypeInstancePrototype(Backup :param str match_resource_type: The resource type this backup policy will apply to. Resources that have both a matching type and a matching user tag will be subject to the backup policy. - A backup policy of type `instance` will create a backup of all volumes with a - `storage_generation` value of `1` attached to the instance. + If the targeted instance contains volumes with different `storage_generation` + values, a backup policy of type `instance` will create separate backups for each + `storage_generation` present. """ def __init__( @@ -115392,9 +119504,9 @@ def __init__( :param str match_resource_type: The resource type this backup policy will apply to. Resources that have both a matching type and a matching user tag will be subject to the backup policy. - A backup policy of type `instance` will create a backup of all volumes with - a - `storage_generation` value of `1` attached to the instance. + If the targeted instance contains volumes with different + `storage_generation` values, a backup policy of type `instance` will create + separate backups for each `storage_generation` present. :param str name: (optional) The name for this backup policy. The name must not be used by another backup policy in the region. If unspecified, the name will be a hyphenated list of randomly-selected words. @@ -115507,8 +119619,9 @@ class MatchResourceTypeEnum(str, Enum): """ The resource type this backup policy will apply to. Resources that have both a matching type and a matching user tag will be subject to the backup policy. - A backup policy of type `instance` will create a backup of all volumes with a - `storage_generation` value of `1` attached to the instance. + If the targeted instance contains volumes with different `storage_generation` + values, a backup policy of type `instance` will create separate backups for each + `storage_generation` present. """ INSTANCE = 'instance' @@ -135006,7 +139119,7 @@ class TypeEnum(str, Enum): class InstanceProfileVCPUFixed(InstanceProfileVCPU): """ - The VCPU count for an instance with this profile. + The default VCPU count for an instance with this profile. :param str type: The type for this profile field. :param int value: The value for this profile field. @@ -135928,6 +140041,10 @@ class InstancePrototypeInstanceByCatalogOffering(InstancePrototype): future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -135978,6 +140095,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -136054,6 +140172,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136163,6 +140285,10 @@ class InstancePrototypeInstanceByImage(InstancePrototype): future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136207,6 +140333,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -136276,6 +140403,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136384,6 +140515,10 @@ class InstancePrototypeInstanceBySourceSnapshot(InstancePrototype): future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136427,6 +140562,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -136496,6 +140632,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136605,6 +140745,10 @@ class InstancePrototypeInstanceBySourceTemplate(InstancePrototype): future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136668,6 +140812,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -136742,6 +140887,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -136804,6 +140953,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -136850,6 +141000,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceBySourceTemplate': args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -136954,6 +141106,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -137128,6 +141282,10 @@ class InstancePrototypeInstanceByVolume(InstancePrototype): future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -137170,6 +141328,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -137239,6 +141398,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -137523,6 +141686,10 @@ class InstanceTemplatePrototypeInstanceTemplateByCatalogOffering(InstanceTemplat future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -137573,6 +141740,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -137648,6 +141816,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -137756,6 +141928,10 @@ class InstanceTemplatePrototypeInstanceTemplateByImage(InstanceTemplatePrototype future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -137800,6 +141976,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -137868,6 +142045,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -137975,6 +142156,10 @@ class InstanceTemplatePrototypeInstanceTemplateBySourceSnapshot(InstanceTemplate future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -138018,6 +142203,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -138086,6 +142272,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -138194,6 +142384,10 @@ class InstanceTemplatePrototypeInstanceTemplateBySourceTemplate(InstanceTemplate future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -138257,6 +142451,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -138330,6 +142525,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -138392,6 +142591,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -138438,6 +142638,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByS args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -138542,6 +142744,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -138720,6 +142924,10 @@ class InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContext(InstanceT :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -138774,6 +142982,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -138854,6 +143063,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -138966,6 +143179,10 @@ class InstanceTemplateInstanceByImageInstanceTemplateContext(InstanceTemplate): :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -139014,6 +143231,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -139087,6 +143305,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -139199,6 +143421,10 @@ class InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContext(InstanceTe :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -139252,6 +143478,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -139328,6 +143555,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -139878,6 +144109,66 @@ def __ne__(self, other: 'LoadBalancerIdentityById') -> bool: return not self == other +class LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN(LoadBalancerListenerClientAuthenticationCertificateAuthorityPatch): + """ + LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN. + + :param str crn: The CRN for this certificate instance. + """ + + def __init__( + self, + crn: str, + ) -> None: + """ + Initialize a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN object. + + :param str crn: The CRN for this certificate instance. + """ + # pylint: disable=super-init-not-called + self.crn = crn + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN': + """Initialize a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN object from a json dictionary.""" + args = {} + if (crn := _dict.get('crn')) is not None: + args['crn'] = crn + else: + raise ValueError('Required property \'crn\' not present in LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'crn') and self.crn is not None: + _dict['crn'] = self.crn + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityByHref(LoadBalancerListenerDefaultPoolPatch): """ LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityByHref. @@ -141080,6 +145371,18 @@ class LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeHTT If specified, this overrides the pool member port values. :param int timeout: The seconds to wait for a response to a health check. Must be less than `delay`. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype request: + (optional) The HTTP request to use for health checks. If unspecified, a + `request.method` value of + `get` will be used with no `request.headers`. + Supported by load balancers with `advanced_health_checks_supported` set to + `true`. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype response: + (optional) The HTTP response to use for health checks. If unspecified, a + `response.codes` value of + `["200"]` will be used with no `response.body_regex`. + Supported by load balancers with `advanced_health_checks_supported` set to + `true`. :param str type: The protocol type to use for health checks. Load balancers in the `network` family do not support the `https` protocol. :param str url_path: (optional) The health check URL path to use. @@ -141095,6 +145398,8 @@ def __init__( type: str, *, port: Optional[int] = None, + request: Optional['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype'] = None, + response: Optional['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype'] = None, url_path: Optional[str] = None, ) -> None: """ @@ -141109,6 +145414,18 @@ def __init__( Load balancers in the `network` family do not support the `https` protocol. :param int port: (optional) The health check port. If specified, this overrides the pool member port values. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype request: + (optional) The HTTP request to use for health checks. If unspecified, a + `request.method` value of + `get` will be used with no `request.headers`. + Supported by load balancers with `advanced_health_checks_supported` set to + `true`. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype + response: (optional) The HTTP response to use for health checks. If + unspecified, a `response.codes` value of + `["200"]` will be used with no `response.body_regex`. + Supported by load balancers with `advanced_health_checks_supported` set to + `true`. :param str url_path: (optional) The health check URL path to use. Must be in the format of an [origin-form request target](https://tools.ietf.org/html/rfc7230#section-5.3.1). @@ -141118,6 +145435,8 @@ def __init__( self.max_retries = max_retries self.port = port self.timeout = timeout + self.request = request + self.response = response self.type = type self.url_path = url_path @@ -141139,6 +145458,10 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorPrototypeLoadBa args['timeout'] = timeout else: raise ValueError('Required property \'timeout\' not present in LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSPrototype JSON') + if (request := _dict.get('request')) is not None: + args['request'] = request + if (response := _dict.get('response')) is not None: + args['response'] = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype.from_dict(response) if (type := _dict.get('type')) is not None: args['type'] = type else: @@ -141163,6 +145486,16 @@ def to_dict(self) -> Dict: _dict['port'] = self.port if hasattr(self, 'timeout') and self.timeout is not None: _dict['timeout'] = self.timeout + if hasattr(self, 'request') and self.request is not None: + if isinstance(self.request, dict): + _dict['request'] = self.request + else: + _dict['request'] = self.request.to_dict() + if hasattr(self, 'response') and self.response is not None: + if isinstance(self.response, dict): + _dict['response'] = self.response + else: + _dict['response'] = self.response.to_dict() if hasattr(self, 'type') and self.type is not None: _dict['type'] = self.type if hasattr(self, 'url_path') and self.url_path is not None: @@ -141320,6 +145653,8 @@ class LoadBalancerPoolHealthMonitorTypeHTTPHTTPS(LoadBalancerPoolHealthMonitor): :param int port: (optional) The health check port. If present, this overrides the pool member port values. :param int timeout: The seconds to wait for a response to a health check. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest request: + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse response: :param str type: The protocol type used for health checks. :param str url_path: The health check URL path, in the format of an [origin-form request target](https://tools.ietf.org/html/rfc7230#section-5.3.1). @@ -141330,6 +145665,8 @@ def __init__( delay: int, max_retries: int, timeout: int, + request: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest', + response: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse', type: str, url_path: str, *, @@ -141341,6 +145678,8 @@ def __init__( :param int delay: The seconds to wait between health checks. :param int max_retries: The health check max retries. :param int timeout: The seconds to wait for a response to a health check. + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest request: + :param LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse response: :param str type: The protocol type used for health checks. :param str url_path: The health check URL path, in the format of an [origin-form request @@ -141353,6 +145692,8 @@ def __init__( self.max_retries = max_retries self.port = port self.timeout = timeout + self.request = request + self.response = response self.type = type self.url_path = url_path @@ -141374,6 +145715,14 @@ def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPS': args['timeout'] = timeout else: raise ValueError('Required property \'timeout\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPS JSON') + if (request := _dict.get('request')) is not None: + args['request'] = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest.from_dict(request) + else: + raise ValueError('Required property \'request\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPS JSON') + if (response := _dict.get('response')) is not None: + args['response'] = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse.from_dict(response) + else: + raise ValueError('Required property \'response\' not present in LoadBalancerPoolHealthMonitorTypeHTTPHTTPS JSON') if (type := _dict.get('type')) is not None: args['type'] = type else: @@ -141400,6 +145749,16 @@ def to_dict(self) -> Dict: _dict['port'] = self.port if hasattr(self, 'timeout') and self.timeout is not None: _dict['timeout'] = self.timeout + if hasattr(self, 'request') and self.request is not None: + if isinstance(self.request, dict): + _dict['request'] = self.request + else: + _dict['request'] = self.request.to_dict() + if hasattr(self, 'response') and self.response is not None: + if isinstance(self.response, dict): + _dict['response'] = self.response + else: + _dict['response'] = self.response.to_dict() if hasattr(self, 'type') and self.type is not None: _dict['type'] = self.type if hasattr(self, 'url_path') and self.url_path is not None: @@ -141434,6 +145793,225 @@ class TypeEnum(str, Enum): +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype(LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype): + """ + LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype. + + :param List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype] + headers_: (optional) The HTTP request headers to use for health checks. If + empty, health check HTTP requests will not have headers. + Include a `Host` field and its value to enable the `HTTP/1.1` protocol for + health checks. If a `Host` header is not included, `HTTP/1.0` will be used by + default. More than one + `Host` header is not allowed. + A header must not exceed 1000 characters, and all headers combined must not + exceed 4000 characters. + :param str method: (optional) The HTTP request method to use for health checks. + """ + + def __init__( + self, + *, + headers_: Optional[List['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype']] = None, + method: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype object. + + :param + List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype] + headers_: (optional) The HTTP request headers to use for health checks. If + empty, health check HTTP requests will not have headers. + Include a `Host` field and its value to enable the `HTTP/1.1` protocol for + health checks. If a `Host` header is not included, `HTTP/1.0` will be used + by default. More than one + `Host` header is not allowed. + A header must not exceed 1000 characters, and all headers combined must not + exceed 4000 characters. + :param str method: (optional) The HTTP request method to use for health + checks. + """ + # pylint: disable=super-init-not-called + self.headers_ = headers_ + self.method = method + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype object from a json dictionary.""" + args = {} + if (headers_ := _dict.get('headers')) is not None: + args['headers_'] = [LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype.from_dict(v) for v in headers_] + if (method := _dict.get('method')) is not None: + args['method'] = method + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'headers_') and self.headers_ is not None: + headers_list = [] + for v in self.headers_: + if isinstance(v, dict): + headers_list.append(v) + else: + headers_list.append(v.to_dict()) + _dict['headers'] = headers_list + if hasattr(self, 'method') and self.method is not None: + _dict['method'] = self.method + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class MethodEnum(str, Enum): + """ + The HTTP request method to use for health checks. + """ + + GET = 'get' + + + +class LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype(LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototype): + """ + LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype. + + :param str body: (optional) The HTTP request body to use for health checks. If + unspecified, health check requests will not have a request body. + The body must be formatted in a way that is understood by the backend member. If + specified, the `request.headers` array must include a corresponding + `Content-Type` header. + :param List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype] + headers_: (optional) The HTTP request headers to use for health checks. If + empty, health check requests will not have headers. + Include a `Host` field and its value to enable the `HTTP/1.1` protocol for + health checks. If a `Host` header is not included, `HTTP/1.0` will be used by + default. More than one + `Host` header is not allowed. + Include a `Content-Type` field and its value to indicate the media type of the + `request.body` (if set). + A header must not exceed 1000 characters, and all headers combined must not + exceed 4000 characters. + :param str method: (optional) The HTTP request method to use for health checks. + """ + + def __init__( + self, + *, + body: Optional[str] = None, + headers_: Optional[List['LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype']] = None, + method: Optional[str] = None, + ) -> None: + """ + Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype object. + + :param str body: (optional) The HTTP request body to use for health checks. + If unspecified, health check requests will not have a request body. + The body must be formatted in a way that is understood by the backend + member. If specified, the `request.headers` array must include a + corresponding `Content-Type` header. + :param + List[LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype] + headers_: (optional) The HTTP request headers to use for health checks. If + empty, health check requests will not have headers. + Include a `Host` field and its value to enable the `HTTP/1.1` protocol for + health checks. If a `Host` header is not included, `HTTP/1.0` will be used + by default. More than one + `Host` header is not allowed. + Include a `Content-Type` field and its value to indicate the media type of + the + `request.body` (if set). + A header must not exceed 1000 characters, and all headers combined must not + exceed 4000 characters. + :param str method: (optional) The HTTP request method to use for health + checks. + """ + # pylint: disable=super-init-not-called + self.body = body + self.headers_ = headers_ + self.method = method + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype': + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype object from a json dictionary.""" + args = {} + if (body := _dict.get('body')) is not None: + args['body'] = body + if (headers_ := _dict.get('headers')) is not None: + args['headers_'] = [LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype.from_dict(v) for v in headers_] + if (method := _dict.get('method')) is not None: + args['method'] = method + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'body') and self.body is not None: + _dict['body'] = self.body + if hasattr(self, 'headers_') and self.headers_ is not None: + headers_list = [] + for v in self.headers_: + if isinstance(v, dict): + headers_list.append(v) + else: + headers_list.append(v.to_dict()) + _dict['headers'] = headers_list + if hasattr(self, 'method') and self.method is not None: + _dict['method'] = self.method + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class MethodEnum(str, Enum): + """ + The HTTP request method to use for health checks. + """ + + POST = 'post' + + + class LoadBalancerPoolHealthMonitorTypeTCP(LoadBalancerPoolHealthMonitor): """ LoadBalancerPoolHealthMonitorTypeTCP. @@ -141797,6 +146375,66 @@ class ResourceTypeEnum(str, Enum): +class LoadBalancerPoolMemberTargetPrototypeFQDN(LoadBalancerPoolMemberTargetPrototype): + """ + LoadBalancerPoolMemberTargetPrototypeFQDN. + + :param str fqdn: A fully qualified domain name for this resource. + """ + + def __init__( + self, + fqdn: str, + ) -> None: + """ + Initialize a LoadBalancerPoolMemberTargetPrototypeFQDN object. + + :param str fqdn: A fully qualified domain name for this resource. + """ + # pylint: disable=super-init-not-called + self.fqdn = fqdn + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolMemberTargetPrototypeFQDN': + """Initialize a LoadBalancerPoolMemberTargetPrototypeFQDN object from a json dictionary.""" + args = {} + if (fqdn := _dict.get('fqdn')) is not None: + args['fqdn'] = fqdn + else: + raise ValueError('Required property \'fqdn\' not present in LoadBalancerPoolMemberTargetPrototypeFQDN JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolMemberTargetPrototypeFQDN object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'fqdn') and self.fqdn is not None: + _dict['fqdn'] = self.fqdn + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolMemberTargetPrototypeFQDN object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolMemberTargetPrototypeFQDN') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolMemberTargetPrototypeFQDN') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LoadBalancerPoolMemberTargetPrototypeIP(LoadBalancerPoolMemberTargetPrototype): """ LoadBalancerPoolMemberTargetPrototypeIP. @@ -141923,6 +146561,66 @@ def __init__( raise Exception(msg) +class LoadBalancerPoolMemberTargetFQDN(LoadBalancerPoolMemberTarget): + """ + LoadBalancerPoolMemberTargetFQDN. + + :param str fqdn: A fully qualified domain name for this resource. + """ + + def __init__( + self, + fqdn: str, + ) -> None: + """ + Initialize a LoadBalancerPoolMemberTargetFQDN object. + + :param str fqdn: A fully qualified domain name for this resource. + """ + # pylint: disable=super-init-not-called + self.fqdn = fqdn + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerPoolMemberTargetFQDN': + """Initialize a LoadBalancerPoolMemberTargetFQDN object from a json dictionary.""" + args = {} + if (fqdn := _dict.get('fqdn')) is not None: + args['fqdn'] = fqdn + else: + raise ValueError('Required property \'fqdn\' not present in LoadBalancerPoolMemberTargetFQDN JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerPoolMemberTargetFQDN object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'fqdn') and self.fqdn is not None: + _dict['fqdn'] = self.fqdn + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerPoolMemberTargetFQDN object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerPoolMemberTargetFQDN') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerPoolMemberTargetFQDN') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class LoadBalancerPoolMemberTargetIPNotReservedIP(LoadBalancerPoolMemberTarget): """ LoadBalancerPoolMemberTargetIPNotReservedIP. @@ -142223,6 +146921,153 @@ class ResourceTypeEnum(str, Enum): +class LoadBalancerProfileAdvancedHealthCheckSupportedDependent(LoadBalancerProfileAdvancedHealthCheckSupported): + """ + The advanced health check support for a load balancer with this profile depends on its + configuration. + + :param str type: The type for this profile field. + """ + + def __init__( + self, + type: str, + ) -> None: + """ + Initialize a LoadBalancerProfileAdvancedHealthCheckSupportedDependent object. + + :param str type: The type for this profile field. + """ + # pylint: disable=super-init-not-called + self.type = type + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfileAdvancedHealthCheckSupportedDependent': + """Initialize a LoadBalancerProfileAdvancedHealthCheckSupportedDependent object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in LoadBalancerProfileAdvancedHealthCheckSupportedDependent JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerProfileAdvancedHealthCheckSupportedDependent object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerProfileAdvancedHealthCheckSupportedDependent object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerProfileAdvancedHealthCheckSupportedDependent') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerProfileAdvancedHealthCheckSupportedDependent') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + DEPENDENT = 'dependent' + + + +class LoadBalancerProfileAdvancedHealthCheckSupportedFixed(LoadBalancerProfileAdvancedHealthCheckSupported): + """ + The advanced health check support for a load balancer with this profile. + + :param str type: The type for this profile field. + :param bool value: The value for this profile field. + """ + + def __init__( + self, + type: str, + value: bool, + ) -> None: + """ + Initialize a LoadBalancerProfileAdvancedHealthCheckSupportedFixed object. + + :param str type: The type for this profile field. + :param bool value: The value for this profile field. + """ + # pylint: disable=super-init-not-called + self.type = type + self.value = value + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfileAdvancedHealthCheckSupportedFixed': + """Initialize a LoadBalancerProfileAdvancedHealthCheckSupportedFixed object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in LoadBalancerProfileAdvancedHealthCheckSupportedFixed JSON') + if (value := _dict.get('value')) is not None: + args['value'] = value + else: + raise ValueError('Required property \'value\' not present in LoadBalancerProfileAdvancedHealthCheckSupportedFixed JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerProfileAdvancedHealthCheckSupportedFixed object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + if hasattr(self, 'value') and self.value is not None: + _dict['value'] = self.value + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerProfileAdvancedHealthCheckSupportedFixed object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerProfileAdvancedHealthCheckSupportedFixed') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerProfileAdvancedHealthCheckSupportedFixed') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + FIXED = 'fixed' + + + class LoadBalancerProfileAvailabilityDependent(LoadBalancerProfileAvailability): """ The availability mode for a load balancer with this profile depends on its @@ -142401,6 +147246,152 @@ class ValueEnum(str, Enum): +class LoadBalancerProfileFQDNSupportedDependent(LoadBalancerProfileFQDNSupported): + """ + The FQDN support for a load balancer with this profile depends on its configuration. + + :param str type: The type for this profile field. + """ + + def __init__( + self, + type: str, + ) -> None: + """ + Initialize a LoadBalancerProfileFQDNSupportedDependent object. + + :param str type: The type for this profile field. + """ + # pylint: disable=super-init-not-called + self.type = type + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfileFQDNSupportedDependent': + """Initialize a LoadBalancerProfileFQDNSupportedDependent object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in LoadBalancerProfileFQDNSupportedDependent JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerProfileFQDNSupportedDependent object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerProfileFQDNSupportedDependent object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerProfileFQDNSupportedDependent') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerProfileFQDNSupportedDependent') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + DEPENDENT = 'dependent' + + + +class LoadBalancerProfileFQDNSupportedFixed(LoadBalancerProfileFQDNSupported): + """ + The FQDN support for a load balancer with this profile. + + :param str type: The type for this profile field. + :param bool value: The value for this profile field. + """ + + def __init__( + self, + type: str, + value: bool, + ) -> None: + """ + Initialize a LoadBalancerProfileFQDNSupportedFixed object. + + :param str type: The type for this profile field. + :param bool value: The value for this profile field. + """ + # pylint: disable=super-init-not-called + self.type = type + self.value = value + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfileFQDNSupportedFixed': + """Initialize a LoadBalancerProfileFQDNSupportedFixed object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in LoadBalancerProfileFQDNSupportedFixed JSON') + if (value := _dict.get('value')) is not None: + args['value'] = value + else: + raise ValueError('Required property \'value\' not present in LoadBalancerProfileFQDNSupportedFixed JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerProfileFQDNSupportedFixed object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + if hasattr(self, 'value') and self.value is not None: + _dict['value'] = self.value + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerProfileFQDNSupportedFixed object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerProfileFQDNSupportedFixed') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerProfileFQDNSupportedFixed') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + FIXED = 'fixed' + + + class LoadBalancerProfileFailsafePolicyActionsDependent(LoadBalancerProfileFailsafePolicyActions): """ The failsafe policy action configuration for a load balancer with this profile depends @@ -142855,6 +147846,152 @@ class TypeEnum(str, Enum): +class LoadBalancerProfileMtlsSupportedDependent(LoadBalancerProfileMtlsSupported): + """ + The mTLS support for a load balancer with this profile depends on its configuration. + + :param str type: The type for this profile field. + """ + + def __init__( + self, + type: str, + ) -> None: + """ + Initialize a LoadBalancerProfileMtlsSupportedDependent object. + + :param str type: The type for this profile field. + """ + # pylint: disable=super-init-not-called + self.type = type + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfileMtlsSupportedDependent': + """Initialize a LoadBalancerProfileMtlsSupportedDependent object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in LoadBalancerProfileMtlsSupportedDependent JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerProfileMtlsSupportedDependent object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerProfileMtlsSupportedDependent object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerProfileMtlsSupportedDependent') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerProfileMtlsSupportedDependent') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + DEPENDENT = 'dependent' + + + +class LoadBalancerProfileMtlsSupportedFixed(LoadBalancerProfileMtlsSupported): + """ + The mTLS support for a load balancer with this profile. + + :param str type: The type for this profile field. + :param bool value: The value for this profile field. + """ + + def __init__( + self, + type: str, + value: bool, + ) -> None: + """ + Initialize a LoadBalancerProfileMtlsSupportedFixed object. + + :param str type: The type for this profile field. + :param bool value: The value for this profile field. + """ + # pylint: disable=super-init-not-called + self.type = type + self.value = value + + @classmethod + def from_dict(cls, _dict: Dict) -> 'LoadBalancerProfileMtlsSupportedFixed': + """Initialize a LoadBalancerProfileMtlsSupportedFixed object from a json dictionary.""" + args = {} + if (type := _dict.get('type')) is not None: + args['type'] = type + else: + raise ValueError('Required property \'type\' not present in LoadBalancerProfileMtlsSupportedFixed JSON') + if (value := _dict.get('value')) is not None: + args['value'] = value + else: + raise ValueError('Required property \'value\' not present in LoadBalancerProfileMtlsSupportedFixed JSON') + return cls(**args) + + @classmethod + def _from_dict(cls, _dict): + """Initialize a LoadBalancerProfileMtlsSupportedFixed object from a json dictionary.""" + return cls.from_dict(_dict) + + def to_dict(self) -> Dict: + """Return a json dictionary representing this model.""" + _dict = {} + if hasattr(self, 'type') and self.type is not None: + _dict['type'] = self.type + if hasattr(self, 'value') and self.value is not None: + _dict['value'] = self.value + return _dict + + def _to_dict(self): + """Return a json dictionary representing this model.""" + return self.to_dict() + + def __str__(self) -> str: + """Return a `str` version of this LoadBalancerProfileMtlsSupportedFixed object.""" + return json.dumps(self.to_dict(), indent=2) + + def __eq__(self, other: 'LoadBalancerProfileMtlsSupportedFixed') -> bool: + """Return `true` when self and other are equal, false otherwise.""" + if not isinstance(other, self.__class__): + return False + return self.__dict__ == other.__dict__ + + def __ne__(self, other: 'LoadBalancerProfileMtlsSupportedFixed') -> bool: + """Return `true` when self and other are not equal, false otherwise.""" + return not self == other + + class TypeEnum(str, Enum): + """ + The type for this profile field. + """ + + FIXED = 'fixed' + + + class LoadBalancerProfileRouteModeSupportedDependent(LoadBalancerProfileRouteModeSupported): """ The [route mode](https://cloud.ibm.com/docs/vpc?topic=vpc-nlb-vnf&interface=ui) @@ -159663,6 +164800,7 @@ class SharePrototypeShareBySize(SharePrototype): - `vpc`: All clients in the VPC for a mount target have access to the mount target. Mount targets for this share require a VPC. + The `vpc` access control mode has been deprecated. Use `security_group` instead. :param List[str] allowed_access_protocols: (optional) The access protocols to allow for this share. If unspecified: - If share mount targets are specified, only the access protocols specified by @@ -159765,6 +164903,8 @@ def __init__( - `vpc`: All clients in the VPC for a mount target have access to the mount target. Mount targets for this share require a VPC. + The `vpc` access control mode has been deprecated. Use `security_group` + instead. :param List[str] allowed_access_protocols: (optional) The access protocols to allow for this share. If unspecified: - If share mount targets are specified, only the access protocols specified @@ -159963,6 +165103,7 @@ class AccessControlModeEnum(str, Enum): - `vpc`: All clients in the VPC for a mount target have access to the mount target. Mount targets for this share require a VPC. + The `vpc` access control mode has been deprecated. Use `security_group` instead. """ SECURITY_GROUP = 'security_group' @@ -160732,9 +165873,9 @@ class SnapshotConsistencyGroupPrototypeSnapshotConsistencyGroupBySnapshots(Snaps If unspecified, the name will be a hyphenated list of randomly-selected words. :param ResourceGroupIdentity resource_group: (optional) :param List[SnapshotPrototypeSnapshotConsistencyGroupContext] snapshots: The - data-consistent member snapshots to create. Each snapshot must specify a + data-consistent member snapshots to create. Each snapshot must specify a `source_volume` attached to the same virtual server instance, and all source - volumes must have a `storage_generation` value of `1`. + volumes must have the same `storage_generation` value. """ def __init__( @@ -160749,10 +165890,10 @@ def __init__( Initialize a SnapshotConsistencyGroupPrototypeSnapshotConsistencyGroupBySnapshots object. :param List[SnapshotPrototypeSnapshotConsistencyGroupContext] snapshots: - The data-consistent member snapshots to create. Each snapshot must specify + The data-consistent member snapshots to create. Each snapshot must specify a `source_volume` attached to the same virtual server instance, and all - source volumes must have a `storage_generation` value of `1`. + source volumes must have the same `storage_generation` value. :param bool delete_snapshots_on_delete: (optional) Indicates whether deleting the snapshot consistency group will also delete the snapshots in the group. @@ -176264,6 +181405,10 @@ class InstancePrototypeInstanceByCatalogOfferingInstanceByCatalogOfferingInstanc future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -176312,6 +181457,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -176383,6 +181529,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -176423,6 +181573,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -176465,6 +181616,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceByCatalogOfferingIn args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -176565,6 +181718,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -176716,6 +181871,10 @@ class InstancePrototypeInstanceByCatalogOfferingInstanceByCatalogOfferingInstanc future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -176764,6 +181923,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -176835,6 +181995,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -176874,6 +182038,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -176916,6 +182081,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceByCatalogOfferingIn args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -177016,6 +182183,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -177167,6 +182336,10 @@ class InstancePrototypeInstanceByImageInstanceByImageInstanceByNetworkAttachment future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -177216,6 +182389,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -177288,6 +182462,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -177328,6 +182506,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -177370,6 +182549,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceByImageInstanceByIm args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -177470,6 +182651,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -177621,6 +182804,10 @@ class InstancePrototypeInstanceByImageInstanceByImageInstanceByNetworkInterface( future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -177670,6 +182857,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -177742,6 +182930,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -177781,6 +182973,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -177823,6 +183016,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceByImageInstanceByIm args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -177923,6 +183118,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -178074,6 +183271,10 @@ class InstancePrototypeInstanceBySourceSnapshotInstanceBySourceSnapshotInstanceB future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -178122,6 +183323,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -178194,6 +183396,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -178231,6 +183437,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -178272,6 +183479,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceBySourceSnapshotIns args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -178370,6 +183579,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -178516,6 +183727,10 @@ class InstancePrototypeInstanceBySourceSnapshotInstanceBySourceSnapshotInstanceB future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -178564,6 +183779,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -178636,6 +183852,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -178672,6 +183892,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -178713,6 +183934,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceBySourceSnapshotIns args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -178811,6 +184034,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -178957,6 +184182,10 @@ class InstancePrototypeInstanceByVolumeInstanceByVolumeInstanceByNetworkAttachme future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -179004,6 +184233,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -179076,6 +184306,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -179113,6 +184347,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -179154,6 +184389,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceByVolumeInstanceByV args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -179252,6 +184489,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -179398,6 +184637,10 @@ class InstancePrototypeInstanceByVolumeInstanceByVolumeInstanceByNetworkInterfac future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -179445,6 +184688,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -179517,6 +184761,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -179553,6 +184801,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -179594,6 +184843,8 @@ def from_dict(cls, _dict: Dict) -> 'InstancePrototypeInstanceByVolumeInstanceByV args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -179692,6 +184943,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -179837,6 +185090,10 @@ class InstanceTemplatePrototypeInstanceTemplateByCatalogOfferingInstanceTemplate future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -179885,6 +185142,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -179955,6 +185213,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -179995,6 +185257,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -180037,6 +185300,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByC args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -180137,6 +185402,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -180287,6 +185554,10 @@ class InstanceTemplatePrototypeInstanceTemplateByCatalogOfferingInstanceTemplate future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -180335,6 +185606,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -180405,6 +185677,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -180444,6 +185720,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -180486,6 +185763,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByC args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -180586,6 +185865,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -180736,6 +186017,10 @@ class InstanceTemplatePrototypeInstanceTemplateByImageInstanceTemplateByImageIns future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -180785,6 +186070,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -180856,6 +186142,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -180896,6 +186186,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -180938,6 +186229,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByI args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -181038,6 +186331,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -181188,6 +186483,10 @@ class InstanceTemplatePrototypeInstanceTemplateByImageInstanceTemplateByImageIns future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -181237,6 +186536,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -181308,6 +186608,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -181347,6 +186651,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -181389,6 +186694,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByI args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -181489,6 +186796,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -181639,6 +186948,10 @@ class InstanceTemplatePrototypeInstanceTemplateBySourceSnapshotInstanceTemplateB future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -181687,6 +187000,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -181758,6 +187072,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -181795,6 +187113,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -181836,6 +187155,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByS args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -181934,6 +187255,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -182079,6 +187402,10 @@ class InstanceTemplatePrototypeInstanceTemplateBySourceSnapshotInstanceTemplateB future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -182127,6 +187454,7 @@ def __init__( profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, resource_group: Optional['ResourceGroupIdentity'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -182198,6 +187526,10 @@ def __init__( :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupIdentity resource_group: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -182234,6 +187566,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -182275,6 +187608,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplatePrototypeInstanceTemplateByS args['reservation_affinity'] = InstanceReservationAffinityPrototype.from_dict(reservation_affinity) if (resource_group := _dict.get('resource_group')) is not None: args['resource_group'] = resource_group + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -182373,6 +187708,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -182523,6 +187860,10 @@ class InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextInstanceBy :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -182575,6 +187916,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -182650,6 +187992,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -182694,6 +188040,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -182756,6 +188103,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplateInstanceByCatalogOfferingIns args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: raise ValueError('Required property \'resource_group\' not present in InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextInstanceByCatalogOfferingInstanceTemplateContextInstanceByNetworkAttachment JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -182864,6 +188213,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -183019,6 +188370,10 @@ class InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextInstanceBy :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -183071,6 +188426,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -183146,6 +188502,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -183189,6 +188549,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -183251,6 +188612,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplateInstanceByCatalogOfferingIns args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: raise ValueError('Required property \'resource_group\' not present in InstanceTemplateInstanceByCatalogOfferingInstanceTemplateContextInstanceByCatalogOfferingInstanceTemplateContextInstanceByNetworkInterface JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -183359,6 +188722,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -183514,6 +188879,10 @@ class InstanceTemplateInstanceByImageInstanceTemplateContextInstanceByImageInsta :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -183567,6 +188936,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -183643,6 +189013,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -183687,6 +189061,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -183749,6 +189124,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplateInstanceByImageInstanceTempl args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: raise ValueError('Required property \'resource_group\' not present in InstanceTemplateInstanceByImageInstanceTemplateContextInstanceByImageInstanceTemplateContextInstanceByNetworkAttachment JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -183857,6 +189234,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -184012,6 +189391,10 @@ class InstanceTemplateInstanceByImageInstanceTemplateContextInstanceByImageInsta :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -184065,6 +189448,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -184141,6 +189525,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -184184,6 +189572,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -184246,6 +189635,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplateInstanceByImageInstanceTempl args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: raise ValueError('Required property \'resource_group\' not present in InstanceTemplateInstanceByImageInstanceTemplateContextInstanceByImageInstanceTemplateContextInstanceByNetworkInterface JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -184354,6 +189745,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -184509,6 +189902,10 @@ class InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextInstanceByS :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -184563,6 +189960,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -184640,6 +190038,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -184683,6 +190085,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -184745,6 +190148,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplateInstanceBySourceSnapshotInst args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: raise ValueError('Required property \'resource_group\' not present in InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextInstanceBySourceSnapshotInstanceTemplateContextInstanceByNetworkAttachment JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -184853,6 +190258,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -185011,6 +190418,10 @@ class InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextInstanceByS :param InstanceReservationAffinityPrototype reservation_affinity: (optional) :param ResourceGroupReference resource_group: The resource group for this instance template. + :param int threads_per_core: (optional) The threads per core to use for this + virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -185067,6 +190478,7 @@ def __init__( placement_target: Optional['InstancePlacementTargetPrototype'] = None, profile: Optional['InstanceProfileIdentity'] = None, reservation_affinity: Optional['InstanceReservationAffinityPrototype'] = None, + threads_per_core: Optional[int] = None, total_volume_bandwidth: Optional[int] = None, user_data: Optional[str] = None, vcpu: Optional['InstanceVCPUPrototype'] = None, @@ -185145,6 +190557,10 @@ def __init__( in the future without changing the API version. :param InstanceReservationAffinityPrototype reservation_affinity: (optional) + :param int threads_per_core: (optional) The threads per core to use for + this virtual server instance. Must be one of the values in the profile's + `threads_per_core.values`. + If unspecified, the default threads per core from the profile will be used. :param int total_volume_bandwidth: (optional) The amount of bandwidth (in megabits per second) allocated exclusively to instance storage volumes. An increase in this value will result in a corresponding decrease to @@ -185191,6 +190607,7 @@ def __init__( self.profile = profile self.reservation_affinity = reservation_affinity self.resource_group = resource_group + self.threads_per_core = threads_per_core self.total_volume_bandwidth = total_volume_bandwidth self.user_data = user_data self.vcpu = vcpu @@ -185254,6 +190671,8 @@ def from_dict(cls, _dict: Dict) -> 'InstanceTemplateInstanceBySourceSnapshotInst args['resource_group'] = ResourceGroupReference.from_dict(resource_group) else: raise ValueError('Required property \'resource_group\' not present in InstanceTemplateInstanceBySourceSnapshotInstanceTemplateContextInstanceBySourceSnapshotInstanceTemplateContextInstanceByNetworkInterface JSON') + if (threads_per_core := _dict.get('threads_per_core')) is not None: + args['threads_per_core'] = threads_per_core if (total_volume_bandwidth := _dict.get('total_volume_bandwidth')) is not None: args['total_volume_bandwidth'] = total_volume_bandwidth if (user_data := _dict.get('user_data')) is not None: @@ -185364,6 +190783,8 @@ def to_dict(self) -> Dict: _dict['resource_group'] = self.resource_group else: _dict['resource_group'] = self.resource_group.to_dict() + if hasattr(self, 'threads_per_core') and self.threads_per_core is not None: + _dict['threads_per_core'] = self.threads_per_core if hasattr(self, 'total_volume_bandwidth') and self.total_volume_bandwidth is not None: _dict['total_volume_bandwidth'] = self.total_volume_bandwidth if hasattr(self, 'user_data') and self.user_data is not None: @@ -192504,6 +197925,70 @@ def get_all(self) -> List[dict]: return results +class InstanceProfilesPager: + """ + InstanceProfilesPager can be used to simplify the use of the "list_instance_profiles" method. + """ + + def __init__( + self, + *, + client: VpcV1, + limit: int = None, + ) -> None: + """ + Initialize a InstanceProfilesPager object. + :param int limit: (optional) The number of resources to return on a page. + """ + self._has_next = True + self._client = client + self._page_context = {'next': None} + self._limit = limit + + def has_next(self) -> bool: + """ + Returns true if there are potentially more results to be retrieved. + """ + return self._has_next + + def get_next(self) -> List[dict]: + """ + Returns the next page of results. + :return: A List[dict], where each element is a dict that represents an instance of InstanceProfile. + :rtype: List[dict] + """ + if not self.has_next(): + raise StopIteration(message='No more results available') + + result = self._client.list_instance_profiles( + limit=self._limit, + start=self._page_context.get('next'), + ).get_result() + + next = None + next_page_link = result.get('next') + if next_page_link is not None: + next = get_query_param(next_page_link.get('href'), 'start') + self._page_context['next'] = next + if next is None: + self._has_next = False + + return result.get('profiles') + + def get_all(self) -> List[dict]: + """ + Returns all results by invoking get_next() repeatedly + until all pages of results have been retrieved. + :return: A List[dict], where each element is a dict that represents an instance of InstanceProfile. + :rtype: List[dict] + """ + results = [] + while self.has_next(): + next_page = self.get_next() + results.extend(next_page) + return results + + class InstancesPager: """ InstancesPager can be used to simplify the use of the "list_instances" method. @@ -194243,6 +199728,7 @@ def __init__( name: str = None, sort: str = None, backup_policy_plan_id: str = None, + backup_policy_job_id: str = None, ) -> None: """ Initialize a SnapshotConsistencyGroupsPager object. @@ -194260,6 +199746,9 @@ def __init__( :param str backup_policy_plan_id: (optional) Filters the collection to backup policy jobs with a `backup_policy_plan.id` property matching the specified identifier. + :param str backup_policy_job_id: (optional) Filters the collection to + snapshot consistency groups with a `backup_policy_job.id` property matching + the specified identifier. """ self._has_next = True self._client = client @@ -194269,6 +199758,7 @@ def __init__( self._name = name self._sort = sort self._backup_policy_plan_id = backup_policy_plan_id + self._backup_policy_job_id = backup_policy_job_id def has_next(self) -> bool: """ @@ -194291,6 +199781,7 @@ def get_next(self) -> List[dict]: name=self._name, sort=self._sort, backup_policy_plan_id=self._backup_policy_plan_id, + backup_policy_job_id=self._backup_policy_job_id, start=self._page_context.get('next'), ).get_result() diff --git a/pyproject.toml b/pyproject.toml index a868bfa..d7b4808 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,17 +1,15 @@ [project] name = "ibm-vpc" -version = "0.33.0" +version = "0.33.0+local" authors = [ { name="IBM", email="devxsdk@us.ibm.com" } ] description = "Python client library for IBM Cloud ibm-vpc Services" readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.10" classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -27,8 +25,8 @@ classifiers = [ ] keywords=["ibm", "cloud", "ibm cloud services", "vpc" ] dependencies = [ - "ibm_cloud_sdk_core>=3.24.4,<4.0.0;python_version<'3.9'", - "ibm_cloud_sdk_core>=3.24.4;python_version>='3.9'", + "ibm_cloud_sdk_core>=3.24.4,<4.0.0;python_version<'3.10'", + "ibm_cloud_sdk_core>=3.24.4;python_version>='3.10'", "python_dateutil>=2.5.3,<3.0.0", ] @@ -69,10 +67,10 @@ skip-string-normalization = true [tool.tox] legacy_tox_ini = """ [tox] -envlist = lint, py38, py39, py310, py311 +envlist = lint, py310, py311 [testenv:lint] -basepython = python3.8 +basepython = python3.10 deps = pylint commands = pylint --rcfile=.pylintrc ibm-vpc test diff --git a/test/unit/test_vpc_v1.py b/test/unit/test_vpc_v1.py index 7ee548c..772a7e6 100644 --- a/test/unit/test_vpc_v1.py +++ b/test/unit/test_vpc_v1.py @@ -2587,17 +2587,13 @@ def test_create_bare_metal_server_all_params(self): zone_identity_model = {} zone_identity_model['name'] = 'us-south-1' - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -2749,17 +2745,13 @@ def test_create_bare_metal_server_value_error(self): zone_identity_model = {} zone_identity_model['name'] = 'us-south-1' - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -3412,17 +3404,13 @@ def test_create_bare_metal_server_network_attachment_all_params(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -3499,17 +3487,13 @@ def test_create_bare_metal_server_network_attachment_value_error(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -4053,11 +4037,9 @@ def test_create_bare_metal_server_network_interface_all_params(self): status=201, ) - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -4120,11 +4102,9 @@ def test_create_bare_metal_server_network_interface_value_error(self): status=201, ) - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -6733,11 +6713,9 @@ def test_create_cluster_network_interface_all_params(self): status=201, ) - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -6792,11 +6770,9 @@ def test_create_cluster_network_interface_value_error(self): status=201, ) - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -14092,7 +14068,7 @@ def test_list_images_all_params(self): """ # Set up mock url = preprocess_url('/images') - mock_response = '{"first": {"href": "href"}, "images": [{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "images": [{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -14155,7 +14131,7 @@ def test_list_images_required_params(self): """ # Set up mock url = preprocess_url('/images') - mock_response = '{"first": {"href": "href"}, "images": [{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "images": [{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -14187,7 +14163,7 @@ def test_list_images_value_error(self): """ # Set up mock url = preprocess_url('/images') - mock_response = '{"first": {"href": "href"}, "images": [{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "images": [{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -14220,8 +14196,8 @@ def test_list_images_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/images') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private"}],"total_count":2,"limit":1}' - mock_response2 = '{"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private"}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private","zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}],"total_count":2,"limit":1}' + mock_response2 = '{"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private","zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -14262,8 +14238,8 @@ def test_list_images_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/images') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private"}],"total_count":2,"limit":1}' - mock_response2 = '{"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private"}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private","zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}],"total_count":2,"limit":1}' + mock_response2 = '{"images":[{"allowed_use":{"api_version":"2024-06-23","bare_metal_server":"enable_secure_boot == true","instance":"gpu.count > 0 && enable_secure_boot == true"},"catalog_offering":{"managed":false,"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deprecation_at":"2026-01-02T03:04:05.006Z","encryption":"user_managed","encryption_key":{"crn":"crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"},"file":{"checksums":{"sha256":"e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"},"size":1},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","minimum_provisioned_size":24,"name":"my-image","obsolescence_at":"2026-01-02T03:04:05.006Z","operating_system":{"allow_user_image_creation":true,"architecture":"amd64","dedicated_host_only":false,"display_name":"Ubuntu Server 16.04 LTS amd64","family":"Ubuntu Server","href":"https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64","name":"ubuntu-24-04-amd64","user_data_format":"cloud_init","vendor":"Canonical","version":"16.04 LTS"},"remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"}},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"image","source_volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"volume"},"status":"available","status_reasons":[{"code":"encryption_key_deleted","message":"A failure occurred","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"user_data_format":"cloud_init","visibility":"private","zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -14307,7 +14283,7 @@ def test_create_image_all_params(self): """ # Set up mock url = preprocess_url('/images') - mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}' + mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.POST, url, @@ -14382,7 +14358,7 @@ def test_create_image_value_error(self): """ # Set up mock url = preprocess_url('/images') - mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}' + mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.POST, url, @@ -14534,7 +14510,7 @@ def test_get_image_all_params(self): """ # Set up mock url = preprocess_url('/images/testString') - mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}' + mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.GET, url, @@ -14572,7 +14548,7 @@ def test_get_image_value_error(self): """ # Set up mock url = preprocess_url('/images/testString') - mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}' + mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.GET, url, @@ -14615,7 +14591,7 @@ def test_update_image_all_params(self): """ # Set up mock url = preprocess_url('/images/testString') - mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}' + mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.PATCH, url, @@ -14671,7 +14647,7 @@ def test_update_image_value_error(self): """ # Set up mock url = preprocess_url('/images/testString') - mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private"}' + mock_response = '{"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "catalog_offering": {"managed": false, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deprecation_at": "2026-01-02T03:04:05.006Z", "encryption": "user_managed", "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "file": {"checksums": {"sha256": "e992a84f113d3a35d2145ca3e7aca4fc95fe6daf470a08d8af3422ee59c92e15"}, "size": 1}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "minimum_provisioned_size": 24, "name": "my-image", "obsolescence_at": "2026-01-02T03:04:05.006Z", "operating_system": {"allow_user_image_creation": true, "architecture": "amd64", "dedicated_host_only": false, "display_name": "Ubuntu Server 16.04 LTS amd64", "family": "Ubuntu Server", "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/ubuntu-24-04-amd64", "name": "ubuntu-24-04-amd64", "user_data_format": "cloud_init", "vendor": "Canonical", "version": "16.04 LTS"}, "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "image", "source_volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "volume"}, "status": "available", "status_reasons": [{"code": "encryption_key_deleted", "message": "A failure occurred", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "user_data_format": "cloud_init", "visibility": "private", "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.PATCH, url, @@ -19198,7 +19174,7 @@ def test_list_instance_templates_all_params(self): """ # Set up mock url = preprocess_url('/instance/templates') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "templates": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "templates": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}], "total_count": 132}' responses.add( responses.GET, url, @@ -19230,7 +19206,7 @@ def test_list_instance_templates_value_error(self): """ # Set up mock url = preprocess_url('/instance/templates') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "templates": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "templates": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}], "total_count": 132}' responses.add( responses.GET, url, @@ -19269,7 +19245,7 @@ def test_create_instance_template_all_params(self): """ # Set up mock url = preprocess_url('/instance/templates') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' responses.add( responses.POST, url, @@ -19287,11 +19263,9 @@ def test_create_instance_template_all_params(self): instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'delete' - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -19416,17 +19390,13 @@ def test_create_instance_template_all_params(self): image_identity_model = {} image_identity_model['id'] = 'r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8' - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -19454,11 +19424,9 @@ def test_create_instance_template_all_params(self): instance_network_attachment_prototype_model['name'] = 'my-instance-network-attachment' instance_network_attachment_prototype_model['virtual_network_interface'] = instance_network_attachment_prototype_virtual_network_interface_model - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a NetworkInterfacePrototype model network_interface_prototype_model = {} @@ -19491,6 +19459,7 @@ def test_create_instance_template_all_params(self): instance_template_prototype_model['profile'] = instance_profile_identity_model instance_template_prototype_model['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_model['resource_group'] = resource_group_identity_model + instance_template_prototype_model['threads_per_core'] = 1 instance_template_prototype_model['total_volume_bandwidth'] = 500 instance_template_prototype_model['user_data'] = '[...]' instance_template_prototype_model['vcpu'] = instance_vcpu_prototype_model @@ -19539,7 +19508,7 @@ def test_create_instance_template_value_error(self): """ # Set up mock url = preprocess_url('/instance/templates') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' responses.add( responses.POST, url, @@ -19557,11 +19526,9 @@ def test_create_instance_template_value_error(self): instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'delete' - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -19686,17 +19653,13 @@ def test_create_instance_template_value_error(self): image_identity_model = {} image_identity_model['id'] = 'r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8' - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -19724,11 +19687,9 @@ def test_create_instance_template_value_error(self): instance_network_attachment_prototype_model['name'] = 'my-instance-network-attachment' instance_network_attachment_prototype_model['virtual_network_interface'] = instance_network_attachment_prototype_virtual_network_interface_model - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a NetworkInterfacePrototype model network_interface_prototype_model = {} @@ -19761,6 +19722,7 @@ def test_create_instance_template_value_error(self): instance_template_prototype_model['profile'] = instance_profile_identity_model instance_template_prototype_model['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_model['resource_group'] = resource_group_identity_model + instance_template_prototype_model['threads_per_core'] = 1 instance_template_prototype_model['total_volume_bandwidth'] = 500 instance_template_prototype_model['user_data'] = '[...]' instance_template_prototype_model['vcpu'] = instance_vcpu_prototype_model @@ -19886,7 +19848,7 @@ def test_get_instance_template_all_params(self): """ # Set up mock url = preprocess_url('/instance/templates/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' responses.add( responses.GET, url, @@ -19924,7 +19886,7 @@ def test_get_instance_template_value_error(self): """ # Set up mock url = preprocess_url('/instance/templates/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' responses.add( responses.GET, url, @@ -19967,7 +19929,7 @@ def test_update_instance_template_all_params(self): """ # Set up mock url = preprocess_url('/instance/templates/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' responses.add( responses.PATCH, url, @@ -20014,7 +19976,7 @@ def test_update_instance_template_value_error(self): """ # Set up mock url = preprocess_url('/instance/templates/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "stop"}, "cluster_network_attachments": [{"cluster_network_interface": {"auto_delete": false, "name": "my-cluster-network-interface", "primary_ip": {"id": "0717-d4d6489a-3bf5-4104-a33a-3572faf2d117"}, "subnet": {"id": "0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930"}}, "name": "my-instance-network-attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-template:0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "default_trusted_profile": {"auto_link": false, "target": {"id": "Profile-9fd84246-7df4-4667-94e4-8ecde51d5ac5"}}, "enable_secure_boot": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/templates/0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "id": "0717-e6c2c7d8-ad57-4f38-a21c-a86265b6aeb2", "keys": [{"id": "r006-82679077-ac3b-4c10-be16-63e9c21f0f45"}], "metadata_service": {"enabled": false, "protocol": "https", "response_hop_limit": 2}, "name": "my-instance-template", "placement_target": {"id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a"}, "profile": {"name": "bx2-4x16"}, "reservation_affinity": {"policy": "automatic", "pool": [{"id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "threads_per_core": 1, "total_volume_bandwidth": 500, "user_data": "[...]", "vcpu": {"percentage": 100}, "volume_attachments": [{"delete_volume_on_instance_delete": false, "name": "my-volume-attachment", "volume": {"id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b"}, "boot_volume_attachment": {"delete_volume_on_instance_delete": true, "name": "my-volume-attachment", "volume": {"allowed_use": {"api_version": "2024-06-23", "bare_metal_server": "enable_secure_boot == true", "instance": "gpu.count > 0 && enable_secure_boot == true"}, "bandwidth": 1000, "capacity": 100, "encryption_key": {"crn": "crn:v1:bluemix:public:kms:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"}, "iops": 10000, "name": "my-volume", "profile": {"name": "general-purpose"}, "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "user_tags": ["user_tags"]}}, "image": {"id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8"}, "zone": {"name": "us-south-1"}, "network_attachments": [{"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}], "primary_network_attachment": {"name": "my-instance-network-attachment", "virtual_network_interface": {"allow_ip_spoofing": true, "auto_delete": false, "enable_infrastructure_nat": true, "ips": [{"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}], "name": "my-virtual-network-interface", "primary_ip": {"id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb"}, "protocol_state_filtering_mode": "auto", "resource_group": {"id": "fee82deba12e4c0fb69c3b09d1f12345"}, "security_groups": [{"id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271"}], "subnet": {"id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e"}}}}' responses.add( responses.PATCH, url, @@ -20120,7 +20082,7 @@ def test_list_instance_profiles_all_params(self): """ # Set up mock url = preprocess_url('/instance/profiles') - mock_response = '{"profiles": [{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}}]}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "supported_vcpu_count": {"type": "enum", "values": [6]}, "threads_per_core": {"default": 7, "type": "enum", "values": [6]}, "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}, "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}], "total_count": 132}' responses.add( responses.GET, url, @@ -20129,12 +20091,25 @@ def test_list_instance_profiles_all_params(self): status=200, ) + # Set up parameter values + start = 'testString' + limit = 50 + # Invoke method - response = _service.list_instance_profiles() + response = _service.list_instance_profiles( + start=start, + limit=limit, + headers={}, + ) # Check for correct operation assert len(responses.calls) == 1 assert response.status_code == 200 + # Validate query params + query_string = responses.calls[0].request.url.split('?', 1)[1] + query_string = urllib.parse.unquote_plus(query_string) + assert 'start={}'.format(start) in query_string + assert 'limit={}'.format(limit) in query_string def test_list_instance_profiles_all_params_with_retries(self): # Enable retries and run test_list_instance_profiles_all_params. @@ -20145,6 +20120,38 @@ def test_list_instance_profiles_all_params_with_retries(self): _service.disable_retries() self.test_list_instance_profiles_all_params() + @responses.activate + def test_list_instance_profiles_required_params(self): + """ + test_list_instance_profiles_required_params() + """ + # Set up mock + url = preprocess_url('/instance/profiles') + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "supported_vcpu_count": {"type": "enum", "values": [6]}, "threads_per_core": {"default": 7, "type": "enum", "values": [6]}, "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}, "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}], "total_count": 132}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Invoke method + response = _service.list_instance_profiles() + + # Check for correct operation + assert len(responses.calls) == 1 + assert response.status_code == 200 + + def test_list_instance_profiles_required_params_with_retries(self): + # Enable retries and run test_list_instance_profiles_required_params. + _service.enable_retries() + self.test_list_instance_profiles_required_params() + + # Disable retries and run test_list_instance_profiles_required_params. + _service.disable_retries() + self.test_list_instance_profiles_required_params() + @responses.activate def test_list_instance_profiles_value_error(self): """ @@ -20152,7 +20159,7 @@ def test_list_instance_profiles_value_error(self): """ # Set up mock url = preprocess_url('/instance/profiles') - mock_response = '{"profiles": [{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}}]}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "supported_vcpu_count": {"type": "enum", "values": [6]}, "threads_per_core": {"default": 7, "type": "enum", "values": [6]}, "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}, "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}], "total_count": 132}' responses.add( responses.GET, url, @@ -20178,6 +20185,75 @@ def test_list_instance_profiles_value_error_with_retries(self): _service.disable_retries() self.test_list_instance_profiles_value_error() + @responses.activate + def test_list_instance_profiles_with_pager_get_next(self): + """ + test_list_instance_profiles_with_pager_get_next() + """ + # Set up a two-page mock response + url = preprocess_url('/instance/profiles') + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"profiles":[{"availability_class":{"default":"standard","type":"enum","values":["standard"]},"bandwidth":{"type":"fixed","value":20000},"cluster_network_attachment_count":{"type":"dependent"},"confidential_compute_modes":{"default":"disabled","type":"enum","values":["disabled"]},"disks":[{"quantity":{"type":"fixed","value":4},"size":{"type":"fixed","value":100},"supported_interface_types":{"default":"nvme","type":"enum","values":["nvme"]}}],"family":"balanced","gpu_count":{"type":"fixed","value":2},"gpu_manufacturer":{"type":"enum","values":["amd"]},"gpu_memory":{"type":"fixed","value":16},"gpu_model":{"type":"enum","values":["Tesla V100"]},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","memory":{"type":"fixed","value":16},"name":"bx2-4x16","network_attachment_count":{"max":5,"min":1,"type":"range"},"network_bandwidth_mode":{"default":"divided","type":"enum","values":["divided"]},"network_interface_count":{"max":5,"min":1,"type":"range"},"numa_count":{"type":"fixed","value":2},"os_architecture":{"default":"amd64","type":"enum","values":["amd64"]},"port_speed":{"type":"fixed","value":1000},"reservation_terms":{"type":"enum","values":["one_year"]},"resource_type":"instance_profile","secure_boot_modes":{"default":false,"type":"enum","values":[true]},"status":"current","supported_cluster_network_profiles":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100","name":"h100","resource_type":"cluster_network_profile"}],"supported_vcpu_count":{"type":"enum","values":[6]},"threads_per_core":{"default":7,"type":"enum","values":[6]},"total_volume_bandwidth":{"type":"fixed","value":20000},"vcpu_architecture":{"type":"fixed","value":"amd64"},"vcpu_burst_limit":{"type":"fixed","value":200},"vcpu_count":{"type":"fixed","value":16},"vcpu_manufacturer":{"type":"fixed","value":"intel"},"vcpu_percentage":{"default":7,"type":"enum","values":[6]},"volume_bandwidth_qos_modes":{"default":"pooled","type":"enum","values":["pooled"]},"zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}]}' + mock_response2 = '{"total_count":2,"limit":1,"profiles":[{"availability_class":{"default":"standard","type":"enum","values":["standard"]},"bandwidth":{"type":"fixed","value":20000},"cluster_network_attachment_count":{"type":"dependent"},"confidential_compute_modes":{"default":"disabled","type":"enum","values":["disabled"]},"disks":[{"quantity":{"type":"fixed","value":4},"size":{"type":"fixed","value":100},"supported_interface_types":{"default":"nvme","type":"enum","values":["nvme"]}}],"family":"balanced","gpu_count":{"type":"fixed","value":2},"gpu_manufacturer":{"type":"enum","values":["amd"]},"gpu_memory":{"type":"fixed","value":16},"gpu_model":{"type":"enum","values":["Tesla V100"]},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","memory":{"type":"fixed","value":16},"name":"bx2-4x16","network_attachment_count":{"max":5,"min":1,"type":"range"},"network_bandwidth_mode":{"default":"divided","type":"enum","values":["divided"]},"network_interface_count":{"max":5,"min":1,"type":"range"},"numa_count":{"type":"fixed","value":2},"os_architecture":{"default":"amd64","type":"enum","values":["amd64"]},"port_speed":{"type":"fixed","value":1000},"reservation_terms":{"type":"enum","values":["one_year"]},"resource_type":"instance_profile","secure_boot_modes":{"default":false,"type":"enum","values":[true]},"status":"current","supported_cluster_network_profiles":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100","name":"h100","resource_type":"cluster_network_profile"}],"supported_vcpu_count":{"type":"enum","values":[6]},"threads_per_core":{"default":7,"type":"enum","values":[6]},"total_volume_bandwidth":{"type":"fixed","value":20000},"vcpu_architecture":{"type":"fixed","value":"amd64"},"vcpu_burst_limit":{"type":"fixed","value":200},"vcpu_count":{"type":"fixed","value":16},"vcpu_manufacturer":{"type":"fixed","value":"intel"},"vcpu_percentage":{"default":7,"type":"enum","values":[6]},"volume_bandwidth_qos_modes":{"default":"pooled","type":"enum","values":["pooled"]},"zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}]}' + responses.add( + responses.GET, + url, + body=mock_response1, + content_type='application/json', + status=200, + ) + responses.add( + responses.GET, + url, + body=mock_response2, + content_type='application/json', + status=200, + ) + + # Exercise the pager class for this operation + all_results = [] + pager = InstanceProfilesPager( + client=_service, + limit=10, + ) + while pager.has_next(): + next_page = pager.get_next() + assert next_page is not None + all_results.extend(next_page) + assert len(all_results) == 2 + + @responses.activate + def test_list_instance_profiles_with_pager_get_all(self): + """ + test_list_instance_profiles_with_pager_get_all() + """ + # Set up a two-page mock response + url = preprocess_url('/instance/profiles') + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"profiles":[{"availability_class":{"default":"standard","type":"enum","values":["standard"]},"bandwidth":{"type":"fixed","value":20000},"cluster_network_attachment_count":{"type":"dependent"},"confidential_compute_modes":{"default":"disabled","type":"enum","values":["disabled"]},"disks":[{"quantity":{"type":"fixed","value":4},"size":{"type":"fixed","value":100},"supported_interface_types":{"default":"nvme","type":"enum","values":["nvme"]}}],"family":"balanced","gpu_count":{"type":"fixed","value":2},"gpu_manufacturer":{"type":"enum","values":["amd"]},"gpu_memory":{"type":"fixed","value":16},"gpu_model":{"type":"enum","values":["Tesla V100"]},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","memory":{"type":"fixed","value":16},"name":"bx2-4x16","network_attachment_count":{"max":5,"min":1,"type":"range"},"network_bandwidth_mode":{"default":"divided","type":"enum","values":["divided"]},"network_interface_count":{"max":5,"min":1,"type":"range"},"numa_count":{"type":"fixed","value":2},"os_architecture":{"default":"amd64","type":"enum","values":["amd64"]},"port_speed":{"type":"fixed","value":1000},"reservation_terms":{"type":"enum","values":["one_year"]},"resource_type":"instance_profile","secure_boot_modes":{"default":false,"type":"enum","values":[true]},"status":"current","supported_cluster_network_profiles":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100","name":"h100","resource_type":"cluster_network_profile"}],"supported_vcpu_count":{"type":"enum","values":[6]},"threads_per_core":{"default":7,"type":"enum","values":[6]},"total_volume_bandwidth":{"type":"fixed","value":20000},"vcpu_architecture":{"type":"fixed","value":"amd64"},"vcpu_burst_limit":{"type":"fixed","value":200},"vcpu_count":{"type":"fixed","value":16},"vcpu_manufacturer":{"type":"fixed","value":"intel"},"vcpu_percentage":{"default":7,"type":"enum","values":[6]},"volume_bandwidth_qos_modes":{"default":"pooled","type":"enum","values":["pooled"]},"zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}]}' + mock_response2 = '{"total_count":2,"limit":1,"profiles":[{"availability_class":{"default":"standard","type":"enum","values":["standard"]},"bandwidth":{"type":"fixed","value":20000},"cluster_network_attachment_count":{"type":"dependent"},"confidential_compute_modes":{"default":"disabled","type":"enum","values":["disabled"]},"disks":[{"quantity":{"type":"fixed","value":4},"size":{"type":"fixed","value":100},"supported_interface_types":{"default":"nvme","type":"enum","values":["nvme"]}}],"family":"balanced","gpu_count":{"type":"fixed","value":2},"gpu_manufacturer":{"type":"enum","values":["amd"]},"gpu_memory":{"type":"fixed","value":16},"gpu_model":{"type":"enum","values":["Tesla V100"]},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","memory":{"type":"fixed","value":16},"name":"bx2-4x16","network_attachment_count":{"max":5,"min":1,"type":"range"},"network_bandwidth_mode":{"default":"divided","type":"enum","values":["divided"]},"network_interface_count":{"max":5,"min":1,"type":"range"},"numa_count":{"type":"fixed","value":2},"os_architecture":{"default":"amd64","type":"enum","values":["amd64"]},"port_speed":{"type":"fixed","value":1000},"reservation_terms":{"type":"enum","values":["one_year"]},"resource_type":"instance_profile","secure_boot_modes":{"default":false,"type":"enum","values":[true]},"status":"current","supported_cluster_network_profiles":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100","name":"h100","resource_type":"cluster_network_profile"}],"supported_vcpu_count":{"type":"enum","values":[6]},"threads_per_core":{"default":7,"type":"enum","values":[6]},"total_volume_bandwidth":{"type":"fixed","value":20000},"vcpu_architecture":{"type":"fixed","value":"amd64"},"vcpu_burst_limit":{"type":"fixed","value":200},"vcpu_count":{"type":"fixed","value":16},"vcpu_manufacturer":{"type":"fixed","value":"intel"},"vcpu_percentage":{"default":7,"type":"enum","values":[6]},"volume_bandwidth_qos_modes":{"default":"pooled","type":"enum","values":["pooled"]},"zones":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}]}]}' + responses.add( + responses.GET, + url, + body=mock_response1, + content_type='application/json', + status=200, + ) + responses.add( + responses.GET, + url, + body=mock_response2, + content_type='application/json', + status=200, + ) + + # Exercise the pager class for this operation + pager = InstanceProfilesPager( + client=_service, + limit=10, + ) + all_results = pager.get_all() + assert all_results is not None + assert len(all_results) == 2 + class TestGetInstanceProfile: """ @@ -20191,7 +20267,7 @@ def test_get_instance_profile_all_params(self): """ # Set up mock url = preprocess_url('/instance/profiles/mx2-host-152x1216') - mock_response = '{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}}' + mock_response = '{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "supported_vcpu_count": {"type": "enum", "values": [6]}, "threads_per_core": {"default": 7, "type": "enum", "values": [6]}, "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}, "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.GET, url, @@ -20229,7 +20305,7 @@ def test_get_instance_profile_value_error(self): """ # Set up mock url = preprocess_url('/instance/profiles/mx2-host-152x1216') - mock_response = '{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}}' + mock_response = '{"availability_class": {"default": "standard", "type": "enum", "values": ["standard"]}, "bandwidth": {"type": "fixed", "value": 20000}, "cluster_network_attachment_count": {"type": "dependent"}, "confidential_compute_modes": {"default": "disabled", "type": "enum", "values": ["disabled"]}, "disks": [{"quantity": {"type": "fixed", "value": 4}, "size": {"type": "fixed", "value": 100}, "supported_interface_types": {"default": "nvme", "type": "enum", "values": ["nvme"]}}], "family": "balanced", "gpu_count": {"type": "fixed", "value": 2}, "gpu_manufacturer": {"type": "enum", "values": ["amd"]}, "gpu_memory": {"type": "fixed", "value": 16}, "gpu_model": {"type": "enum", "values": ["Tesla V100"]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "memory": {"type": "fixed", "value": 16}, "name": "bx2-4x16", "network_attachment_count": {"max": 5, "min": 1, "type": "range"}, "network_bandwidth_mode": {"default": "divided", "type": "enum", "values": ["divided"]}, "network_interface_count": {"max": 5, "min": 1, "type": "range"}, "numa_count": {"type": "fixed", "value": 2}, "os_architecture": {"default": "amd64", "type": "enum", "values": ["amd64"]}, "port_speed": {"type": "fixed", "value": 1000}, "reservation_terms": {"type": "enum", "values": ["one_year"]}, "resource_type": "instance_profile", "secure_boot_modes": {"default": false, "type": "enum", "values": [true]}, "status": "current", "supported_cluster_network_profiles": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_network/profiles/h100", "name": "h100", "resource_type": "cluster_network_profile"}], "supported_vcpu_count": {"type": "enum", "values": [6]}, "threads_per_core": {"default": 7, "type": "enum", "values": [6]}, "total_volume_bandwidth": {"type": "fixed", "value": 20000}, "vcpu_architecture": {"type": "fixed", "value": "amd64"}, "vcpu_burst_limit": {"type": "fixed", "value": 200}, "vcpu_count": {"type": "fixed", "value": 16}, "vcpu_manufacturer": {"type": "fixed", "value": "intel"}, "vcpu_percentage": {"default": 7, "type": "enum", "values": [6]}, "volume_bandwidth_qos_modes": {"default": "pooled", "type": "enum", "values": ["pooled"]}, "zones": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}]}' responses.add( responses.GET, url, @@ -20272,7 +20348,7 @@ def test_list_instances_all_params(self): """ # Set up mock url = preprocess_url('/instances') - mock_response = '{"first": {"href": "href"}, "instances": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "instances": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -20380,7 +20456,7 @@ def test_list_instances_required_params(self): """ # Set up mock url = preprocess_url('/instances') - mock_response = '{"first": {"href": "href"}, "instances": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "instances": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -20412,7 +20488,7 @@ def test_list_instances_value_error(self): """ # Set up mock url = preprocess_url('/instances') - mock_response = '{"first": {"href": "href"}, "instances": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "instances": [{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -20445,8 +20521,8 @@ def test_list_instances_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/instances') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' - mock_response2 = '{"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","software_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-software-attachment","resource_type":"instance_software_attachment"}],"startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"threads_per_core":1,"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' + mock_response2 = '{"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","software_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-software-attachment","resource_type":"instance_software_attachment"}],"startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"threads_per_core":1,"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -20502,8 +20578,8 @@ def test_list_instances_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/instances') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' - mock_response2 = '{"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","software_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-software-attachment","resource_type":"instance_software_attachment"}],"startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"threads_per_core":1,"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' + mock_response2 = '{"instances":[{"availability":{"class":"standard"},"availability_policy":{"host_failure":"restart","preemption":"delete"},"bandwidth":1000,"boot_volume_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}},"catalog_offering":{"plan":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"}},"version":{"crn":"crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}},"cluster_network":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573","id":"0717-da0df18c-7598-4633-a648-fdaac28a5573","name":"my-cluster-network","resource_type":"cluster_network"},"cluster_network_attachments":[{"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213","id":"0717-fb880975-db45-4459-8548-64e3995ac213","name":"my-instance-network-attachment","resource_type":"instance_cluster_network_attachment"}],"confidential_compute_mode":"disabled","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","dedicated_host":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a","id":"0717-1e09281b-f177-46fb-baf1-bc152b2e391a","name":"my-host","resource_type":"dedicated_host"},"disks":[{"created_at":"2026-01-02T03:04:05.006Z","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e","id":"10c02d81-0ecb-4dc5-897d-28392913b81e","interface_type":"nvme","name":"my-instance-disk","resource_type":"instance_disk","size":100}],"enable_secure_boot":true,"gpu":{"count":1,"manufacturer":"amd","memory":1,"model":"Tesla V100"},"health_reasons":[{"code":"reservation_expired","message":"The reservation cannot be used because it has expired.","more_info":"https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}],"health_state":"ok","href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","id":"0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0","image":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","id":"r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8","name":"my-image","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"image"},"instance_group_membership":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741","id":"r006-32c8210b-fd1a-409f-8966-de85bbfd3741","instance_group":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","id":"r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60","name":"my-instance-group"},"name":"my-instance-group-membership"},"lifecycle_reasons":[{"code":"resource_suspended_by_provider","message":"The resource has been suspended. Contact IBM support with the CRN for next steps.","more_info":"https://cloud.ibm.com/apidocs/vpc#resource-suspension"}],"lifecycle_state":"stable","memory":64,"metadata_service":{"enabled":false,"protocol":"http","response_hop_limit":1},"name":"my-instance","network_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}}],"network_interfaces":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}}],"numa_count":2,"placement_target":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","id":"0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0","name":"my-dedicated-host-group","resource_type":"dedicated_host_group"},"primary_network_attachment":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-attachment","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"instance_network_attachment","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"},"virtual_network_interface":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","href":"https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","id":"0717-54eb57ee-86f2-4796-90bb-d7874e0831ef","name":"my-virtual-network-interface","resource_type":"virtual_network_interface"}},"primary_network_interface":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7","id":"0717-d54eb633-98ea-459d-aa00-6a8e780175a7","name":"my-instance-network-interface","primary_ip":{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"},"resource_type":"network_interface","subnet":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}},"profile":{"href":"https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16","name":"bx2-4x16","resource_type":"instance_profile"},"reservation":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"},"reservation_affinity":{"policy":"automatic","pool":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63","id":"0717-ba49df72-37b8-43ac-98da-f8e029de0e63","name":"my-reservation","resource_type":"reservation"}]},"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"instance","software_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-software-attachment","resource_type":"instance_software_attachment"}],"startable":false,"status":"deleting","status_reasons":[{"code":"cannot_start_storage","message":"The virtual server instance is unusable because the encryption key for the boot volume\\nhas been deleted","more_info":"https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}],"threads_per_core":1,"total_network_bandwidth":500,"total_volume_bandwidth":500,"vcpu":{"architecture":"amd64","burst":{"limit":200},"count":4,"manufacturer":"intel","percentage":100},"volume_attachments":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"device":{"id":"id"},"href":"https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","id":"0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a","name":"my-volume-attachment","volume":{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","id":"r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5","name":"my-volume","resource_type":"volume"}}],"volume_bandwidth_qos_mode":"pooled","vpc":{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","id":"r006-4727d842-f94f-4a2d-824a-9bc9b02c523b","name":"my-vpc","resource_type":"vpc"},"zone":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1","name":"us-south-1"}}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -20562,7 +20638,7 @@ def test_create_instance_all_params(self): """ # Set up mock url = preprocess_url('/instances') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.POST, url, @@ -20580,11 +20656,9 @@ def test_create_instance_all_params(self): instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'delete' - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -20709,17 +20783,13 @@ def test_create_instance_all_params(self): image_identity_model = {} image_identity_model['id'] = 'r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8' - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -20747,11 +20817,9 @@ def test_create_instance_all_params(self): instance_network_attachment_prototype_model['name'] = 'my-instance-network-attachment' instance_network_attachment_prototype_model['virtual_network_interface'] = instance_network_attachment_prototype_virtual_network_interface_model - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a NetworkInterfacePrototype model network_interface_prototype_model = {} @@ -20784,6 +20852,7 @@ def test_create_instance_all_params(self): instance_prototype_model['profile'] = instance_profile_identity_model instance_prototype_model['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_model['resource_group'] = resource_group_identity_model + instance_prototype_model['threads_per_core'] = 1 instance_prototype_model['total_volume_bandwidth'] = 500 instance_prototype_model['user_data'] = '[...]' instance_prototype_model['vcpu'] = instance_vcpu_prototype_model @@ -20832,7 +20901,7 @@ def test_create_instance_value_error(self): """ # Set up mock url = preprocess_url('/instances') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.POST, url, @@ -20850,11 +20919,9 @@ def test_create_instance_value_error(self): instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'delete' - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -20979,17 +21046,13 @@ def test_create_instance_value_error(self): image_identity_model = {} image_identity_model['id'] = 'r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8' - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -21017,11 +21080,9 @@ def test_create_instance_value_error(self): instance_network_attachment_prototype_model['name'] = 'my-instance-network-attachment' instance_network_attachment_prototype_model['virtual_network_interface'] = instance_network_attachment_prototype_virtual_network_interface_model - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a NetworkInterfacePrototype model network_interface_prototype_model = {} @@ -21054,6 +21115,7 @@ def test_create_instance_value_error(self): instance_prototype_model['profile'] = instance_profile_identity_model instance_prototype_model['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_model['resource_group'] = resource_group_identity_model + instance_prototype_model['threads_per_core'] = 1 instance_prototype_model['total_volume_bandwidth'] = 500 instance_prototype_model['user_data'] = '[...]' instance_prototype_model['vcpu'] = instance_vcpu_prototype_model @@ -21216,7 +21278,7 @@ def test_get_instance_all_params(self): """ # Set up mock url = preprocess_url('/instances/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.GET, url, @@ -21254,7 +21316,7 @@ def test_get_instance_value_error(self): """ # Set up mock url = preprocess_url('/instances/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.GET, url, @@ -21297,7 +21359,7 @@ def test_update_instance_all_params(self): """ # Set up mock url = preprocess_url('/instances/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.PATCH, url, @@ -21353,6 +21415,7 @@ def test_update_instance_all_params(self): instance_patch_model['placement_target'] = instance_placement_target_patch_model instance_patch_model['profile'] = instance_patch_profile_model instance_patch_model['reservation_affinity'] = instance_reservation_affinity_patch_model + instance_patch_model['threads_per_core'] = 1 instance_patch_model['total_volume_bandwidth'] = 500 instance_patch_model['vcpu'] = instance_vcpu_patch_model instance_patch_model['volume_bandwidth_qos_mode'] = 'pooled' @@ -21393,7 +21456,7 @@ def test_update_instance_required_params(self): """ # Set up mock url = preprocess_url('/instances/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.PATCH, url, @@ -21449,6 +21512,7 @@ def test_update_instance_required_params(self): instance_patch_model['placement_target'] = instance_placement_target_patch_model instance_patch_model['profile'] = instance_patch_profile_model instance_patch_model['reservation_affinity'] = instance_reservation_affinity_patch_model + instance_patch_model['threads_per_core'] = 1 instance_patch_model['total_volume_bandwidth'] = 500 instance_patch_model['vcpu'] = instance_vcpu_patch_model instance_patch_model['volume_bandwidth_qos_mode'] = 'pooled' @@ -21487,7 +21551,7 @@ def test_update_instance_value_error(self): """ # Set up mock url = preprocess_url('/instances/testString') - mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"availability": {"class": "standard"}, "availability_policy": {"host_failure": "restart", "preemption": "delete"}, "bandwidth": 1000, "boot_volume_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}, "catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "cluster_network": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::cluster-network:0717-da0df18c-7598-4633-a648-fdaac28a5573", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/cluster_networks/0717-da0df18c-7598-4633-a648-fdaac28a5573", "id": "0717-da0df18c-7598-4633-a648-fdaac28a5573", "name": "my-cluster-network", "resource_type": "cluster_network"}, "cluster_network_attachments": [{"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/cluster_network_attachments/0717-fb880975-db45-4459-8548-64e3995ac213", "id": "0717-fb880975-db45-4459-8548-64e3995ac213", "name": "my-instance-network-attachment", "resource_type": "instance_cluster_network_attachment"}], "confidential_compute_mode": "disabled", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::instance:0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "dedicated_host": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host:0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_hosts/0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "id": "0717-1e09281b-f177-46fb-baf1-bc152b2e391a", "name": "my-host", "resource_type": "dedicated_host"}, "disks": [{"created_at": "2026-01-02T03:04:05.006Z", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/disks/10c02d81-0ecb-4dc5-897d-28392913b81e", "id": "10c02d81-0ecb-4dc5-897d-28392913b81e", "interface_type": "nvme", "name": "my-instance-disk", "resource_type": "instance_disk", "size": 100}], "enable_secure_boot": true, "gpu": {"count": 1, "manufacturer": "amd", "memory": 1, "model": "Tesla V100"}, "health_reasons": [{"code": "reservation_expired", "message": "The reservation cannot be used because it has expired.", "more_info": "https://cloud.ibm.com/docs/vpc?topic=vpc-server-health-status-reasons"}], "health_state": "ok", "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "id": "0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0", "image": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::image:r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "id": "r006-72b27b5c-f4b0-48bb-b954-5becc7c1dcb8", "name": "my-image", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "image"}, "instance_group_membership": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60/memberships/r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "id": "r006-32c8210b-fd1a-409f-8966-de85bbfd3741", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "name": "my-instance-group-membership"}, "lifecycle_reasons": [{"code": "resource_suspended_by_provider", "message": "The resource has been suspended. Contact IBM support with the CRN for next steps.", "more_info": "https://cloud.ibm.com/apidocs/vpc#resource-suspension"}], "lifecycle_state": "stable", "memory": 64, "metadata_service": {"enabled": false, "protocol": "http", "response_hop_limit": 1}, "name": "my-instance", "network_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}], "network_interfaces": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}], "numa_count": 2, "placement_target": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::dedicated-host-group:0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/dedicated_host/groups/0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "id": "0717-bcc5b834-1258-4b9c-c3b4-43bc9cf5cde0", "name": "my-dedicated-host-group", "resource_type": "dedicated_host_group"}, "primary_network_attachment": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_attachments/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-attachment", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "instance_network_attachment", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}, "virtual_network_interface": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::virtual-network-interface:0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "href": "https://us-south.iaas.cloud.ibm.com/v1/virtual_network_interfaces/0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "id": "0717-54eb57ee-86f2-4796-90bb-d7874e0831ef", "name": "my-virtual-network-interface", "resource_type": "virtual_network_interface"}}, "primary_network_interface": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/network_interfaces/0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "id": "0717-d54eb633-98ea-459d-aa00-6a8e780175a7", "name": "my-instance-network-interface", "primary_ip": {"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}, "resource_type": "network_interface", "subnet": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}}, "profile": {"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/bx2-4x16", "name": "bx2-4x16", "resource_type": "instance_profile"}, "reservation": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}, "reservation_affinity": {"policy": "automatic", "pool": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::reservation:0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/reservations/0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "id": "0717-ba49df72-37b8-43ac-98da-f8e029de0e63", "name": "my-reservation", "resource_type": "reservation"}]}, "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "instance", "software_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-software-attachment", "resource_type": "instance_software_attachment"}], "startable": false, "status": "deleting", "status_reasons": [{"code": "cannot_start_storage", "message": "The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted", "more_info": "https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys"}], "threads_per_core": 1, "total_network_bandwidth": 500, "total_volume_bandwidth": 500, "vcpu": {"architecture": "amd64", "burst": {"limit": 200}, "count": 4, "manufacturer": "intel", "percentage": 100}, "volume_attachments": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "device": {"id": "id"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/0717_e21b7391-2ca2-4ab5-84a8-b92157a633b0/volume_attachments/0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "id": "0717-82cbf856-9cbb-45fb-b62f-d7bcef32399a", "name": "my-volume-attachment", "volume": {"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::volume:r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "id": "r006-1a6b7274-678d-4dfb-8981-c71dd9d4daa5", "name": "my-volume", "resource_type": "volume"}}], "volume_bandwidth_qos_mode": "pooled", "vpc": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpc:r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "id": "r006-4727d842-f94f-4a2d-824a-9bc9b02c523b", "name": "my-vpc", "resource_type": "vpc"}, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.PATCH, url, @@ -21543,6 +21607,7 @@ def test_update_instance_value_error(self): instance_patch_model['placement_target'] = instance_placement_target_patch_model instance_patch_model['profile'] = instance_patch_profile_model instance_patch_model['reservation_affinity'] = instance_reservation_affinity_patch_model + instance_patch_model['threads_per_core'] = 1 instance_patch_model['total_volume_bandwidth'] = 500 instance_patch_model['vcpu'] = instance_vcpu_patch_model instance_patch_model['volume_bandwidth_qos_mode'] = 'pooled' @@ -21964,11 +22029,9 @@ def test_create_cluster_network_attachment_all_params(self): status=201, ) - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -22034,11 +22097,9 @@ def test_create_cluster_network_attachment_value_error(self): status=201, ) - # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById model cluster_network_interface_primary_ip_prototype_model = {} - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' # Construct a dict representation of a ClusterNetworkSubnetIdentityById model cluster_network_subnet_identity_model = {} @@ -22811,17 +22872,13 @@ def test_create_instance_network_attachment_all_params(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -22894,17 +22951,13 @@ def test_create_instance_network_attachment_value_error(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -23326,11 +23379,9 @@ def test_create_instance_network_interface_all_params(self): subnet_identity_model = {} subnet_identity_model['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -23395,11 +23446,9 @@ def test_create_instance_network_interface_value_error(self): subnet_identity_model = {} subnet_identity_model['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' - # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext model + # Construct a dict representation of a NetworkInterfaceIPPrototypeReservedIPIdentityById model network_interface_ip_prototype_model = {} - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a SecurityGroupIdentityById model security_group_identity_model = {} @@ -24341,6 +24390,272 @@ def test_get_instance_network_interface_ip_value_error_with_retries(self): self.test_get_instance_network_interface_ip_value_error() +class TestListInstanceSoftwareAttachments: + """ + Test Class for list_instance_software_attachments + """ + + @responses.activate + def test_list_instance_software_attachments_all_params(self): + """ + list_instance_software_attachments() + """ + # Set up mock + url = preprocess_url('/instances/testString/software_attachments') + mock_response = '{"software_attachments": [{"catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "entitlement": {"licensed_software": [{"sku": "FC1-10-IDCLD-445-02-12", "vendor": {"name": "fortinet"}}]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "lifecycle_reasons": [{"code": "pending_registration", "message": "The software instance is being registered with Resource Controller", "more_info": "https://cloud.ibm.com/apidocs/vpc#failed-registration"}], "lifecycle_state": "stable", "name": "my-software-attachment", "offering_instance": {"crn": "crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::"}, "resource_type": "instance_software_attachment"}]}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Set up parameter values + instance_id = 'testString' + + # Invoke method + response = _service.list_instance_software_attachments( + instance_id, + headers={}, + ) + + # Check for correct operation + assert len(responses.calls) == 1 + assert response.status_code == 200 + + def test_list_instance_software_attachments_all_params_with_retries(self): + # Enable retries and run test_list_instance_software_attachments_all_params. + _service.enable_retries() + self.test_list_instance_software_attachments_all_params() + + # Disable retries and run test_list_instance_software_attachments_all_params. + _service.disable_retries() + self.test_list_instance_software_attachments_all_params() + + @responses.activate + def test_list_instance_software_attachments_value_error(self): + """ + test_list_instance_software_attachments_value_error() + """ + # Set up mock + url = preprocess_url('/instances/testString/software_attachments') + mock_response = '{"software_attachments": [{"catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "entitlement": {"licensed_software": [{"sku": "FC1-10-IDCLD-445-02-12", "vendor": {"name": "fortinet"}}]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "lifecycle_reasons": [{"code": "pending_registration", "message": "The software instance is being registered with Resource Controller", "more_info": "https://cloud.ibm.com/apidocs/vpc#failed-registration"}], "lifecycle_state": "stable", "name": "my-software-attachment", "offering_instance": {"crn": "crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::"}, "resource_type": "instance_software_attachment"}]}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Set up parameter values + instance_id = 'testString' + + # Pass in all but one required param and check for a ValueError + req_param_dict = { + "instance_id": instance_id, + } + for param in req_param_dict.keys(): + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} + with pytest.raises(ValueError): + _service.list_instance_software_attachments(**req_copy) + + def test_list_instance_software_attachments_value_error_with_retries(self): + # Enable retries and run test_list_instance_software_attachments_value_error. + _service.enable_retries() + self.test_list_instance_software_attachments_value_error() + + # Disable retries and run test_list_instance_software_attachments_value_error. + _service.disable_retries() + self.test_list_instance_software_attachments_value_error() + + +class TestGetInstanceSoftwareAttachment: + """ + Test Class for get_instance_software_attachment + """ + + @responses.activate + def test_get_instance_software_attachment_all_params(self): + """ + get_instance_software_attachment() + """ + # Set up mock + url = preprocess_url('/instances/testString/software_attachments/testString') + mock_response = '{"catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "entitlement": {"licensed_software": [{"sku": "FC1-10-IDCLD-445-02-12", "vendor": {"name": "fortinet"}}]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "lifecycle_reasons": [{"code": "pending_registration", "message": "The software instance is being registered with Resource Controller", "more_info": "https://cloud.ibm.com/apidocs/vpc#failed-registration"}], "lifecycle_state": "stable", "name": "my-software-attachment", "offering_instance": {"crn": "crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::"}, "resource_type": "instance_software_attachment"}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Set up parameter values + instance_id = 'testString' + id = 'testString' + + # Invoke method + response = _service.get_instance_software_attachment( + instance_id, + id, + headers={}, + ) + + # Check for correct operation + assert len(responses.calls) == 1 + assert response.status_code == 200 + + def test_get_instance_software_attachment_all_params_with_retries(self): + # Enable retries and run test_get_instance_software_attachment_all_params. + _service.enable_retries() + self.test_get_instance_software_attachment_all_params() + + # Disable retries and run test_get_instance_software_attachment_all_params. + _service.disable_retries() + self.test_get_instance_software_attachment_all_params() + + @responses.activate + def test_get_instance_software_attachment_value_error(self): + """ + test_get_instance_software_attachment_value_error() + """ + # Set up mock + url = preprocess_url('/instances/testString/software_attachments/testString') + mock_response = '{"catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "entitlement": {"licensed_software": [{"sku": "FC1-10-IDCLD-445-02-12", "vendor": {"name": "fortinet"}}]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "lifecycle_reasons": [{"code": "pending_registration", "message": "The software instance is being registered with Resource Controller", "more_info": "https://cloud.ibm.com/apidocs/vpc#failed-registration"}], "lifecycle_state": "stable", "name": "my-software-attachment", "offering_instance": {"crn": "crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::"}, "resource_type": "instance_software_attachment"}' + responses.add( + responses.GET, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Set up parameter values + instance_id = 'testString' + id = 'testString' + + # Pass in all but one required param and check for a ValueError + req_param_dict = { + "instance_id": instance_id, + "id": id, + } + for param in req_param_dict.keys(): + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} + with pytest.raises(ValueError): + _service.get_instance_software_attachment(**req_copy) + + def test_get_instance_software_attachment_value_error_with_retries(self): + # Enable retries and run test_get_instance_software_attachment_value_error. + _service.enable_retries() + self.test_get_instance_software_attachment_value_error() + + # Disable retries and run test_get_instance_software_attachment_value_error. + _service.disable_retries() + self.test_get_instance_software_attachment_value_error() + + +class TestUpdateInstanceSoftwareAttachment: + """ + Test Class for update_instance_software_attachment + """ + + @responses.activate + def test_update_instance_software_attachment_all_params(self): + """ + update_instance_software_attachment() + """ + # Set up mock + url = preprocess_url('/instances/testString/software_attachments/testString') + mock_response = '{"catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "entitlement": {"licensed_software": [{"sku": "FC1-10-IDCLD-445-02-12", "vendor": {"name": "fortinet"}}]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "lifecycle_reasons": [{"code": "pending_registration", "message": "The software instance is being registered with Resource Controller", "more_info": "https://cloud.ibm.com/apidocs/vpc#failed-registration"}], "lifecycle_state": "stable", "name": "my-software-attachment", "offering_instance": {"crn": "crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::"}, "resource_type": "instance_software_attachment"}' + responses.add( + responses.PATCH, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Construct a dict representation of a InstanceSoftwareAttachmentPatch model + instance_software_attachment_patch_model = {} + instance_software_attachment_patch_model['name'] = 'my-software-attachment-patch' + + # Set up parameter values + instance_id = 'testString' + id = 'testString' + instance_software_attachment_patch = instance_software_attachment_patch_model + + # Invoke method + response = _service.update_instance_software_attachment( + instance_id, + id, + instance_software_attachment_patch, + headers={}, + ) + + # Check for correct operation + assert len(responses.calls) == 1 + assert response.status_code == 200 + # Validate body params + req_body = json.loads(str(responses.calls[0].request.body, 'utf-8')) + assert req_body == instance_software_attachment_patch + + def test_update_instance_software_attachment_all_params_with_retries(self): + # Enable retries and run test_update_instance_software_attachment_all_params. + _service.enable_retries() + self.test_update_instance_software_attachment_all_params() + + # Disable retries and run test_update_instance_software_attachment_all_params. + _service.disable_retries() + self.test_update_instance_software_attachment_all_params() + + @responses.activate + def test_update_instance_software_attachment_value_error(self): + """ + test_update_instance_software_attachment_value_error() + """ + # Set up mock + url = preprocess_url('/instances/testString/software_attachments/testString') + mock_response = '{"catalog_offering": {"plan": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}}, "version": {"crn": "crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d"}}, "created_at": "2026-01-02T03:04:05.006Z", "entitlement": {"licensed_software": [{"sku": "FC1-10-IDCLD-445-02-12", "vendor": {"name": "fortinet"}}]}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "lifecycle_reasons": [{"code": "pending_registration", "message": "The software instance is being registered with Resource Controller", "more_info": "https://cloud.ibm.com/apidocs/vpc#failed-registration"}], "lifecycle_state": "stable", "name": "my-software-attachment", "offering_instance": {"crn": "crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::"}, "resource_type": "instance_software_attachment"}' + responses.add( + responses.PATCH, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Construct a dict representation of a InstanceSoftwareAttachmentPatch model + instance_software_attachment_patch_model = {} + instance_software_attachment_patch_model['name'] = 'my-software-attachment-patch' + + # Set up parameter values + instance_id = 'testString' + id = 'testString' + instance_software_attachment_patch = instance_software_attachment_patch_model + + # Pass in all but one required param and check for a ValueError + req_param_dict = { + "instance_id": instance_id, + "id": id, + "instance_software_attachment_patch": instance_software_attachment_patch, + } + for param in req_param_dict.keys(): + req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} + with pytest.raises(ValueError): + _service.update_instance_software_attachment(**req_copy) + + def test_update_instance_software_attachment_value_error_with_retries(self): + # Enable retries and run test_update_instance_software_attachment_value_error. + _service.enable_retries() + self.test_update_instance_software_attachment_value_error() + + # Disable retries and run test_update_instance_software_attachment_value_error. + _service.disable_retries() + self.test_update_instance_software_attachment_value_error() + + class TestListInstanceVolumeAttachments: """ Test Class for list_instance_volume_attachments @@ -25464,7 +25779,7 @@ def test_list_load_balancer_profiles_all_params(self): """ # Set up mock url = preprocess_url('/load_balancer/profiles') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"access_modes": {"type": "enum", "values": ["private"]}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"access_modes": {"type": "enum", "values": ["private"]}, "advanced_health_checks_supported": {"type": "fixed", "value": true}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "fqdn_pool_members_supported": {"type": "fixed", "value": true}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "mtls_supported": {"type": "fixed", "value": true}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}], "total_count": 132}' responses.add( responses.GET, url, @@ -25509,7 +25824,7 @@ def test_list_load_balancer_profiles_required_params(self): """ # Set up mock url = preprocess_url('/load_balancer/profiles') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"access_modes": {"type": "enum", "values": ["private"]}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"access_modes": {"type": "enum", "values": ["private"]}, "advanced_health_checks_supported": {"type": "fixed", "value": true}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "fqdn_pool_members_supported": {"type": "fixed", "value": true}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "mtls_supported": {"type": "fixed", "value": true}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}], "total_count": 132}' responses.add( responses.GET, url, @@ -25541,7 +25856,7 @@ def test_list_load_balancer_profiles_value_error(self): """ # Set up mock url = preprocess_url('/load_balancer/profiles') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"access_modes": {"type": "enum", "values": ["private"]}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "profiles": [{"access_modes": {"type": "enum", "values": ["private"]}, "advanced_health_checks_supported": {"type": "fixed", "value": true}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "fqdn_pool_members_supported": {"type": "fixed", "value": true}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "mtls_supported": {"type": "fixed", "value": true}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}], "total_count": 132}' responses.add( responses.GET, url, @@ -25574,8 +25889,8 @@ def test_list_load_balancer_profiles_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/load_balancer/profiles') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' - mock_response2 = '{"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"advanced_health_checks_supported":{"type":"fixed","value":true},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","fqdn_pool_members_supported":{"type":"fixed","value":true},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"mtls_supported":{"type":"fixed","value":true},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' + mock_response2 = '{"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"advanced_health_checks_supported":{"type":"fixed","value":true},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","fqdn_pool_members_supported":{"type":"fixed","value":true},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"mtls_supported":{"type":"fixed","value":true},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' responses.add( responses.GET, url, @@ -25610,8 +25925,8 @@ def test_list_load_balancer_profiles_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/load_balancer/profiles') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' - mock_response2 = '{"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"advanced_health_checks_supported":{"type":"fixed","value":true},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","fqdn_pool_members_supported":{"type":"fixed","value":true},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"mtls_supported":{"type":"fixed","value":true},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' + mock_response2 = '{"total_count":2,"limit":1,"profiles":[{"access_modes":{"type":"enum","values":["private"]},"advanced_health_checks_supported":{"type":"fixed","value":true},"availability":{"type":"fixed","value":"region"},"failsafe_policy_actions":{"default":"fail","type":"enum","values":["forward"]},"family":"application","fqdn_pool_members_supported":{"type":"fixed","value":true},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","instance_groups_supported":{"type":"fixed","value":true},"logging_supported":{"type":"fixed","value":["datapath"]},"mtls_supported":{"type":"fixed","value":true},"name":"network-fixed","route_mode_supported":{"type":"fixed","value":true},"security_groups_supported":{"type":"fixed","value":true},"source_ip_session_persistence_supported":{"type":"fixed","value":true},"targetable_load_balancer_profiles":[{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"}],"targetable_resource_types":{"type":"enum","values":["instance"]},"udp_supported":{"type":"fixed","value":true}}]}' responses.add( responses.GET, url, @@ -25649,7 +25964,7 @@ def test_get_load_balancer_profile_all_params(self): """ # Set up mock url = preprocess_url('/load_balancer/profiles/network-fixed') - mock_response = '{"access_modes": {"type": "enum", "values": ["private"]}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}' + mock_response = '{"access_modes": {"type": "enum", "values": ["private"]}, "advanced_health_checks_supported": {"type": "fixed", "value": true}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "fqdn_pool_members_supported": {"type": "fixed", "value": true}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "mtls_supported": {"type": "fixed", "value": true}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}' responses.add( responses.GET, url, @@ -25687,7 +26002,7 @@ def test_get_load_balancer_profile_value_error(self): """ # Set up mock url = preprocess_url('/load_balancer/profiles/network-fixed') - mock_response = '{"access_modes": {"type": "enum", "values": ["private"]}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}' + mock_response = '{"access_modes": {"type": "enum", "values": ["private"]}, "advanced_health_checks_supported": {"type": "fixed", "value": true}, "availability": {"type": "fixed", "value": "region"}, "failsafe_policy_actions": {"default": "fail", "type": "enum", "values": ["forward"]}, "family": "application", "fqdn_pool_members_supported": {"type": "fixed", "value": true}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "instance_groups_supported": {"type": "fixed", "value": true}, "logging_supported": {"type": "fixed", "value": ["datapath"]}, "mtls_supported": {"type": "fixed", "value": true}, "name": "network-fixed", "route_mode_supported": {"type": "fixed", "value": true}, "security_groups_supported": {"type": "fixed", "value": true}, "source_ip_session_persistence_supported": {"type": "fixed", "value": true}, "targetable_load_balancer_profiles": [{"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}], "targetable_resource_types": {"type": "enum", "values": ["instance"]}, "udp_supported": {"type": "fixed", "value": true}}' responses.add( responses.GET, url, @@ -25730,7 +26045,7 @@ def test_list_load_balancers_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers') - mock_response = '{"first": {"href": "href"}, "limit": 20, "load_balancers": [{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}], "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "load_balancers": [{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}], "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -25775,7 +26090,7 @@ def test_list_load_balancers_required_params(self): """ # Set up mock url = preprocess_url('/load_balancers') - mock_response = '{"first": {"href": "href"}, "limit": 20, "load_balancers": [{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}], "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "load_balancers": [{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}], "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -25807,7 +26122,7 @@ def test_list_load_balancers_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers') - mock_response = '{"first": {"href": "href"}, "limit": 20, "load_balancers": [{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}], "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "load_balancers": [{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}], "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -25840,8 +26155,8 @@ def test_list_load_balancers_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/load_balancers') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' - mock_response2 = '{"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","advanced_health_checks_supported":true,"attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"fqdn_pool_members_supported":false,"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"mtls_supported":false,"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' + mock_response2 = '{"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","advanced_health_checks_supported":true,"attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"fqdn_pool_members_supported":false,"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"mtls_supported":false,"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' responses.add( responses.GET, url, @@ -25876,8 +26191,8 @@ def test_list_load_balancers_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/load_balancers') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' - mock_response2 = '{"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","advanced_health_checks_supported":true,"attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"fqdn_pool_members_supported":false,"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"mtls_supported":false,"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' + mock_response2 = '{"total_count":2,"limit":1,"load_balancers":[{"access_mode":"private","advanced_health_checks_supported":true,"attached_load_balancer_pool_members":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a","id":"r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}],"availability":"region","created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","dns":{"instance":{"crn":"crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"},"zone":{"id":"d66662cc-aa23-4fe1-9987-858487a61f45"}},"failsafe_policy_actions":["forward"],"fqdn_pool_members_supported":false,"hostname":"6b88d615-us-south.lb.appdomain.cloud","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","id":"r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727","instance_groups_supported":true,"is_private_path":true,"is_public":true,"listeners":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091","id":"r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}],"logging":{"datapath":{"active":true}},"mtls_supported":false,"name":"my-load-balancer","operating_status":"offline","pools":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004","id":"r006-70294e14-4e61-11e8-bcf4-0242ac110004","name":"my-load-balancer-pool"}],"private_ips":[{"address":"192.168.3.4","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","id":"0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb","name":"my-reserved-ip","resource_type":"subnet_reserved_ip"}],"profile":{"family":"application","href":"https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed","name":"network-fixed"},"provisioning_status":"active","public_ips":[{"address":"192.168.3.4"}],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"load_balancer","route_mode":true,"security_groups":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","id":"r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271","name":"my-security-group"}],"security_groups_supported":false,"source_ip_session_persistence_supported":true,"subnets":[{"crn":"crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","id":"0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e","name":"my-subnet","resource_type":"subnet"}],"udp_supported":true}]}' responses.add( responses.GET, url, @@ -25915,7 +26230,7 @@ def test_create_load_balancer_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.POST, url, @@ -25945,6 +26260,11 @@ def test_create_load_balancer_all_params(self): certificate_instance_identity_model = {} certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationPrototype model + load_balancer_listener_client_authentication_prototype_model = {} + load_balancer_listener_client_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_listener_client_authentication_prototype_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + # Construct a dict representation of a LoadBalancerPoolIdentityByName model load_balancer_pool_identity_by_name_model = {} load_balancer_pool_identity_by_name_model['name'] = 'my-load-balancer-pool' @@ -25963,6 +26283,7 @@ def test_create_load_balancer_all_params(self): load_balancer_listener_prototype_load_balancer_context_model = {} load_balancer_listener_prototype_load_balancer_context_model['accept_proxy_protocol'] = True load_balancer_listener_prototype_load_balancer_context_model['certificate_instance'] = certificate_instance_identity_model + load_balancer_listener_prototype_load_balancer_context_model['client_authentication'] = load_balancer_listener_client_authentication_prototype_model load_balancer_listener_prototype_load_balancer_context_model['connection_limit'] = 2000 load_balancer_listener_prototype_load_balancer_context_model['default_pool'] = load_balancer_pool_identity_by_name_model load_balancer_listener_prototype_load_balancer_context_model['https_redirect'] = load_balancer_listener_https_redirect_prototype_model @@ -25980,6 +26301,10 @@ def test_create_load_balancer_all_params(self): load_balancer_logging_prototype_model = {} load_balancer_logging_prototype_model['datapath'] = load_balancer_logging_datapath_prototype_model + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPrototype model + load_balancer_pool_client_authentication_prototype_model = {} + load_balancer_pool_client_authentication_prototype_model['certificate_instance'] = certificate_instance_identity_model + # Construct a dict representation of a LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeTCPPrototype model load_balancer_pool_health_monitor_prototype_model = {} load_balancer_pool_health_monitor_prototype_model['delay'] = 5 @@ -25998,6 +26323,11 @@ def test_create_load_balancer_all_params(self): load_balancer_pool_member_prototype_model['target'] = load_balancer_pool_member_target_prototype_model load_balancer_pool_member_prototype_model['weight'] = 50 + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPrototype model + load_balancer_pool_server_authentication_prototype_model = {} + load_balancer_pool_server_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_prototype_model['verify_certificate'] = True + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePrototype model load_balancer_pool_session_persistence_prototype_model = {} load_balancer_pool_session_persistence_prototype_model['cookie_name'] = 'my-cookie-name' @@ -26006,11 +26336,13 @@ def test_create_load_balancer_all_params(self): # Construct a dict representation of a LoadBalancerPoolPrototypeLoadBalancerContext model load_balancer_pool_prototype_load_balancer_context_model = {} load_balancer_pool_prototype_load_balancer_context_model['algorithm'] = 'least_connections' + load_balancer_pool_prototype_load_balancer_context_model['client_authentication'] = load_balancer_pool_client_authentication_prototype_model load_balancer_pool_prototype_load_balancer_context_model['health_monitor'] = load_balancer_pool_health_monitor_prototype_model load_balancer_pool_prototype_load_balancer_context_model['members'] = [load_balancer_pool_member_prototype_model] load_balancer_pool_prototype_load_balancer_context_model['name'] = 'my-load-balancer-pool' load_balancer_pool_prototype_load_balancer_context_model['protocol'] = 'http' load_balancer_pool_prototype_load_balancer_context_model['proxy_protocol'] = 'disabled' + load_balancer_pool_prototype_load_balancer_context_model['server_authentication'] = load_balancer_pool_server_authentication_prototype_model load_balancer_pool_prototype_load_balancer_context_model['session_persistence'] = load_balancer_pool_session_persistence_prototype_model # Construct a dict representation of a LoadBalancerProfileIdentityByName model @@ -26090,7 +26422,7 @@ def test_create_load_balancer_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.POST, url, @@ -26120,6 +26452,11 @@ def test_create_load_balancer_value_error(self): certificate_instance_identity_model = {} certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationPrototype model + load_balancer_listener_client_authentication_prototype_model = {} + load_balancer_listener_client_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_listener_client_authentication_prototype_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + # Construct a dict representation of a LoadBalancerPoolIdentityByName model load_balancer_pool_identity_by_name_model = {} load_balancer_pool_identity_by_name_model['name'] = 'my-load-balancer-pool' @@ -26138,6 +26475,7 @@ def test_create_load_balancer_value_error(self): load_balancer_listener_prototype_load_balancer_context_model = {} load_balancer_listener_prototype_load_balancer_context_model['accept_proxy_protocol'] = True load_balancer_listener_prototype_load_balancer_context_model['certificate_instance'] = certificate_instance_identity_model + load_balancer_listener_prototype_load_balancer_context_model['client_authentication'] = load_balancer_listener_client_authentication_prototype_model load_balancer_listener_prototype_load_balancer_context_model['connection_limit'] = 2000 load_balancer_listener_prototype_load_balancer_context_model['default_pool'] = load_balancer_pool_identity_by_name_model load_balancer_listener_prototype_load_balancer_context_model['https_redirect'] = load_balancer_listener_https_redirect_prototype_model @@ -26155,6 +26493,10 @@ def test_create_load_balancer_value_error(self): load_balancer_logging_prototype_model = {} load_balancer_logging_prototype_model['datapath'] = load_balancer_logging_datapath_prototype_model + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPrototype model + load_balancer_pool_client_authentication_prototype_model = {} + load_balancer_pool_client_authentication_prototype_model['certificate_instance'] = certificate_instance_identity_model + # Construct a dict representation of a LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeTCPPrototype model load_balancer_pool_health_monitor_prototype_model = {} load_balancer_pool_health_monitor_prototype_model['delay'] = 5 @@ -26173,6 +26515,11 @@ def test_create_load_balancer_value_error(self): load_balancer_pool_member_prototype_model['target'] = load_balancer_pool_member_target_prototype_model load_balancer_pool_member_prototype_model['weight'] = 50 + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPrototype model + load_balancer_pool_server_authentication_prototype_model = {} + load_balancer_pool_server_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_prototype_model['verify_certificate'] = True + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePrototype model load_balancer_pool_session_persistence_prototype_model = {} load_balancer_pool_session_persistence_prototype_model['cookie_name'] = 'my-cookie-name' @@ -26181,11 +26528,13 @@ def test_create_load_balancer_value_error(self): # Construct a dict representation of a LoadBalancerPoolPrototypeLoadBalancerContext model load_balancer_pool_prototype_load_balancer_context_model = {} load_balancer_pool_prototype_load_balancer_context_model['algorithm'] = 'least_connections' + load_balancer_pool_prototype_load_balancer_context_model['client_authentication'] = load_balancer_pool_client_authentication_prototype_model load_balancer_pool_prototype_load_balancer_context_model['health_monitor'] = load_balancer_pool_health_monitor_prototype_model load_balancer_pool_prototype_load_balancer_context_model['members'] = [load_balancer_pool_member_prototype_model] load_balancer_pool_prototype_load_balancer_context_model['name'] = 'my-load-balancer-pool' load_balancer_pool_prototype_load_balancer_context_model['protocol'] = 'http' load_balancer_pool_prototype_load_balancer_context_model['proxy_protocol'] = 'disabled' + load_balancer_pool_prototype_load_balancer_context_model['server_authentication'] = load_balancer_pool_server_authentication_prototype_model load_balancer_pool_prototype_load_balancer_context_model['session_persistence'] = load_balancer_pool_session_persistence_prototype_model # Construct a dict representation of a LoadBalancerProfileIdentityByName model @@ -26358,7 +26707,7 @@ def test_get_load_balancer_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.GET, url, @@ -26396,7 +26745,7 @@ def test_get_load_balancer_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.GET, url, @@ -26439,7 +26788,7 @@ def test_update_load_balancer_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.PATCH, url, @@ -26516,7 +26865,7 @@ def test_update_load_balancer_required_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.PATCH, url, @@ -26591,7 +26940,7 @@ def test_update_load_balancer_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString') - mock_response = '{"access_mode": "private", "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' + mock_response = '{"access_mode": "private", "advanced_health_checks_supported": true, "attached_load_balancer_pool_members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "availability": "region", "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "dns": {"instance": {"crn": "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"}, "zone": {"id": "d66662cc-aa23-4fe1-9987-858487a61f45"}}, "failsafe_policy_actions": ["forward"], "fqdn_pool_members_supported": false, "hostname": "6b88d615-us-south.lb.appdomain.cloud", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "id": "r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727", "instance_groups_supported": true, "is_private_path": true, "is_public": true, "listeners": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}], "logging": {"datapath": {"active": true}}, "mtls_supported": false, "name": "my-load-balancer", "operating_status": "offline", "pools": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}], "private_ips": [{"address": "192.168.3.4", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-bea6a632-5e13-42a4-b4b8-31dc877abfe4/reserved_ips/0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "id": "0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb", "name": "my-reserved-ip", "resource_type": "subnet_reserved_ip"}], "profile": {"family": "application", "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed"}, "provisioning_status": "active", "public_ips": [{"address": "192.168.3.4"}], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "load_balancer", "route_mode": true, "security_groups": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::security-group:r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "id": "r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271", "name": "my-security-group"}], "security_groups_supported": false, "source_ip_session_persistence_supported": true, "subnets": [{"crn": "crn:v1:bluemix:public:is:us-south-1:a/aa2432b1fa4d4ace891e9b80fc104e34::subnet:0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "id": "0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e", "name": "my-subnet", "resource_type": "subnet"}], "udp_supported": true}' responses.add( responses.PATCH, url, @@ -26749,7 +27098,7 @@ def test_list_load_balancer_listeners_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners') - mock_response = '{"listeners": [{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}]}' + mock_response = '{"listeners": [{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}]}' responses.add( responses.GET, url, @@ -26787,7 +27136,7 @@ def test_list_load_balancer_listeners_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners') - mock_response = '{"listeners": [{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}]}' + mock_response = '{"listeners": [{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}]}' responses.add( responses.GET, url, @@ -26830,7 +27179,7 @@ def test_create_load_balancer_listener_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners') - mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' + mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' responses.add( responses.POST, url, @@ -26843,6 +27192,11 @@ def test_create_load_balancer_listener_all_params(self): certificate_instance_identity_model = {} certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationPrototype model + load_balancer_listener_client_authentication_prototype_model = {} + load_balancer_listener_client_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_listener_client_authentication_prototype_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + # Construct a dict representation of a LoadBalancerPoolIdentityLoadBalancerPoolIdentityById model load_balancer_pool_identity_model = {} load_balancer_pool_identity_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -26881,6 +27235,7 @@ def test_create_load_balancer_listener_all_params(self): protocol = 'http' accept_proxy_protocol = True certificate_instance = certificate_instance_identity_model + client_authentication = load_balancer_listener_client_authentication_prototype_model connection_limit = 2000 default_pool = load_balancer_pool_identity_model https_redirect = load_balancer_listener_https_redirect_prototype_model @@ -26896,6 +27251,7 @@ def test_create_load_balancer_listener_all_params(self): protocol, accept_proxy_protocol=accept_proxy_protocol, certificate_instance=certificate_instance, + client_authentication=client_authentication, connection_limit=connection_limit, default_pool=default_pool, https_redirect=https_redirect, @@ -26915,6 +27271,7 @@ def test_create_load_balancer_listener_all_params(self): assert req_body['protocol'] == 'http' assert req_body['accept_proxy_protocol'] == True assert req_body['certificate_instance'] == certificate_instance_identity_model + assert req_body['client_authentication'] == load_balancer_listener_client_authentication_prototype_model assert req_body['connection_limit'] == 2000 assert req_body['default_pool'] == load_balancer_pool_identity_model assert req_body['https_redirect'] == load_balancer_listener_https_redirect_prototype_model @@ -26940,7 +27297,7 @@ def test_create_load_balancer_listener_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners') - mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' + mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' responses.add( responses.POST, url, @@ -26953,6 +27310,11 @@ def test_create_load_balancer_listener_value_error(self): certificate_instance_identity_model = {} certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationPrototype model + load_balancer_listener_client_authentication_prototype_model = {} + load_balancer_listener_client_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_listener_client_authentication_prototype_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + # Construct a dict representation of a LoadBalancerPoolIdentityLoadBalancerPoolIdentityById model load_balancer_pool_identity_model = {} load_balancer_pool_identity_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -26991,6 +27353,7 @@ def test_create_load_balancer_listener_value_error(self): protocol = 'http' accept_proxy_protocol = True certificate_instance = certificate_instance_identity_model + client_authentication = load_balancer_listener_client_authentication_prototype_model connection_limit = 2000 default_pool = load_balancer_pool_identity_model https_redirect = load_balancer_listener_https_redirect_prototype_model @@ -27111,7 +27474,7 @@ def test_get_load_balancer_listener_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners/testString') - mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' + mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' responses.add( responses.GET, url, @@ -27151,7 +27514,7 @@ def test_get_load_balancer_listener_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners/testString') - mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' + mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' responses.add( responses.GET, url, @@ -27196,7 +27559,7 @@ def test_update_load_balancer_listener_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners/testString') - mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' + mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' responses.add( responses.PATCH, url, @@ -27209,6 +27572,15 @@ def test_update_load_balancer_listener_all_params(self): certificate_instance_identity_model = {} certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN model + load_balancer_listener_client_authentication_certificate_authority_patch_model = {} + load_balancer_listener_client_authentication_certificate_authority_patch_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationPatch model + load_balancer_listener_client_authentication_patch_model = {} + load_balancer_listener_client_authentication_patch_model['certificate_authority'] = load_balancer_listener_client_authentication_certificate_authority_patch_model + load_balancer_listener_client_authentication_patch_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + # Construct a dict representation of a LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityById model load_balancer_listener_default_pool_patch_model = {} load_balancer_listener_default_pool_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -27227,6 +27599,7 @@ def test_update_load_balancer_listener_all_params(self): load_balancer_listener_patch_model = {} load_balancer_listener_patch_model['accept_proxy_protocol'] = True load_balancer_listener_patch_model['certificate_instance'] = certificate_instance_identity_model + load_balancer_listener_patch_model['client_authentication'] = load_balancer_listener_client_authentication_patch_model load_balancer_listener_patch_model['connection_limit'] = 2000 load_balancer_listener_patch_model['default_pool'] = load_balancer_listener_default_pool_patch_model load_balancer_listener_patch_model['https_redirect'] = load_balancer_listener_https_redirect_patch_model @@ -27272,7 +27645,7 @@ def test_update_load_balancer_listener_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/listeners/testString') - mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' + mock_response = '{"accept_proxy_protocol": true, "certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "client_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "certificate_revocation_list": "-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n"}, "connection_limit": 2000, "created_at": "2026-01-02T03:04:05.006Z", "default_pool": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "https_redirect": {"http_status_code": 301, "listener": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091"}, "uri": "/example?doc=get"}, "id": "r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091", "idle_connection_timeout": 100, "policies": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/r006-97c05c26-4748-4db8-ac3f-d8a9c79a7091/policies/r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "id": "r006-0b00a37f-a3d7-43ca-8187-f1e88d659245", "name": "my-load-balancer-listener-policy"}], "port": 443, "port_max": 499, "port_min": 443, "protocol": "http", "provisioning_status": "active"}' responses.add( responses.PATCH, url, @@ -27285,6 +27658,15 @@ def test_update_load_balancer_listener_value_error(self): certificate_instance_identity_model = {} certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN model + load_balancer_listener_client_authentication_certificate_authority_patch_model = {} + load_balancer_listener_client_authentication_certificate_authority_patch_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerListenerClientAuthenticationPatch model + load_balancer_listener_client_authentication_patch_model = {} + load_balancer_listener_client_authentication_patch_model['certificate_authority'] = load_balancer_listener_client_authentication_certificate_authority_patch_model + load_balancer_listener_client_authentication_patch_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + # Construct a dict representation of a LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityById model load_balancer_listener_default_pool_patch_model = {} load_balancer_listener_default_pool_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -27303,6 +27685,7 @@ def test_update_load_balancer_listener_value_error(self): load_balancer_listener_patch_model = {} load_balancer_listener_patch_model['accept_proxy_protocol'] = True load_balancer_listener_patch_model['certificate_instance'] = certificate_instance_identity_model + load_balancer_listener_patch_model['client_authentication'] = load_balancer_listener_client_authentication_patch_model load_balancer_listener_patch_model['connection_limit'] = 2000 load_balancer_listener_patch_model['default_pool'] = load_balancer_listener_default_pool_patch_model load_balancer_listener_patch_model['https_redirect'] = load_balancer_listener_https_redirect_patch_model @@ -28347,7 +28730,7 @@ def test_list_load_balancer_pools_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools') - mock_response = '{"pools": [{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}]}' + mock_response = '{"pools": [{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}]}' responses.add( responses.GET, url, @@ -28385,7 +28768,7 @@ def test_list_load_balancer_pools_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools') - mock_response = '{"pools": [{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}]}' + mock_response = '{"pools": [{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}]}' responses.add( responses.GET, url, @@ -28428,7 +28811,7 @@ def test_create_load_balancer_pool_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools') - mock_response = '{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' responses.add( responses.POST, url, @@ -28445,6 +28828,14 @@ def test_create_load_balancer_pool_all_params(self): load_balancer_pool_health_monitor_prototype_model['timeout'] = 2 load_balancer_pool_health_monitor_prototype_model['type'] = 'http' + # Construct a dict representation of a CertificateInstanceIdentityByCRN model + certificate_instance_identity_model = {} + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPrototype model + load_balancer_pool_client_authentication_prototype_model = {} + load_balancer_pool_client_authentication_prototype_model['certificate_instance'] = certificate_instance_identity_model + # Construct a dict representation of a LoadBalancerPoolIdentityLoadBalancerPoolIdentityById model load_balancer_pool_identity_model = {} load_balancer_pool_identity_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -28464,6 +28855,11 @@ def test_create_load_balancer_pool_all_params(self): load_balancer_pool_member_prototype_model['target'] = load_balancer_pool_member_target_prototype_model load_balancer_pool_member_prototype_model['weight'] = 50 + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPrototype model + load_balancer_pool_server_authentication_prototype_model = {} + load_balancer_pool_server_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_prototype_model['verify_certificate'] = True + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePrototype model load_balancer_pool_session_persistence_prototype_model = {} load_balancer_pool_session_persistence_prototype_model['cookie_name'] = 'my-cookie-name' @@ -28474,10 +28870,12 @@ def test_create_load_balancer_pool_all_params(self): algorithm = 'least_connections' health_monitor = load_balancer_pool_health_monitor_prototype_model protocol = 'http' + client_authentication = load_balancer_pool_client_authentication_prototype_model failsafe_policy = load_balancer_pool_failsafe_policy_prototype_model members = [load_balancer_pool_member_prototype_model] name = 'my-load-balancer-pool' proxy_protocol = 'disabled' + server_authentication = load_balancer_pool_server_authentication_prototype_model session_persistence = load_balancer_pool_session_persistence_prototype_model # Invoke method @@ -28486,10 +28884,12 @@ def test_create_load_balancer_pool_all_params(self): algorithm, health_monitor, protocol, + client_authentication=client_authentication, failsafe_policy=failsafe_policy, members=members, name=name, proxy_protocol=proxy_protocol, + server_authentication=server_authentication, session_persistence=session_persistence, headers={}, ) @@ -28502,10 +28902,12 @@ def test_create_load_balancer_pool_all_params(self): assert req_body['algorithm'] == 'least_connections' assert req_body['health_monitor'] == load_balancer_pool_health_monitor_prototype_model assert req_body['protocol'] == 'http' + assert req_body['client_authentication'] == load_balancer_pool_client_authentication_prototype_model assert req_body['failsafe_policy'] == load_balancer_pool_failsafe_policy_prototype_model assert req_body['members'] == [load_balancer_pool_member_prototype_model] assert req_body['name'] == 'my-load-balancer-pool' assert req_body['proxy_protocol'] == 'disabled' + assert req_body['server_authentication'] == load_balancer_pool_server_authentication_prototype_model assert req_body['session_persistence'] == load_balancer_pool_session_persistence_prototype_model def test_create_load_balancer_pool_all_params_with_retries(self): @@ -28524,7 +28926,7 @@ def test_create_load_balancer_pool_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools') - mock_response = '{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' responses.add( responses.POST, url, @@ -28541,6 +28943,14 @@ def test_create_load_balancer_pool_value_error(self): load_balancer_pool_health_monitor_prototype_model['timeout'] = 2 load_balancer_pool_health_monitor_prototype_model['type'] = 'http' + # Construct a dict representation of a CertificateInstanceIdentityByCRN model + certificate_instance_identity_model = {} + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPrototype model + load_balancer_pool_client_authentication_prototype_model = {} + load_balancer_pool_client_authentication_prototype_model['certificate_instance'] = certificate_instance_identity_model + # Construct a dict representation of a LoadBalancerPoolIdentityLoadBalancerPoolIdentityById model load_balancer_pool_identity_model = {} load_balancer_pool_identity_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -28560,6 +28970,11 @@ def test_create_load_balancer_pool_value_error(self): load_balancer_pool_member_prototype_model['target'] = load_balancer_pool_member_target_prototype_model load_balancer_pool_member_prototype_model['weight'] = 50 + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPrototype model + load_balancer_pool_server_authentication_prototype_model = {} + load_balancer_pool_server_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_prototype_model['verify_certificate'] = True + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePrototype model load_balancer_pool_session_persistence_prototype_model = {} load_balancer_pool_session_persistence_prototype_model['cookie_name'] = 'my-cookie-name' @@ -28570,10 +28985,12 @@ def test_create_load_balancer_pool_value_error(self): algorithm = 'least_connections' health_monitor = load_balancer_pool_health_monitor_prototype_model protocol = 'http' + client_authentication = load_balancer_pool_client_authentication_prototype_model failsafe_policy = load_balancer_pool_failsafe_policy_prototype_model members = [load_balancer_pool_member_prototype_model] name = 'my-load-balancer-pool' proxy_protocol = 'disabled' + server_authentication = load_balancer_pool_server_authentication_prototype_model session_persistence = load_balancer_pool_session_persistence_prototype_model # Pass in all but one required param and check for a ValueError @@ -28689,7 +29106,7 @@ def test_get_load_balancer_pool_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools/testString') - mock_response = '{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' responses.add( responses.GET, url, @@ -28729,7 +29146,7 @@ def test_get_load_balancer_pool_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools/testString') - mock_response = '{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' responses.add( responses.GET, url, @@ -28774,7 +29191,7 @@ def test_update_load_balancer_pool_all_params(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools/testString') - mock_response = '{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' responses.add( responses.PATCH, url, @@ -28783,6 +29200,14 @@ def test_update_load_balancer_pool_all_params(self): status=200, ) + # Construct a dict representation of a CertificateInstanceIdentityByCRN model + certificate_instance_identity_model = {} + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPatch model + load_balancer_pool_client_authentication_patch_model = {} + load_balancer_pool_client_authentication_patch_model['certificate_instance'] = certificate_instance_identity_model + # Construct a dict representation of a LoadBalancerPoolFailsafePolicyTargetPatchLoadBalancerPoolIdentityById model load_balancer_pool_failsafe_policy_target_patch_model = {} load_balancer_pool_failsafe_policy_target_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -28792,15 +29217,38 @@ def test_update_load_balancer_pool_all_params(self): load_balancer_pool_failsafe_policy_patch_model['action'] = 'bypass' load_balancer_pool_failsafe_policy_patch_model['target'] = load_balancer_pool_failsafe_policy_target_patch_model + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype model + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch model + load_balancer_pool_health_monitor_type_httphttps_request_patch_model = {} + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['method'] = 'get' + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch model + load_balancer_pool_health_monitor_type_httphttps_response_patch_model = {} + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['codes'] = ['2XX'] + # Construct a dict representation of a LoadBalancerPoolHealthMonitorPatch model load_balancer_pool_health_monitor_patch_model = {} load_balancer_pool_health_monitor_patch_model['delay'] = 5 load_balancer_pool_health_monitor_patch_model['max_retries'] = 2 load_balancer_pool_health_monitor_patch_model['port'] = 22 + load_balancer_pool_health_monitor_patch_model['request'] = load_balancer_pool_health_monitor_type_httphttps_request_patch_model + load_balancer_pool_health_monitor_patch_model['response'] = load_balancer_pool_health_monitor_type_httphttps_response_patch_model load_balancer_pool_health_monitor_patch_model['timeout'] = 2 load_balancer_pool_health_monitor_patch_model['type'] = 'http' load_balancer_pool_health_monitor_patch_model['url_path'] = '/' + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPatch model + load_balancer_pool_server_authentication_patch_model = {} + load_balancer_pool_server_authentication_patch_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_patch_model['verify_certificate'] = True + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePatch model load_balancer_pool_session_persistence_patch_model = {} load_balancer_pool_session_persistence_patch_model['cookie_name'] = 'my-cookie-name' @@ -28809,23 +29257,27 @@ def test_update_load_balancer_pool_all_params(self): # Construct a dict representation of a LoadBalancerPoolPatch model load_balancer_pool_patch_model = {} load_balancer_pool_patch_model['algorithm'] = 'least_connections' + load_balancer_pool_patch_model['client_authentication'] = load_balancer_pool_client_authentication_patch_model load_balancer_pool_patch_model['failsafe_policy'] = load_balancer_pool_failsafe_policy_patch_model load_balancer_pool_patch_model['health_monitor'] = load_balancer_pool_health_monitor_patch_model load_balancer_pool_patch_model['name'] = 'my-load-balancer-pool' load_balancer_pool_patch_model['protocol'] = 'http' load_balancer_pool_patch_model['proxy_protocol'] = 'disabled' + load_balancer_pool_patch_model['server_authentication'] = load_balancer_pool_server_authentication_patch_model load_balancer_pool_patch_model['session_persistence'] = load_balancer_pool_session_persistence_patch_model # Set up parameter values load_balancer_id = 'testString' id = 'testString' load_balancer_pool_patch = load_balancer_pool_patch_model + if_match = 'W/"96d225c4-56bd-43d9-98fc-d7148e5c5028"' # Invoke method response = _service.update_load_balancer_pool( load_balancer_id, id, load_balancer_pool_patch, + if_match=if_match, headers={}, ) @@ -28845,6 +29297,117 @@ def test_update_load_balancer_pool_all_params_with_retries(self): _service.disable_retries() self.test_update_load_balancer_pool_all_params() + @responses.activate + def test_update_load_balancer_pool_required_params(self): + """ + test_update_load_balancer_pool_required_params() + """ + # Set up mock + url = preprocess_url('/load_balancers/testString/pools/testString') + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + responses.add( + responses.PATCH, + url, + body=mock_response, + content_type='application/json', + status=200, + ) + + # Construct a dict representation of a CertificateInstanceIdentityByCRN model + certificate_instance_identity_model = {} + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPatch model + load_balancer_pool_client_authentication_patch_model = {} + load_balancer_pool_client_authentication_patch_model['certificate_instance'] = certificate_instance_identity_model + + # Construct a dict representation of a LoadBalancerPoolFailsafePolicyTargetPatchLoadBalancerPoolIdentityById model + load_balancer_pool_failsafe_policy_target_patch_model = {} + load_balancer_pool_failsafe_policy_target_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' + + # Construct a dict representation of a LoadBalancerPoolFailsafePolicyPatch model + load_balancer_pool_failsafe_policy_patch_model = {} + load_balancer_pool_failsafe_policy_patch_model['action'] = 'bypass' + load_balancer_pool_failsafe_policy_patch_model['target'] = load_balancer_pool_failsafe_policy_target_patch_model + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype model + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch model + load_balancer_pool_health_monitor_type_httphttps_request_patch_model = {} + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['method'] = 'get' + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch model + load_balancer_pool_health_monitor_type_httphttps_response_patch_model = {} + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['codes'] = ['2XX'] + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorPatch model + load_balancer_pool_health_monitor_patch_model = {} + load_balancer_pool_health_monitor_patch_model['delay'] = 5 + load_balancer_pool_health_monitor_patch_model['max_retries'] = 2 + load_balancer_pool_health_monitor_patch_model['port'] = 22 + load_balancer_pool_health_monitor_patch_model['request'] = load_balancer_pool_health_monitor_type_httphttps_request_patch_model + load_balancer_pool_health_monitor_patch_model['response'] = load_balancer_pool_health_monitor_type_httphttps_response_patch_model + load_balancer_pool_health_monitor_patch_model['timeout'] = 2 + load_balancer_pool_health_monitor_patch_model['type'] = 'http' + load_balancer_pool_health_monitor_patch_model['url_path'] = '/' + + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPatch model + load_balancer_pool_server_authentication_patch_model = {} + load_balancer_pool_server_authentication_patch_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_patch_model['verify_certificate'] = True + + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePatch model + load_balancer_pool_session_persistence_patch_model = {} + load_balancer_pool_session_persistence_patch_model['cookie_name'] = 'my-cookie-name' + load_balancer_pool_session_persistence_patch_model['type'] = 'app_cookie' + + # Construct a dict representation of a LoadBalancerPoolPatch model + load_balancer_pool_patch_model = {} + load_balancer_pool_patch_model['algorithm'] = 'least_connections' + load_balancer_pool_patch_model['client_authentication'] = load_balancer_pool_client_authentication_patch_model + load_balancer_pool_patch_model['failsafe_policy'] = load_balancer_pool_failsafe_policy_patch_model + load_balancer_pool_patch_model['health_monitor'] = load_balancer_pool_health_monitor_patch_model + load_balancer_pool_patch_model['name'] = 'my-load-balancer-pool' + load_balancer_pool_patch_model['protocol'] = 'http' + load_balancer_pool_patch_model['proxy_protocol'] = 'disabled' + load_balancer_pool_patch_model['server_authentication'] = load_balancer_pool_server_authentication_patch_model + load_balancer_pool_patch_model['session_persistence'] = load_balancer_pool_session_persistence_patch_model + + # Set up parameter values + load_balancer_id = 'testString' + id = 'testString' + load_balancer_pool_patch = load_balancer_pool_patch_model + + # Invoke method + response = _service.update_load_balancer_pool( + load_balancer_id, + id, + load_balancer_pool_patch, + headers={}, + ) + + # Check for correct operation + assert len(responses.calls) == 1 + assert response.status_code == 200 + # Validate body params + req_body = json.loads(str(responses.calls[0].request.body, 'utf-8')) + assert req_body == load_balancer_pool_patch + + def test_update_load_balancer_pool_required_params_with_retries(self): + # Enable retries and run test_update_load_balancer_pool_required_params. + _service.enable_retries() + self.test_update_load_balancer_pool_required_params() + + # Disable retries and run test_update_load_balancer_pool_required_params. + _service.disable_retries() + self.test_update_load_balancer_pool_required_params() + @responses.activate def test_update_load_balancer_pool_value_error(self): """ @@ -28852,7 +29415,7 @@ def test_update_load_balancer_pool_value_error(self): """ # Set up mock url = preprocess_url('/load_balancers/testString/pools/testString') - mock_response = '{"algorithm": "least_connections", "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' + mock_response = '{"algorithm": "least_connections", "client_authentication": {"certificate_instance": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}}, "created_at": "2026-01-02T03:04:05.006Z", "failsafe_policy": {"action": "forward", "healthy_member_threshold_count": 0, "target": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "name": "my-load-balancer-pool"}}, "health_monitor": {"delay": 5, "max_retries": 2, "port": 22, "timeout": 2, "request": {"body": "ACTIVE", "headers": [{"field": "Content-Type", "value": "text/plain"}], "method": "get"}, "response": {"body_regex": "ACTIVE", "codes": ["2XX"]}, "type": "http", "url_path": "/"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004", "id": "r006-70294e14-4e61-11e8-bcf4-0242ac110004", "instance_group": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::instance-group:r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/instance_groups/r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "id": "r006-7b3ac170-01f3-43d6-87ec-f0ed11ed3f60", "name": "my-instance-group"}, "members": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a", "id": "r006-4a4b345f-cf6b-4326-8202-6d8229e9833a"}], "name": "my-load-balancer-pool", "protocol": "http", "provisioning_status": "active", "proxy_protocol": "disabled", "server_authentication": {"certificate_authority": {"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5"}, "verify_certificate": false}, "session_persistence": {"cookie_name": "my-cookie-name", "type": "app_cookie"}}' responses.add( responses.PATCH, url, @@ -28861,6 +29424,14 @@ def test_update_load_balancer_pool_value_error(self): status=200, ) + # Construct a dict representation of a CertificateInstanceIdentityByCRN model + certificate_instance_identity_model = {} + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a dict representation of a LoadBalancerPoolClientAuthenticationPatch model + load_balancer_pool_client_authentication_patch_model = {} + load_balancer_pool_client_authentication_patch_model['certificate_instance'] = certificate_instance_identity_model + # Construct a dict representation of a LoadBalancerPoolFailsafePolicyTargetPatchLoadBalancerPoolIdentityById model load_balancer_pool_failsafe_policy_target_patch_model = {} load_balancer_pool_failsafe_policy_target_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -28870,15 +29441,38 @@ def test_update_load_balancer_pool_value_error(self): load_balancer_pool_failsafe_policy_patch_model['action'] = 'bypass' load_balancer_pool_failsafe_policy_patch_model['target'] = load_balancer_pool_failsafe_policy_target_patch_model + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype model + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch model + load_balancer_pool_health_monitor_type_httphttps_request_patch_model = {} + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['method'] = 'get' + + # Construct a dict representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch model + load_balancer_pool_health_monitor_type_httphttps_response_patch_model = {} + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['codes'] = ['2XX'] + # Construct a dict representation of a LoadBalancerPoolHealthMonitorPatch model load_balancer_pool_health_monitor_patch_model = {} load_balancer_pool_health_monitor_patch_model['delay'] = 5 load_balancer_pool_health_monitor_patch_model['max_retries'] = 2 load_balancer_pool_health_monitor_patch_model['port'] = 22 + load_balancer_pool_health_monitor_patch_model['request'] = load_balancer_pool_health_monitor_type_httphttps_request_patch_model + load_balancer_pool_health_monitor_patch_model['response'] = load_balancer_pool_health_monitor_type_httphttps_response_patch_model load_balancer_pool_health_monitor_patch_model['timeout'] = 2 load_balancer_pool_health_monitor_patch_model['type'] = 'http' load_balancer_pool_health_monitor_patch_model['url_path'] = '/' + # Construct a dict representation of a LoadBalancerPoolServerAuthenticationPatch model + load_balancer_pool_server_authentication_patch_model = {} + load_balancer_pool_server_authentication_patch_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_patch_model['verify_certificate'] = True + # Construct a dict representation of a LoadBalancerPoolSessionPersistencePatch model load_balancer_pool_session_persistence_patch_model = {} load_balancer_pool_session_persistence_patch_model['cookie_name'] = 'my-cookie-name' @@ -28887,11 +29481,13 @@ def test_update_load_balancer_pool_value_error(self): # Construct a dict representation of a LoadBalancerPoolPatch model load_balancer_pool_patch_model = {} load_balancer_pool_patch_model['algorithm'] = 'least_connections' + load_balancer_pool_patch_model['client_authentication'] = load_balancer_pool_client_authentication_patch_model load_balancer_pool_patch_model['failsafe_policy'] = load_balancer_pool_failsafe_policy_patch_model load_balancer_pool_patch_model['health_monitor'] = load_balancer_pool_health_monitor_patch_model load_balancer_pool_patch_model['name'] = 'my-load-balancer-pool' load_balancer_pool_patch_model['protocol'] = 'http' load_balancer_pool_patch_model['proxy_protocol'] = 'disabled' + load_balancer_pool_patch_model['server_authentication'] = load_balancer_pool_server_authentication_patch_model load_balancer_pool_patch_model['session_persistence'] = load_balancer_pool_session_persistence_patch_model # Set up parameter values @@ -35721,15 +36317,13 @@ def test_create_security_group_all_params(self): security_group_rule_remote_prototype_model = {} security_group_rule_remote_prototype_model['address'] = '192.168.3.4' - # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolTCPUDP model + # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolAnyPrototype model security_group_rule_prototype_model = {} security_group_rule_prototype_model['direction'] = 'inbound' security_group_rule_prototype_model['ip_version'] = 'ipv4' security_group_rule_prototype_model['local'] = security_group_rule_local_prototype_model security_group_rule_prototype_model['name'] = 'my-rule-1' security_group_rule_prototype_model['remote'] = security_group_rule_remote_prototype_model - security_group_rule_prototype_model['port_max'] = 22 - security_group_rule_prototype_model['port_min'] = 22 security_group_rule_prototype_model['protocol'] = 'ah' # Set up parameter values @@ -35798,15 +36392,13 @@ def test_create_security_group_value_error(self): security_group_rule_remote_prototype_model = {} security_group_rule_remote_prototype_model['address'] = '192.168.3.4' - # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolTCPUDP model + # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolAnyPrototype model security_group_rule_prototype_model = {} security_group_rule_prototype_model['direction'] = 'inbound' security_group_rule_prototype_model['ip_version'] = 'ipv4' security_group_rule_prototype_model['local'] = security_group_rule_local_prototype_model security_group_rule_prototype_model['name'] = 'my-rule-1' security_group_rule_prototype_model['remote'] = security_group_rule_remote_prototype_model - security_group_rule_prototype_model['port_max'] = 22 - security_group_rule_prototype_model['port_min'] = 22 security_group_rule_prototype_model['protocol'] = 'ah' # Set up parameter values @@ -36196,15 +36788,13 @@ def test_create_security_group_rule_all_params(self): security_group_rule_remote_prototype_model = {} security_group_rule_remote_prototype_model['address'] = '192.168.3.4' - # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolTCPUDP model + # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolAnyPrototype model security_group_rule_prototype_model = {} security_group_rule_prototype_model['direction'] = 'inbound' security_group_rule_prototype_model['ip_version'] = 'ipv4' security_group_rule_prototype_model['local'] = security_group_rule_local_prototype_model security_group_rule_prototype_model['name'] = 'my-rule-1' security_group_rule_prototype_model['remote'] = security_group_rule_remote_prototype_model - security_group_rule_prototype_model['port_max'] = 22 - security_group_rule_prototype_model['port_min'] = 22 security_group_rule_prototype_model['protocol'] = 'ah' # Set up parameter values @@ -36258,15 +36848,13 @@ def test_create_security_group_rule_value_error(self): security_group_rule_remote_prototype_model = {} security_group_rule_remote_prototype_model['address'] = '192.168.3.4' - # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolTCPUDP model + # Construct a dict representation of a SecurityGroupRulePrototypeSecurityGroupRuleProtocolAnyPrototype model security_group_rule_prototype_model = {} security_group_rule_prototype_model['direction'] = 'inbound' security_group_rule_prototype_model['ip_version'] = 'ipv4' security_group_rule_prototype_model['local'] = security_group_rule_local_prototype_model security_group_rule_prototype_model['name'] = 'my-rule-1' security_group_rule_prototype_model['remote'] = security_group_rule_remote_prototype_model - security_group_rule_prototype_model['port_max'] = 22 - security_group_rule_prototype_model['port_min'] = 22 security_group_rule_prototype_model['protocol'] = 'ah' # Set up parameter values @@ -37591,17 +38179,13 @@ def test_create_share_all_params(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -37723,17 +38307,13 @@ def test_create_share_value_error(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -38928,17 +39508,13 @@ def test_create_share_mount_target_all_params(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -39015,17 +39591,13 @@ def test_create_share_mount_target_value_error(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -40207,7 +40779,7 @@ def test_list_snapshot_consistency_groups_all_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "snapshot_consistency_groups": [{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "snapshot_consistency_groups": [{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}], "total_count": 132}' responses.add( responses.GET, url, @@ -40223,6 +40795,7 @@ def test_list_snapshot_consistency_groups_all_params(self): name = 'my-name' sort = 'name' backup_policy_plan_id = 'testString' + backup_policy_job_id = 'testString' # Invoke method response = _service.list_snapshot_consistency_groups( @@ -40232,6 +40805,7 @@ def test_list_snapshot_consistency_groups_all_params(self): name=name, sort=sort, backup_policy_plan_id=backup_policy_plan_id, + backup_policy_job_id=backup_policy_job_id, headers={}, ) @@ -40247,6 +40821,7 @@ def test_list_snapshot_consistency_groups_all_params(self): assert 'name={}'.format(name) in query_string assert 'sort={}'.format(sort) in query_string assert 'backup_policy_plan.id={}'.format(backup_policy_plan_id) in query_string + assert 'backup_policy_job.id={}'.format(backup_policy_job_id) in query_string def test_list_snapshot_consistency_groups_all_params_with_retries(self): # Enable retries and run test_list_snapshot_consistency_groups_all_params. @@ -40264,7 +40839,7 @@ def test_list_snapshot_consistency_groups_required_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "snapshot_consistency_groups": [{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "snapshot_consistency_groups": [{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}], "total_count": 132}' responses.add( responses.GET, url, @@ -40296,7 +40871,7 @@ def test_list_snapshot_consistency_groups_value_error(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups') - mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "snapshot_consistency_groups": [{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}], "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "limit": 20, "next": {"href": "href"}, "snapshot_consistency_groups": [{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}], "total_count": 132}' responses.add( responses.GET, url, @@ -40329,8 +40904,8 @@ def test_list_snapshot_consistency_groups_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/snapshot_consistency_groups') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"snapshot_consistency_groups":[{"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' - mock_response2 = '{"snapshot_consistency_groups":[{"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"snapshot_consistency_groups":[{"backup_policy_job":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","id":"r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","resource_type":"backup_policy_job"},"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' + mock_response2 = '{"snapshot_consistency_groups":[{"backup_policy_job":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","id":"r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","resource_type":"backup_policy_job"},"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -40355,6 +40930,7 @@ def test_list_snapshot_consistency_groups_with_pager_get_next(self): name='my-name', sort='name', backup_policy_plan_id='testString', + backup_policy_job_id='testString', ) while pager.has_next(): next_page = pager.get_next() @@ -40369,8 +40945,8 @@ def test_list_snapshot_consistency_groups_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/snapshot_consistency_groups') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"snapshot_consistency_groups":[{"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' - mock_response2 = '{"snapshot_consistency_groups":[{"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"snapshot_consistency_groups":[{"backup_policy_job":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","id":"r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","resource_type":"backup_policy_job"},"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' + mock_response2 = '{"snapshot_consistency_groups":[{"backup_policy_job":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","id":"r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90","resource_type":"backup_policy_job"},"backup_policy_plan":{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","id":"r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178","name":"my-policy-plan","remote":{"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"backup_policy_plan"},"created_at":"2026-01-02T03:04:05.006Z","crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263","delete_snapshots_on_delete":true,"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263","id":"r006-fa329f6b-0e36-433f-a3bb-0df632e79263","lifecycle_state":"stable","name":"my-snapshot-consistency-group","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"snapshot_consistency_group","service_tags":["service_tags"],"snapshots":[{"crn":"crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263","deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263","id":"r006-f6bfa329-0e36-433f-a3bb-0df632e79263","name":"my-snapshot","remote":{"account":{"id":"bb1b52262f7441a586f49068482f1e60","resource_type":"account"},"region":{"href":"https://us-south.iaas.cloud.ibm.com/v1/regions/us-south","name":"us-south"}},"resource_type":"snapshot"}]}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -40394,6 +40970,7 @@ def test_list_snapshot_consistency_groups_with_pager_get_all(self): name='my-name', sort='name', backup_policy_plan_id='testString', + backup_policy_job_id='testString', ) all_results = pager.get_all() assert all_results is not None @@ -40412,7 +40989,7 @@ def test_create_snapshot_consistency_group_all_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.POST, url, @@ -40474,7 +41051,7 @@ def test_create_snapshot_consistency_group_value_error(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.POST, url, @@ -40538,7 +41115,7 @@ def test_delete_snapshot_consistency_group_all_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.DELETE, url, @@ -40576,7 +41153,7 @@ def test_delete_snapshot_consistency_group_value_error(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.DELETE, url, @@ -40619,7 +41196,7 @@ def test_get_snapshot_consistency_group_all_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.GET, url, @@ -40657,7 +41234,7 @@ def test_get_snapshot_consistency_group_value_error(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.GET, url, @@ -40700,7 +41277,7 @@ def test_update_snapshot_consistency_group_all_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.PATCH, url, @@ -40750,7 +41327,7 @@ def test_update_snapshot_consistency_group_required_params(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.PATCH, url, @@ -40798,7 +41375,7 @@ def test_update_snapshot_consistency_group_value_error(self): """ # Set up mock url = preprocess_url('/snapshot_consistency_groups/testString') - mock_response = '{"backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' + mock_response = '{"backup_policy_job": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "id": "r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90", "resource_type": "backup_policy_job"}, "backup_policy_plan": {"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/plans/r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "id": "r006-6da51cfe-6f7b-4638-a6ba-00e9c327b178", "name": "my-policy-plan", "remote": {"region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "backup_policy_plan"}, "created_at": "2026-01-02T03:04:05.006Z", "crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "delete_snapshots_on_delete": true, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "id": "r006-fa329f6b-0e36-433f-a3bb-0df632e79263", "lifecycle_state": "stable", "name": "my-snapshot-consistency-group", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "snapshot_consistency_group", "service_tags": ["service_tags"], "snapshots": [{"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot:r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263", "name": "my-snapshot", "remote": {"account": {"id": "bb1b52262f7441a586f49068482f1e60", "resource_type": "account"}, "region": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south", "name": "us-south"}}, "resource_type": "snapshot"}]}' responses.add( responses.PATCH, url, @@ -44423,17 +45000,13 @@ def test_create_virtual_network_interface_all_params(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -44515,17 +45088,13 @@ def test_create_virtual_network_interface_value_error(self): status=201, ) - # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext model + # Construct a dict representation of a VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById model virtual_network_interface_ip_prototype_model = {} - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext model + # Construct a dict representation of a VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById model virtual_network_interface_primary_ip_prototype_model = {} - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' # Construct a dict representation of a ResourceGroupIdentityById model resource_group_identity_model = {} @@ -50282,7 +50851,7 @@ def test_create_vpc_route_all_params(self): """ # Set up mock url = preprocess_url('/vpcs/testString/routes') - mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routing_tables/r006-6885e83f-03b2-4603-8a86-db2a0f55c840/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.POST, url, @@ -50351,7 +50920,7 @@ def test_create_vpc_route_value_error(self): """ # Set up mock url = preprocess_url('/vpcs/testString/routes') - mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routing_tables/r006-6885e83f-03b2-4603-8a86-db2a0f55c840/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.POST, url, @@ -50490,7 +51059,7 @@ def test_get_vpc_route_all_params(self): """ # Set up mock url = preprocess_url('/vpcs/testString/routes/testString') - mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routing_tables/r006-6885e83f-03b2-4603-8a86-db2a0f55c840/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.GET, url, @@ -50530,7 +51099,7 @@ def test_get_vpc_route_value_error(self): """ # Set up mock url = preprocess_url('/vpcs/testString/routes/testString') - mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routing_tables/r006-6885e83f-03b2-4603-8a86-db2a0f55c840/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.GET, url, @@ -50575,7 +51144,7 @@ def test_update_vpc_route_all_params(self): """ # Set up mock url = preprocess_url('/vpcs/testString/routes/testString') - mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routing_tables/r006-6885e83f-03b2-4603-8a86-db2a0f55c840/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.PATCH, url, @@ -50631,7 +51200,7 @@ def test_update_vpc_route_value_error(self): """ # Set up mock url = preprocess_url('/vpcs/testString/routes/testString') - mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routing_tables/r006-6885e83f-03b2-4603-8a86-db2a0f55c840/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' + mock_response = '{"action": "deliver", "advertise": false, "created_at": "2026-01-02T03:04:05.006Z", "creator": {"crn": "crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "id": "0717-ddf51bec-3424-11e8-b467-0ed5f89f718b", "name": "my-vpn-gateway", "resource_type": "vpn_gateway"}, "destination": "192.168.3.0/24", "href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "id": "r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1", "lifecycle_state": "stable", "name": "my-vpc-routing-table-route", "next_hop": {"address": "192.168.3.4"}, "origin": "service", "priority": 1, "zone": {"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1", "name": "us-south-1"}}' responses.add( responses.PATCH, url, @@ -52123,7 +52692,7 @@ def test_list_ike_policies_all_params(self): """ # Set up mock url = preprocess_url('/ike_policies') - mock_response = '{"first": {"href": "href"}, "ike_policies": [{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "ike_policies": [{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -52168,7 +52737,7 @@ def test_list_ike_policies_required_params(self): """ # Set up mock url = preprocess_url('/ike_policies') - mock_response = '{"first": {"href": "href"}, "ike_policies": [{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "ike_policies": [{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -52200,7 +52769,7 @@ def test_list_ike_policies_value_error(self): """ # Set up mock url = preprocess_url('/ike_policies') - mock_response = '{"first": {"href": "href"}, "ike_policies": [{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "ike_policies": [{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -52233,8 +52802,8 @@ def test_list_ike_policies_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/ike_policies') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' - mock_response2 = '{"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","authentication_algorithms":["sha256"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"dh_groups":[14],"encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' + mock_response2 = '{"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","authentication_algorithms":["sha256"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"dh_groups":[14],"encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' responses.add( responses.GET, url, @@ -52269,8 +52838,8 @@ def test_list_ike_policies_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/ike_policies') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' - mock_response2 = '{"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","authentication_algorithms":["sha256"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"dh_groups":[14],"encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' + mock_response2 = '{"total_count":2,"ike_policies":[{"authentication_algorithm":"md5","authentication_algorithms":["sha256"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","dh_group":14,"dh_groups":[14],"encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","id":"r006-e98f46a3-1e4e-4195-b4e5-b8155192689d","ike_version":1,"key_lifetime":28800,"name":"my-ike-policy","negotiation_mode":"main","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ike_policy"}],"limit":1}' responses.add( responses.GET, url, @@ -52308,7 +52877,7 @@ def test_create_ike_policy_all_params(self): """ # Set up mock url = preprocess_url('/ike_policies') - mock_response = '{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' + mock_response = '{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' responses.add( responses.POST, url, @@ -52322,20 +52891,26 @@ def test_create_ike_policy_all_params(self): resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' # Set up parameter values + ike_version = 1 authentication_algorithm = 'sha256' + authentication_algorithms = ['sha256'] dh_group = 14 + dh_groups = [14] encryption_algorithm = 'aes128' - ike_version = 1 + encryption_algorithms = ['aes128'] key_lifetime = 28800 name = 'my-ike-policy' resource_group = resource_group_identity_model # Invoke method response = _service.create_ike_policy( - authentication_algorithm, - dh_group, - encryption_algorithm, ike_version, + authentication_algorithm=authentication_algorithm, + authentication_algorithms=authentication_algorithms, + dh_group=dh_group, + dh_groups=dh_groups, + encryption_algorithm=encryption_algorithm, + encryption_algorithms=encryption_algorithms, key_lifetime=key_lifetime, name=name, resource_group=resource_group, @@ -52347,10 +52922,13 @@ def test_create_ike_policy_all_params(self): assert response.status_code == 201 # Validate body params req_body = json.loads(str(responses.calls[0].request.body, 'utf-8')) + assert req_body['ike_version'] == 1 assert req_body['authentication_algorithm'] == 'sha256' + assert req_body['authentication_algorithms'] == ['sha256'] assert req_body['dh_group'] == 14 + assert req_body['dh_groups'] == [14] assert req_body['encryption_algorithm'] == 'aes128' - assert req_body['ike_version'] == 1 + assert req_body['encryption_algorithms'] == ['aes128'] assert req_body['key_lifetime'] == 28800 assert req_body['name'] == 'my-ike-policy' assert req_body['resource_group'] == resource_group_identity_model @@ -52371,7 +52949,7 @@ def test_create_ike_policy_value_error(self): """ # Set up mock url = preprocess_url('/ike_policies') - mock_response = '{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' + mock_response = '{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' responses.add( responses.POST, url, @@ -52385,19 +52963,19 @@ def test_create_ike_policy_value_error(self): resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' # Set up parameter values + ike_version = 1 authentication_algorithm = 'sha256' + authentication_algorithms = ['sha256'] dh_group = 14 + dh_groups = [14] encryption_algorithm = 'aes128' - ike_version = 1 + encryption_algorithms = ['aes128'] key_lifetime = 28800 name = 'my-ike-policy' resource_group = resource_group_identity_model # Pass in all but one required param and check for a ValueError req_param_dict = { - "authentication_algorithm": authentication_algorithm, - "dh_group": dh_group, - "encryption_algorithm": encryption_algorithm, "ike_version": ike_version, } for param in req_param_dict.keys(): @@ -52502,7 +53080,7 @@ def test_get_ike_policy_all_params(self): """ # Set up mock url = preprocess_url('/ike_policies/testString') - mock_response = '{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' + mock_response = '{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' responses.add( responses.GET, url, @@ -52540,7 +53118,7 @@ def test_get_ike_policy_value_error(self): """ # Set up mock url = preprocess_url('/ike_policies/testString') - mock_response = '{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' + mock_response = '{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' responses.add( responses.GET, url, @@ -52583,7 +53161,7 @@ def test_update_ike_policy_all_params(self): """ # Set up mock url = preprocess_url('/ike_policies/testString') - mock_response = '{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' + mock_response = '{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' responses.add( responses.PATCH, url, @@ -52595,8 +53173,11 @@ def test_update_ike_policy_all_params(self): # Construct a dict representation of a IKEPolicyPatch model ike_policy_patch_model = {} ike_policy_patch_model['authentication_algorithm'] = 'sha256' + ike_policy_patch_model['authentication_algorithms'] = ['sha256'] ike_policy_patch_model['dh_group'] = 14 + ike_policy_patch_model['dh_groups'] = [14] ike_policy_patch_model['encryption_algorithm'] = 'aes128' + ike_policy_patch_model['encryption_algorithms'] = ['aes128'] ike_policy_patch_model['ike_version'] = 1 ike_policy_patch_model['key_lifetime'] = 28800 ike_policy_patch_model['name'] = 'my-ike-policy' @@ -52635,7 +53216,7 @@ def test_update_ike_policy_value_error(self): """ # Set up mock url = preprocess_url('/ike_policies/testString') - mock_response = '{"authentication_algorithm": "md5", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' + mock_response = '{"authentication_algorithm": "md5", "authentication_algorithms": ["sha256"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "dh_group": 14, "dh_groups": [14], "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d", "ike_version": 1, "key_lifetime": 28800, "name": "my-ike-policy", "negotiation_mode": "main", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ike_policy"}' responses.add( responses.PATCH, url, @@ -52647,8 +53228,11 @@ def test_update_ike_policy_value_error(self): # Construct a dict representation of a IKEPolicyPatch model ike_policy_patch_model = {} ike_policy_patch_model['authentication_algorithm'] = 'sha256' + ike_policy_patch_model['authentication_algorithms'] = ['sha256'] ike_policy_patch_model['dh_group'] = 14 + ike_policy_patch_model['dh_groups'] = [14] ike_policy_patch_model['encryption_algorithm'] = 'aes128' + ike_policy_patch_model['encryption_algorithms'] = ['aes128'] ike_policy_patch_model['ike_version'] = 1 ike_policy_patch_model['key_lifetime'] = 28800 ike_policy_patch_model['name'] = 'my-ike-policy' @@ -52888,7 +53472,7 @@ def test_list_ipsec_policies_all_params(self): """ # Set up mock url = preprocess_url('/ipsec_policies') - mock_response = '{"first": {"href": "href"}, "ipsec_policies": [{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "ipsec_policies": [{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -52933,7 +53517,7 @@ def test_list_ipsec_policies_required_params(self): """ # Set up mock url = preprocess_url('/ipsec_policies') - mock_response = '{"first": {"href": "href"}, "ipsec_policies": [{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "ipsec_policies": [{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -52965,7 +53549,7 @@ def test_list_ipsec_policies_value_error(self): """ # Set up mock url = preprocess_url('/ipsec_policies') - mock_response = '{"first": {"href": "href"}, "ipsec_policies": [{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' + mock_response = '{"first": {"href": "href"}, "ipsec_policies": [{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}], "limit": 20, "next": {"href": "href"}, "total_count": 132}' responses.add( responses.GET, url, @@ -52998,8 +53582,8 @@ def test_list_ipsec_policies_with_pager_get_next(self): """ # Set up a two-page mock response url = preprocess_url('/ipsec_policies') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"ipsec_policies":[{"authentication_algorithm":"disabled","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' - mock_response2 = '{"ipsec_policies":[{"authentication_algorithm":"disabled","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"ipsec_policies":[{"authentication_algorithm":"disabled","authentication_algorithms":["disabled"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","pfs_groups":["disabled"],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' + mock_response2 = '{"ipsec_policies":[{"authentication_algorithm":"disabled","authentication_algorithms":["disabled"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","pfs_groups":["disabled"],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -53034,8 +53618,8 @@ def test_list_ipsec_policies_with_pager_get_all(self): """ # Set up a two-page mock response url = preprocess_url('/ipsec_policies') - mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"ipsec_policies":[{"authentication_algorithm":"disabled","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' - mock_response2 = '{"ipsec_policies":[{"authentication_algorithm":"disabled","connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' + mock_response1 = '{"next":{"href":"https://myhost.com/somePath?start=1"},"ipsec_policies":[{"authentication_algorithm":"disabled","authentication_algorithms":["disabled"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","pfs_groups":["disabled"],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' + mock_response2 = '{"ipsec_policies":[{"authentication_algorithm":"disabled","authentication_algorithms":["disabled"],"connections":[{"deleted":{"more_info":"https://cloud.ibm.com/apidocs/vpc#deleted-resources"},"href":"https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","id":"0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c","name":"my-vpn-gateway-connection","resource_type":"vpn_gateway_connection"}],"created_at":"2026-01-02T03:04:05.006Z","encapsulation_mode":"tunnel","encryption_algorithm":"aes128","encryption_algorithms":["aes128"],"href":"https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876","id":"r006-51eae621-dbbc-4c47-b623-b57a43c19876","key_lifetime":3600,"name":"my-ipsec-policy","pfs":"disabled","pfs_groups":["disabled"],"resource_group":{"href":"https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345","id":"fee82deba12e4c0fb69c3b09d1f12345","name":"my-resource-group"},"resource_type":"ipsec_policy","transform_protocol":"esp"}],"total_count":2,"limit":1}' responses.add( responses.GET, url, @@ -53073,7 +53657,7 @@ def test_create_ipsec_policy_all_params(self): """ # Set up mock url = preprocess_url('/ipsec_policies') - mock_response = '{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' + mock_response = '{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' responses.add( responses.POST, url, @@ -53088,19 +53672,25 @@ def test_create_ipsec_policy_all_params(self): # Set up parameter values authentication_algorithm = 'disabled' + authentication_algorithms = ['disabled'] encryption_algorithm = 'aes128' - pfs = 'disabled' + encryption_algorithms = ['aes128'] key_lifetime = 3600 name = 'my-ipsec-policy' + pfs = 'disabled' + pfs_groups = ['disabled'] resource_group = resource_group_identity_model # Invoke method response = _service.create_ipsec_policy( - authentication_algorithm, - encryption_algorithm, - pfs, + authentication_algorithm=authentication_algorithm, + authentication_algorithms=authentication_algorithms, + encryption_algorithm=encryption_algorithm, + encryption_algorithms=encryption_algorithms, key_lifetime=key_lifetime, name=name, + pfs=pfs, + pfs_groups=pfs_groups, resource_group=resource_group, headers={}, ) @@ -53111,10 +53701,13 @@ def test_create_ipsec_policy_all_params(self): # Validate body params req_body = json.loads(str(responses.calls[0].request.body, 'utf-8')) assert req_body['authentication_algorithm'] == 'disabled' + assert req_body['authentication_algorithms'] == ['disabled'] assert req_body['encryption_algorithm'] == 'aes128' - assert req_body['pfs'] == 'disabled' + assert req_body['encryption_algorithms'] == ['aes128'] assert req_body['key_lifetime'] == 3600 assert req_body['name'] == 'my-ipsec-policy' + assert req_body['pfs'] == 'disabled' + assert req_body['pfs_groups'] == ['disabled'] assert req_body['resource_group'] == resource_group_identity_model def test_create_ipsec_policy_all_params_with_retries(self): @@ -53133,7 +53726,7 @@ def test_create_ipsec_policy_value_error(self): """ # Set up mock url = preprocess_url('/ipsec_policies') - mock_response = '{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' + mock_response = '{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' responses.add( responses.POST, url, @@ -53148,17 +53741,17 @@ def test_create_ipsec_policy_value_error(self): # Set up parameter values authentication_algorithm = 'disabled' + authentication_algorithms = ['disabled'] encryption_algorithm = 'aes128' - pfs = 'disabled' + encryption_algorithms = ['aes128'] key_lifetime = 3600 name = 'my-ipsec-policy' + pfs = 'disabled' + pfs_groups = ['disabled'] resource_group = resource_group_identity_model # Pass in all but one required param and check for a ValueError req_param_dict = { - "authentication_algorithm": authentication_algorithm, - "encryption_algorithm": encryption_algorithm, - "pfs": pfs, } for param in req_param_dict.keys(): req_copy = {key: val if key is not param else None for (key, val) in req_param_dict.items()} @@ -53262,7 +53855,7 @@ def test_get_ipsec_policy_all_params(self): """ # Set up mock url = preprocess_url('/ipsec_policies/testString') - mock_response = '{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' + mock_response = '{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' responses.add( responses.GET, url, @@ -53300,7 +53893,7 @@ def test_get_ipsec_policy_value_error(self): """ # Set up mock url = preprocess_url('/ipsec_policies/testString') - mock_response = '{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' + mock_response = '{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' responses.add( responses.GET, url, @@ -53343,7 +53936,7 @@ def test_update_ipsec_policy_all_params(self): """ # Set up mock url = preprocess_url('/ipsec_policies/testString') - mock_response = '{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' + mock_response = '{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' responses.add( responses.PATCH, url, @@ -53355,10 +53948,13 @@ def test_update_ipsec_policy_all_params(self): # Construct a dict representation of a IPsecPolicyPatch model i_psec_policy_patch_model = {} i_psec_policy_patch_model['authentication_algorithm'] = 'disabled' + i_psec_policy_patch_model['authentication_algorithms'] = ['disabled'] i_psec_policy_patch_model['encryption_algorithm'] = 'aes128' + i_psec_policy_patch_model['encryption_algorithms'] = ['aes128'] i_psec_policy_patch_model['key_lifetime'] = 3600 i_psec_policy_patch_model['name'] = 'my-ipsec-policy' i_psec_policy_patch_model['pfs'] = 'disabled' + i_psec_policy_patch_model['pfs_groups'] = ['disabled'] # Set up parameter values id = 'testString' @@ -53394,7 +53990,7 @@ def test_update_ipsec_policy_value_error(self): """ # Set up mock url = preprocess_url('/ipsec_policies/testString') - mock_response = '{"authentication_algorithm": "disabled", "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' + mock_response = '{"authentication_algorithm": "disabled", "authentication_algorithms": ["disabled"], "connections": [{"deleted": {"more_info": "https://cloud.ibm.com/apidocs/vpc#deleted-resources"}, "href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b/connections/0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "id": "0717-52f69dc3-6a5c-4bcf-b264-e7fae279b15c", "name": "my-vpn-gateway-connection", "resource_type": "vpn_gateway_connection"}], "created_at": "2026-01-02T03:04:05.006Z", "encapsulation_mode": "tunnel", "encryption_algorithm": "aes128", "encryption_algorithms": ["aes128"], "href": "https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876", "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876", "key_lifetime": 3600, "name": "my-ipsec-policy", "pfs": "disabled", "pfs_groups": ["disabled"], "resource_group": {"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/fee82deba12e4c0fb69c3b09d1f12345", "id": "fee82deba12e4c0fb69c3b09d1f12345", "name": "my-resource-group"}, "resource_type": "ipsec_policy", "transform_protocol": "esp"}' responses.add( responses.PATCH, url, @@ -53406,10 +54002,13 @@ def test_update_ipsec_policy_value_error(self): # Construct a dict representation of a IPsecPolicyPatch model i_psec_policy_patch_model = {} i_psec_policy_patch_model['authentication_algorithm'] = 'disabled' + i_psec_policy_patch_model['authentication_algorithms'] = ['disabled'] i_psec_policy_patch_model['encryption_algorithm'] = 'aes128' + i_psec_policy_patch_model['encryption_algorithms'] = ['aes128'] i_psec_policy_patch_model['key_lifetime'] = 3600 i_psec_policy_patch_model['name'] = 'my-ipsec-policy' i_psec_policy_patch_model['pfs'] = 'disabled' + i_psec_policy_patch_model['pfs_groups'] = ['disabled'] # Set up parameter values id = 'testString' @@ -54206,7 +54805,7 @@ def test_update_vpn_gateway_value_error_with_retries(self): self.test_update_vpn_gateway_value_error() -class TestListVpnGatewayAdvertisedCidrs: +class TestListVpnGatewayAdvertisedCIDRs: """ Test Class for list_vpn_gateway_advertised_cidrs """ @@ -55365,7 +55964,7 @@ def test_update_vpn_gateway_connection_value_error_with_retries(self): self.test_update_vpn_gateway_connection_value_error() -class TestListVpnGatewayConnectionsLocalCidrs: +class TestListVpnGatewayConnectionsLocalCIDRs: """ Test Class for list_vpn_gateway_connections_local_cidrs """ @@ -55699,7 +56298,7 @@ def test_add_vpn_gateway_connections_local_cidr_value_error_with_retries(self): self.test_add_vpn_gateway_connections_local_cidr_value_error() -class TestListVpnGatewayConnectionsPeerCidrs: +class TestListVpnGatewayConnectionsPeerCIDRs: """ Test Class for list_vpn_gateway_connections_peer_cidrs """ @@ -58777,6 +59376,44 @@ def test_backup_policy_job_collection_serialization(self): assert backup_policy_job_collection_model_json2 == backup_policy_job_collection_model_json +class TestModel_BackupPolicyJobReference: + """ + Test Class for BackupPolicyJobReference + """ + + def test_backup_policy_job_reference_serialization(self): + """ + Test serialization/deserialization for BackupPolicyJobReference + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + # Construct a json representation of a BackupPolicyJobReference model + backup_policy_job_reference_model_json = {} + backup_policy_job_reference_model_json['deleted'] = deleted_model + backup_policy_job_reference_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90' + backup_policy_job_reference_model_json['id'] = 'r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90' + backup_policy_job_reference_model_json['resource_type'] = 'backup_policy_job' + + # Construct a model instance of BackupPolicyJobReference by calling from_dict on the json representation + backup_policy_job_reference_model = BackupPolicyJobReference.from_dict(backup_policy_job_reference_model_json) + assert backup_policy_job_reference_model != False + + # Construct a model instance of BackupPolicyJobReference by calling from_dict on the json representation + backup_policy_job_reference_model_dict = BackupPolicyJobReference.from_dict(backup_policy_job_reference_model_json).__dict__ + backup_policy_job_reference_model2 = BackupPolicyJobReference(**backup_policy_job_reference_model_dict) + + # Verify the model instances are equivalent + assert backup_policy_job_reference_model == backup_policy_job_reference_model2 + + # Convert model instance back to dict and verify no loss of data + backup_policy_job_reference_model_json2 = backup_policy_job_reference_model.to_dict() + assert backup_policy_job_reference_model_json2 == backup_policy_job_reference_model_json + + class TestModel_BackupPolicyJobStatusReason: """ Test Class for BackupPolicyJobStatusReason @@ -60847,10 +61484,8 @@ def test_bare_metal_server_primary_network_interface_prototype_serialization(sel # Construct dict forms of any model objects needed in order to build this model. - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -63027,6 +63662,68 @@ def test_cluster_network_subnet_reserved_ip_reference_serialization(self): assert cluster_network_subnet_reserved_ip_reference_model_json2 == cluster_network_subnet_reserved_ip_reference_model_json +class TestModel_CreateVpcRouteResponse: + """ + Test Class for CreateVpcRouteResponse + """ + + def test_create_vpc_route_response_serialization(self): + """ + Test serialization/deserialization for CreateVpcRouteResponse + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + route_creator_model = {} # RouteCreatorVPNGatewayReference + route_creator_model['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['deleted'] = deleted_model + route_creator_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['id'] = '0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['name'] = 'my-vpn-gateway' + route_creator_model['resource_type'] = 'vpn_gateway' + + route_next_hop_model = {} # RouteNextHopIP + route_next_hop_model['address'] = '192.168.3.4' + + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + + # Construct a json representation of a Route model + create_vpc_route_response_model_json = {} + create_vpc_route_response_model_json['action'] = 'deliver' + create_vpc_route_response_model_json['advertise'] = True + create_vpc_route_response_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' + create_vpc_route_response_model_json['creator'] = route_creator_model + create_vpc_route_response_model_json['destination'] = '192.168.3.0/24' + create_vpc_route_response_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1' + create_vpc_route_response_model_json['id'] = 'r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1' + create_vpc_route_response_model_json['lifecycle_state'] = 'stable' + create_vpc_route_response_model_json['name'] = 'my-vpc-routing-table-route' + create_vpc_route_response_model_json['next_hop'] = route_next_hop_model + create_vpc_route_response_model_json['origin'] = 'service' + create_vpc_route_response_model_json['priority'] = 1 + create_vpc_route_response_model_json['zone'] = zone_reference_model + + # Construct a model instance of Route by calling from_dict on the json representation + create_vpc_route_response_model = Route.from_dict(create_vpc_route_response_model_json) + assert create_vpc_route_response_model != False + + # Construct a model instance of Route by calling from_dict on the json representation + create_vpc_route_response_model_dict = Route.from_dict(create_vpc_route_response_model_json).__dict__ + create_vpc_route_response_model2 = Route(**create_vpc_route_response_model_dict) + + # Verify the model instances are equivalent + assert create_vpc_route_response_model == create_vpc_route_response_model2 + + # Convert model instance back to dict and verify no loss of data + create_vpc_route_response_model_json2 = create_vpc_route_response_model.to_dict() + assert create_vpc_route_response_model_json2 == create_vpc_route_response_model_json + + class TestModel_DNSInstanceReferenceLoadBalancerDNSContext: """ Test Class for DNSInstanceReferenceLoadBalancerDNSContext @@ -65770,6 +66467,68 @@ def test_flow_log_collector_patch_serialization(self): assert flow_log_collector_patch_model_json2 == flow_log_collector_patch_model_json +class TestModel_GetVpcRouteResponse: + """ + Test Class for GetVpcRouteResponse + """ + + def test_get_vpc_route_response_serialization(self): + """ + Test serialization/deserialization for GetVpcRouteResponse + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + route_creator_model = {} # RouteCreatorVPNGatewayReference + route_creator_model['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['deleted'] = deleted_model + route_creator_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['id'] = '0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['name'] = 'my-vpn-gateway' + route_creator_model['resource_type'] = 'vpn_gateway' + + route_next_hop_model = {} # RouteNextHopIP + route_next_hop_model['address'] = '192.168.3.4' + + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + + # Construct a json representation of a Route model + get_vpc_route_response_model_json = {} + get_vpc_route_response_model_json['action'] = 'deliver' + get_vpc_route_response_model_json['advertise'] = True + get_vpc_route_response_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' + get_vpc_route_response_model_json['creator'] = route_creator_model + get_vpc_route_response_model_json['destination'] = '192.168.3.0/24' + get_vpc_route_response_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1' + get_vpc_route_response_model_json['id'] = 'r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1' + get_vpc_route_response_model_json['lifecycle_state'] = 'stable' + get_vpc_route_response_model_json['name'] = 'my-vpc-routing-table-route' + get_vpc_route_response_model_json['next_hop'] = route_next_hop_model + get_vpc_route_response_model_json['origin'] = 'service' + get_vpc_route_response_model_json['priority'] = 1 + get_vpc_route_response_model_json['zone'] = zone_reference_model + + # Construct a model instance of Route by calling from_dict on the json representation + get_vpc_route_response_model = Route.from_dict(get_vpc_route_response_model_json) + assert get_vpc_route_response_model != False + + # Construct a model instance of Route by calling from_dict on the json representation + get_vpc_route_response_model_dict = Route.from_dict(get_vpc_route_response_model_json).__dict__ + get_vpc_route_response_model2 = Route(**get_vpc_route_response_model_dict) + + # Verify the model instances are equivalent + assert get_vpc_route_response_model == get_vpc_route_response_model2 + + # Convert model instance back to dict and verify no loss of data + get_vpc_route_response_model_json2 = get_vpc_route_response_model.to_dict() + assert get_vpc_route_response_model_json2 == get_vpc_route_response_model_json + + class TestModel_IKEPolicy: """ Test Class for IKEPolicy @@ -65800,10 +66559,13 @@ def test_ike_policy_serialization(self): # Construct a json representation of a IKEPolicy model ike_policy_model_json = {} ike_policy_model_json['authentication_algorithm'] = 'md5' + ike_policy_model_json['authentication_algorithms'] = ['sha256'] ike_policy_model_json['connections'] = [vpn_gateway_connection_reference_model] ike_policy_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' ike_policy_model_json['dh_group'] = 14 + ike_policy_model_json['dh_groups'] = [14] ike_policy_model_json['encryption_algorithm'] = 'aes128' + ike_policy_model_json['encryption_algorithms'] = ['aes128'] ike_policy_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d' ike_policy_model_json['id'] = 'r006-e98f46a3-1e4e-4195-b4e5-b8155192689d' ike_policy_model_json['ike_version'] = 1 @@ -65861,10 +66623,13 @@ def test_ike_policy_collection_serialization(self): ike_policy_model = {} # IKEPolicy ike_policy_model['authentication_algorithm'] = 'md5' + ike_policy_model['authentication_algorithms'] = ['sha256'] ike_policy_model['connections'] = [vpn_gateway_connection_reference_model] ike_policy_model['created_at'] = '2026-01-02T03:04:05.006000Z' ike_policy_model['dh_group'] = 14 + ike_policy_model['dh_groups'] = [14] ike_policy_model['encryption_algorithm'] = 'aes128' + ike_policy_model['encryption_algorithms'] = ['aes128'] ike_policy_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/ike_policies/r006-e98f46a3-1e4e-4195-b4e5-b8155192689d' ike_policy_model['id'] = 'r006-e98f46a3-1e4e-4195-b4e5-b8155192689d' ike_policy_model['ike_version'] = 1 @@ -66024,8 +66789,11 @@ def test_ike_policy_patch_serialization(self): # Construct a json representation of a IKEPolicyPatch model ike_policy_patch_model_json = {} ike_policy_patch_model_json['authentication_algorithm'] = 'sha256' + ike_policy_patch_model_json['authentication_algorithms'] = ['sha256'] ike_policy_patch_model_json['dh_group'] = 14 + ike_policy_patch_model_json['dh_groups'] = [14] ike_policy_patch_model_json['encryption_algorithm'] = 'aes128' + ike_policy_patch_model_json['encryption_algorithms'] = ['aes128'] ike_policy_patch_model_json['ike_version'] = 1 ike_policy_patch_model_json['key_lifetime'] = 28800 ike_policy_patch_model_json['name'] = 'my-ike-policy' @@ -66145,15 +66913,18 @@ def test_i_psec_policy_serialization(self): # Construct a json representation of a IPsecPolicy model i_psec_policy_model_json = {} i_psec_policy_model_json['authentication_algorithm'] = 'disabled' + i_psec_policy_model_json['authentication_algorithms'] = ['disabled'] i_psec_policy_model_json['connections'] = [vpn_gateway_connection_reference_model] i_psec_policy_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' i_psec_policy_model_json['encapsulation_mode'] = 'tunnel' i_psec_policy_model_json['encryption_algorithm'] = 'aes128' + i_psec_policy_model_json['encryption_algorithms'] = ['aes128'] i_psec_policy_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876' i_psec_policy_model_json['id'] = 'r006-51eae621-dbbc-4c47-b623-b57a43c19876' i_psec_policy_model_json['key_lifetime'] = 3600 i_psec_policy_model_json['name'] = 'my-ipsec-policy' i_psec_policy_model_json['pfs'] = 'disabled' + i_psec_policy_model_json['pfs_groups'] = ['disabled'] i_psec_policy_model_json['resource_group'] = resource_group_reference_model i_psec_policy_model_json['resource_type'] = 'ipsec_policy' i_psec_policy_model_json['transform_protocol'] = 'esp' @@ -66206,15 +66977,18 @@ def test_i_psec_policy_collection_serialization(self): i_psec_policy_model = {} # IPsecPolicy i_psec_policy_model['authentication_algorithm'] = 'disabled' + i_psec_policy_model['authentication_algorithms'] = ['disabled'] i_psec_policy_model['connections'] = [vpn_gateway_connection_reference_model] i_psec_policy_model['created_at'] = '2026-01-02T03:04:05.006000Z' i_psec_policy_model['encapsulation_mode'] = 'tunnel' i_psec_policy_model['encryption_algorithm'] = 'aes128' + i_psec_policy_model['encryption_algorithms'] = ['aes128'] i_psec_policy_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/ipsec_policies/r006-51eae621-dbbc-4c47-b623-b57a43c19876' i_psec_policy_model['id'] = 'r006-51eae621-dbbc-4c47-b623-b57a43c19876' i_psec_policy_model['key_lifetime'] = 3600 i_psec_policy_model['name'] = 'my-ipsec-policy' i_psec_policy_model['pfs'] = 'disabled' + i_psec_policy_model['pfs_groups'] = ['disabled'] i_psec_policy_model['resource_group'] = resource_group_reference_model i_psec_policy_model['resource_type'] = 'ipsec_policy' i_psec_policy_model['transform_protocol'] = 'esp' @@ -66369,10 +67143,13 @@ def test_i_psec_policy_patch_serialization(self): # Construct a json representation of a IPsecPolicyPatch model i_psec_policy_patch_model_json = {} i_psec_policy_patch_model_json['authentication_algorithm'] = 'disabled' + i_psec_policy_patch_model_json['authentication_algorithms'] = ['disabled'] i_psec_policy_patch_model_json['encryption_algorithm'] = 'aes128' + i_psec_policy_patch_model_json['encryption_algorithms'] = ['aes128'] i_psec_policy_patch_model_json['key_lifetime'] = 3600 i_psec_policy_patch_model_json['name'] = 'my-ipsec-policy' i_psec_policy_patch_model_json['pfs'] = 'disabled' + i_psec_policy_patch_model_json['pfs_groups'] = ['disabled'] # Construct a model instance of IPsecPolicyPatch by calling from_dict on the json representation i_psec_policy_patch_model = IPsecPolicyPatch.from_dict(i_psec_policy_patch_model_json) @@ -66511,6 +67288,10 @@ def test_image_serialization(self): image_status_reason_model['message'] = 'A failure occurred' image_status_reason_model['more_info'] = 'https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys' + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + # Construct a json representation of a Image model image_model_json = {} image_model_json['allowed_use'] = image_allowed_use_model @@ -66535,6 +67316,7 @@ def test_image_serialization(self): image_model_json['status_reasons'] = [image_status_reason_model] image_model_json['user_data_format'] = 'cloud_init' image_model_json['visibility'] = 'private' + image_model_json['zones'] = [zone_reference_model] # Construct a model instance of Image by calling from_dict on the json representation image_model = Image.from_dict(image_model_json) @@ -66813,6 +67595,10 @@ def test_image_collection_serialization(self): image_status_reason_model['message'] = 'A failure occurred' image_status_reason_model['more_info'] = 'https://cloud.ibm.com/docs/key-protect?topic=key-protect-restore-keys' + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + image_model = {} # Image image_model['allowed_use'] = image_allowed_use_model image_model['catalog_offering'] = image_catalog_offering_model @@ -66836,6 +67622,7 @@ def test_image_collection_serialization(self): image_model['status_reasons'] = [image_status_reason_model] image_model['user_data_format'] = 'cloud_init' image_model['visibility'] = 'private' + image_model['zones'] = [zone_reference_model] # Construct a json representation of a ImageCollection model image_collection_model_json = {} @@ -67593,6 +68380,13 @@ def test_instance_serialization(self): resource_group_reference_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' resource_group_reference_model['name'] = 'my-resource-group' + instance_software_attachment_reference_model = {} # InstanceSoftwareAttachmentReference + instance_software_attachment_reference_model['deleted'] = deleted_model + instance_software_attachment_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_reference_model['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_reference_model['name'] = 'my-software-attachment' + instance_software_attachment_reference_model['resource_type'] = 'instance_software_attachment' + instance_status_reason_model = {} # InstanceStatusReason instance_status_reason_model['code'] = 'cannot_start_storage' instance_status_reason_model['message'] = 'The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted' @@ -67658,9 +68452,11 @@ def test_instance_serialization(self): instance_model_json['reservation_affinity'] = instance_reservation_affinity_model instance_model_json['resource_group'] = resource_group_reference_model instance_model_json['resource_type'] = 'instance' + instance_model_json['software_attachments'] = [instance_software_attachment_reference_model] instance_model_json['startable'] = True instance_model_json['status'] = 'deleting' instance_model_json['status_reasons'] = [instance_status_reason_model] + instance_model_json['threads_per_core'] = 1 instance_model_json['total_network_bandwidth'] = 500 instance_model_json['total_volume_bandwidth'] = 500 instance_model_json['vcpu'] = instance_vcpu_model @@ -68219,10 +69015,8 @@ def test_instance_cluster_network_attachment_prototype_instance_context_serializ # Construct dict forms of any model objects needed in order to build this model. - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -68501,6 +69295,13 @@ def test_instance_collection_serialization(self): resource_group_reference_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' resource_group_reference_model['name'] = 'my-resource-group' + instance_software_attachment_reference_model = {} # InstanceSoftwareAttachmentReference + instance_software_attachment_reference_model['deleted'] = deleted_model + instance_software_attachment_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_reference_model['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_reference_model['name'] = 'my-software-attachment' + instance_software_attachment_reference_model['resource_type'] = 'instance_software_attachment' + instance_status_reason_model = {} # InstanceStatusReason instance_status_reason_model['code'] = 'cannot_start_storage' instance_status_reason_model['message'] = 'The virtual server instance is unusable because the encryption key for the boot volume\nhas been deleted' @@ -68565,9 +69366,11 @@ def test_instance_collection_serialization(self): instance_model['reservation_affinity'] = instance_reservation_affinity_model instance_model['resource_group'] = resource_group_reference_model instance_model['resource_type'] = 'instance' + instance_model['software_attachments'] = [instance_software_attachment_reference_model] instance_model['startable'] = True instance_model['status'] = 'deleting' instance_model['status_reasons'] = [instance_status_reason_model] + instance_model['threads_per_core'] = 1 instance_model['total_network_bandwidth'] = 500 instance_model['total_volume_bandwidth'] = 500 instance_model['vcpu'] = instance_vcpu_model @@ -70379,15 +71182,11 @@ def test_instance_network_attachment_prototype_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -70547,6 +71346,7 @@ def test_instance_patch_serialization(self): instance_patch_model_json['placement_target'] = instance_placement_target_patch_model instance_patch_model_json['profile'] = instance_patch_profile_model instance_patch_model_json['reservation_affinity'] = instance_reservation_affinity_patch_model + instance_patch_model_json['threads_per_core'] = 1 instance_patch_model_json['total_volume_bandwidth'] = 500 instance_patch_model_json['vcpu'] = instance_vcpu_patch_model instance_patch_model_json['volume_bandwidth_qos_mode'] = 'pooled' @@ -70676,6 +71476,15 @@ def test_instance_profile_serialization(self): cluster_network_profile_reference_model['name'] = 'h100' cluster_network_profile_reference_model['resource_type'] = 'cluster_network_profile' + instance_profile_supported_vcpu_count_enum_model = {} # InstanceProfileSupportedVCPUCountEnum + instance_profile_supported_vcpu_count_enum_model['type'] = 'enum' + instance_profile_supported_vcpu_count_enum_model['values'] = [2, 4] + + instance_profile_threads_per_core_enum_model = {} # InstanceProfileThreadsPerCoreEnum + instance_profile_threads_per_core_enum_model['default'] = 38 + instance_profile_threads_per_core_enum_model['type'] = 'enum' + instance_profile_threads_per_core_enum_model['values'] = [1, 2] + instance_profile_volume_bandwidth_model = {} # InstanceProfileVolumeBandwidthFixed instance_profile_volume_bandwidth_model['type'] = 'fixed' instance_profile_volume_bandwidth_model['value'] = 20000 @@ -70706,6 +71515,10 @@ def test_instance_profile_serialization(self): instance_profile_volume_bandwidth_qo_s_modes_model['type'] = 'enum' instance_profile_volume_bandwidth_qo_s_modes_model['values'] = ['pooled', 'weighted'] + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + # Construct a json representation of a InstanceProfile model instance_profile_model_json = {} instance_profile_model_json['availability_class'] = instance_profile_availability_class_model @@ -70732,6 +71545,8 @@ def test_instance_profile_serialization(self): instance_profile_model_json['secure_boot_modes'] = instance_profile_supported_secure_boot_modes_model instance_profile_model_json['status'] = 'current' instance_profile_model_json['supported_cluster_network_profiles'] = [cluster_network_profile_reference_model] + instance_profile_model_json['supported_vcpu_count'] = instance_profile_supported_vcpu_count_enum_model + instance_profile_model_json['threads_per_core'] = instance_profile_threads_per_core_enum_model instance_profile_model_json['total_volume_bandwidth'] = instance_profile_volume_bandwidth_model instance_profile_model_json['vcpu_architecture'] = instance_profile_vcpu_architecture_model instance_profile_model_json['vcpu_burst_limit'] = instance_profile_vcpu_burst_limit_model @@ -70739,6 +71554,7 @@ def test_instance_profile_serialization(self): instance_profile_model_json['vcpu_manufacturer'] = instance_profile_vcpu_manufacturer_model instance_profile_model_json['vcpu_percentage'] = instance_profile_vcpu_percentage_model instance_profile_model_json['volume_bandwidth_qos_modes'] = instance_profile_volume_bandwidth_qo_s_modes_model + instance_profile_model_json['zones'] = [zone_reference_model] # Construct a model instance of InstanceProfile by calling from_dict on the json representation instance_profile_model = InstanceProfile.from_dict(instance_profile_model_json) @@ -70768,6 +71584,9 @@ def test_instance_profile_collection_serialization(self): # Construct dict forms of any model objects needed in order to build this model. + page_link_model = {} # PageLink + page_link_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/instance/profiles?limit=20' + instance_profile_availability_class_model = {} # InstanceProfileAvailabilityClassEnum instance_profile_availability_class_model['default'] = 'standard' instance_profile_availability_class_model['type'] = 'enum' @@ -70865,6 +71684,15 @@ def test_instance_profile_collection_serialization(self): cluster_network_profile_reference_model['name'] = 'h100' cluster_network_profile_reference_model['resource_type'] = 'cluster_network_profile' + instance_profile_supported_vcpu_count_enum_model = {} # InstanceProfileSupportedVCPUCountEnum + instance_profile_supported_vcpu_count_enum_model['type'] = 'enum' + instance_profile_supported_vcpu_count_enum_model['values'] = [2, 4] + + instance_profile_threads_per_core_enum_model = {} # InstanceProfileThreadsPerCoreEnum + instance_profile_threads_per_core_enum_model['default'] = 38 + instance_profile_threads_per_core_enum_model['type'] = 'enum' + instance_profile_threads_per_core_enum_model['values'] = [1, 2] + instance_profile_volume_bandwidth_model = {} # InstanceProfileVolumeBandwidthFixed instance_profile_volume_bandwidth_model['type'] = 'fixed' instance_profile_volume_bandwidth_model['value'] = 20000 @@ -70895,6 +71723,10 @@ def test_instance_profile_collection_serialization(self): instance_profile_volume_bandwidth_qo_s_modes_model['type'] = 'enum' instance_profile_volume_bandwidth_qo_s_modes_model['values'] = ['pooled', 'weighted'] + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + instance_profile_model = {} # InstanceProfile instance_profile_model['availability_class'] = instance_profile_availability_class_model instance_profile_model['bandwidth'] = instance_profile_bandwidth_model @@ -70920,6 +71752,8 @@ def test_instance_profile_collection_serialization(self): instance_profile_model['secure_boot_modes'] = instance_profile_supported_secure_boot_modes_model instance_profile_model['status'] = 'current' instance_profile_model['supported_cluster_network_profiles'] = [cluster_network_profile_reference_model] + instance_profile_model['supported_vcpu_count'] = instance_profile_supported_vcpu_count_enum_model + instance_profile_model['threads_per_core'] = instance_profile_threads_per_core_enum_model instance_profile_model['total_volume_bandwidth'] = instance_profile_volume_bandwidth_model instance_profile_model['vcpu_architecture'] = instance_profile_vcpu_architecture_model instance_profile_model['vcpu_burst_limit'] = instance_profile_vcpu_burst_limit_model @@ -70927,10 +71761,15 @@ def test_instance_profile_collection_serialization(self): instance_profile_model['vcpu_manufacturer'] = instance_profile_vcpu_manufacturer_model instance_profile_model['vcpu_percentage'] = instance_profile_vcpu_percentage_model instance_profile_model['volume_bandwidth_qos_modes'] = instance_profile_volume_bandwidth_qo_s_modes_model + instance_profile_model['zones'] = [zone_reference_model] # Construct a json representation of a InstanceProfileCollection model instance_profile_collection_model_json = {} + instance_profile_collection_model_json['first'] = page_link_model + instance_profile_collection_model_json['limit'] = 20 + instance_profile_collection_model_json['next'] = page_link_model instance_profile_collection_model_json['profiles'] = [instance_profile_model] + instance_profile_collection_model_json['total_count'] = 132 # Construct a model instance of InstanceProfileCollection by calling from_dict on the json representation instance_profile_collection_model = InstanceProfileCollection.from_dict(instance_profile_collection_model_json) @@ -71248,6 +72087,69 @@ def test_instance_profile_supported_secure_boot_modes_serialization(self): assert instance_profile_supported_secure_boot_modes_model_json2 == instance_profile_supported_secure_boot_modes_model_json +class TestModel_InstanceProfileSupportedVCPUCountEnum: + """ + Test Class for InstanceProfileSupportedVCPUCountEnum + """ + + def test_instance_profile_supported_vcpu_count_enum_serialization(self): + """ + Test serialization/deserialization for InstanceProfileSupportedVCPUCountEnum + """ + + # Construct a json representation of a InstanceProfileSupportedVCPUCountEnum model + instance_profile_supported_vcpu_count_enum_model_json = {} + instance_profile_supported_vcpu_count_enum_model_json['type'] = 'enum' + instance_profile_supported_vcpu_count_enum_model_json['values'] = [2, 4] + + # Construct a model instance of InstanceProfileSupportedVCPUCountEnum by calling from_dict on the json representation + instance_profile_supported_vcpu_count_enum_model = InstanceProfileSupportedVCPUCountEnum.from_dict(instance_profile_supported_vcpu_count_enum_model_json) + assert instance_profile_supported_vcpu_count_enum_model != False + + # Construct a model instance of InstanceProfileSupportedVCPUCountEnum by calling from_dict on the json representation + instance_profile_supported_vcpu_count_enum_model_dict = InstanceProfileSupportedVCPUCountEnum.from_dict(instance_profile_supported_vcpu_count_enum_model_json).__dict__ + instance_profile_supported_vcpu_count_enum_model2 = InstanceProfileSupportedVCPUCountEnum(**instance_profile_supported_vcpu_count_enum_model_dict) + + # Verify the model instances are equivalent + assert instance_profile_supported_vcpu_count_enum_model == instance_profile_supported_vcpu_count_enum_model2 + + # Convert model instance back to dict and verify no loss of data + instance_profile_supported_vcpu_count_enum_model_json2 = instance_profile_supported_vcpu_count_enum_model.to_dict() + assert instance_profile_supported_vcpu_count_enum_model_json2 == instance_profile_supported_vcpu_count_enum_model_json + + +class TestModel_InstanceProfileThreadsPerCoreEnum: + """ + Test Class for InstanceProfileThreadsPerCoreEnum + """ + + def test_instance_profile_threads_per_core_enum_serialization(self): + """ + Test serialization/deserialization for InstanceProfileThreadsPerCoreEnum + """ + + # Construct a json representation of a InstanceProfileThreadsPerCoreEnum model + instance_profile_threads_per_core_enum_model_json = {} + instance_profile_threads_per_core_enum_model_json['default'] = 38 + instance_profile_threads_per_core_enum_model_json['type'] = 'enum' + instance_profile_threads_per_core_enum_model_json['values'] = [1, 2] + + # Construct a model instance of InstanceProfileThreadsPerCoreEnum by calling from_dict on the json representation + instance_profile_threads_per_core_enum_model = InstanceProfileThreadsPerCoreEnum.from_dict(instance_profile_threads_per_core_enum_model_json) + assert instance_profile_threads_per_core_enum_model != False + + # Construct a model instance of InstanceProfileThreadsPerCoreEnum by calling from_dict on the json representation + instance_profile_threads_per_core_enum_model_dict = InstanceProfileThreadsPerCoreEnum.from_dict(instance_profile_threads_per_core_enum_model_json).__dict__ + instance_profile_threads_per_core_enum_model2 = InstanceProfileThreadsPerCoreEnum(**instance_profile_threads_per_core_enum_model_dict) + + # Verify the model instances are equivalent + assert instance_profile_threads_per_core_enum_model == instance_profile_threads_per_core_enum_model2 + + # Convert model instance back to dict and verify no loss of data + instance_profile_threads_per_core_enum_model_json2 = instance_profile_threads_per_core_enum_model.to_dict() + assert instance_profile_threads_per_core_enum_model_json2 == instance_profile_threads_per_core_enum_model_json + + class TestModel_InstanceProfileVCPUArchitecture: """ Test Class for InstanceProfileVCPUArchitecture @@ -71466,6 +72368,434 @@ def test_instance_reservation_affinity_prototype_serialization(self): assert instance_reservation_affinity_prototype_model_json2 == instance_reservation_affinity_prototype_model_json +class TestModel_InstanceSoftwareAttachment: + """ + Test Class for InstanceSoftwareAttachment + """ + + def test_instance_software_attachment_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachment + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + catalog_offering_version_plan_reference_model = {} # CatalogOfferingVersionPlanReference + catalog_offering_version_plan_reference_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e' + catalog_offering_version_plan_reference_model['deleted'] = deleted_model + + catalog_offering_version_reference_model = {} # CatalogOfferingVersionReference + catalog_offering_version_reference_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d' + + instance_software_attachment_catalog_offering_model = {} # InstanceSoftwareAttachmentCatalogOffering + instance_software_attachment_catalog_offering_model['plan'] = catalog_offering_version_plan_reference_model + instance_software_attachment_catalog_offering_model['version'] = catalog_offering_version_reference_model + + instance_software_attachment_entitlement_licensed_software_vendor_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor + instance_software_attachment_entitlement_licensed_software_vendor_model['name'] = 'fortinet' + + instance_software_attachment_entitlement_licensed_software_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftware + instance_software_attachment_entitlement_licensed_software_model['sku'] = 'FC1-10-IDCLD-445-02-12' + instance_software_attachment_entitlement_licensed_software_model['vendor'] = instance_software_attachment_entitlement_licensed_software_vendor_model + + instance_software_attachment_entitlement_model = {} # InstanceSoftwareAttachmentEntitlement + instance_software_attachment_entitlement_model['licensed_software'] = [instance_software_attachment_entitlement_licensed_software_model] + + instance_software_attachment_lifecycle_reason_model = {} # InstanceSoftwareAttachmentLifecycleReason + instance_software_attachment_lifecycle_reason_model['code'] = 'pending_registration' + instance_software_attachment_lifecycle_reason_model['message'] = 'The software instance is being registered with Resource Controller' + instance_software_attachment_lifecycle_reason_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#failed-registration' + + instance_software_attachment_offering_instance_model = {} # InstanceSoftwareAttachmentOfferingInstance + instance_software_attachment_offering_instance_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::' + + # Construct a json representation of a InstanceSoftwareAttachment model + instance_software_attachment_model_json = {} + instance_software_attachment_model_json['catalog_offering'] = instance_software_attachment_catalog_offering_model + instance_software_attachment_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' + instance_software_attachment_model_json['entitlement'] = instance_software_attachment_entitlement_model + instance_software_attachment_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_model_json['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_model_json['lifecycle_reasons'] = [instance_software_attachment_lifecycle_reason_model] + instance_software_attachment_model_json['lifecycle_state'] = 'stable' + instance_software_attachment_model_json['name'] = 'my-software-attachment' + instance_software_attachment_model_json['offering_instance'] = instance_software_attachment_offering_instance_model + instance_software_attachment_model_json['resource_type'] = 'instance_software_attachment' + + # Construct a model instance of InstanceSoftwareAttachment by calling from_dict on the json representation + instance_software_attachment_model = InstanceSoftwareAttachment.from_dict(instance_software_attachment_model_json) + assert instance_software_attachment_model != False + + # Construct a model instance of InstanceSoftwareAttachment by calling from_dict on the json representation + instance_software_attachment_model_dict = InstanceSoftwareAttachment.from_dict(instance_software_attachment_model_json).__dict__ + instance_software_attachment_model2 = InstanceSoftwareAttachment(**instance_software_attachment_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_model == instance_software_attachment_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_model_json2 = instance_software_attachment_model.to_dict() + assert instance_software_attachment_model_json2 == instance_software_attachment_model_json + + +class TestModel_InstanceSoftwareAttachmentCatalogOffering: + """ + Test Class for InstanceSoftwareAttachmentCatalogOffering + """ + + def test_instance_software_attachment_catalog_offering_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentCatalogOffering + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + catalog_offering_version_plan_reference_model = {} # CatalogOfferingVersionPlanReference + catalog_offering_version_plan_reference_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e' + catalog_offering_version_plan_reference_model['deleted'] = deleted_model + + catalog_offering_version_reference_model = {} # CatalogOfferingVersionReference + catalog_offering_version_reference_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d' + + # Construct a json representation of a InstanceSoftwareAttachmentCatalogOffering model + instance_software_attachment_catalog_offering_model_json = {} + instance_software_attachment_catalog_offering_model_json['plan'] = catalog_offering_version_plan_reference_model + instance_software_attachment_catalog_offering_model_json['version'] = catalog_offering_version_reference_model + + # Construct a model instance of InstanceSoftwareAttachmentCatalogOffering by calling from_dict on the json representation + instance_software_attachment_catalog_offering_model = InstanceSoftwareAttachmentCatalogOffering.from_dict(instance_software_attachment_catalog_offering_model_json) + assert instance_software_attachment_catalog_offering_model != False + + # Construct a model instance of InstanceSoftwareAttachmentCatalogOffering by calling from_dict on the json representation + instance_software_attachment_catalog_offering_model_dict = InstanceSoftwareAttachmentCatalogOffering.from_dict(instance_software_attachment_catalog_offering_model_json).__dict__ + instance_software_attachment_catalog_offering_model2 = InstanceSoftwareAttachmentCatalogOffering(**instance_software_attachment_catalog_offering_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_catalog_offering_model == instance_software_attachment_catalog_offering_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_catalog_offering_model_json2 = instance_software_attachment_catalog_offering_model.to_dict() + assert instance_software_attachment_catalog_offering_model_json2 == instance_software_attachment_catalog_offering_model_json + + +class TestModel_InstanceSoftwareAttachmentCollection: + """ + Test Class for InstanceSoftwareAttachmentCollection + """ + + def test_instance_software_attachment_collection_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentCollection + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + catalog_offering_version_plan_reference_model = {} # CatalogOfferingVersionPlanReference + catalog_offering_version_plan_reference_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:51c9e0db-2911-45a6-adb0-ac5332d27cf2:plan:sw.51c9e0db-2911-45a6-adb0-ac5332d27cf2.772c0dbe-aa62-482e-adbe-a3fc20101e0e' + catalog_offering_version_plan_reference_model['deleted'] = deleted_model + + catalog_offering_version_reference_model = {} # CatalogOfferingVersionReference + catalog_offering_version_reference_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-collection:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442/ec66bec2-6a33-42d6-9323-26dd4dc8875d' + + instance_software_attachment_catalog_offering_model = {} # InstanceSoftwareAttachmentCatalogOffering + instance_software_attachment_catalog_offering_model['plan'] = catalog_offering_version_plan_reference_model + instance_software_attachment_catalog_offering_model['version'] = catalog_offering_version_reference_model + + instance_software_attachment_entitlement_licensed_software_vendor_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor + instance_software_attachment_entitlement_licensed_software_vendor_model['name'] = 'fortinet' + + instance_software_attachment_entitlement_licensed_software_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftware + instance_software_attachment_entitlement_licensed_software_model['sku'] = 'FC1-10-IDCLD-445-02-12' + instance_software_attachment_entitlement_licensed_software_model['vendor'] = instance_software_attachment_entitlement_licensed_software_vendor_model + + instance_software_attachment_entitlement_model = {} # InstanceSoftwareAttachmentEntitlement + instance_software_attachment_entitlement_model['licensed_software'] = [instance_software_attachment_entitlement_licensed_software_model] + + instance_software_attachment_lifecycle_reason_model = {} # InstanceSoftwareAttachmentLifecycleReason + instance_software_attachment_lifecycle_reason_model['code'] = 'pending_registration' + instance_software_attachment_lifecycle_reason_model['message'] = 'The software instance is being registered with Resource Controller' + instance_software_attachment_lifecycle_reason_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#failed-registration' + + instance_software_attachment_offering_instance_model = {} # InstanceSoftwareAttachmentOfferingInstance + instance_software_attachment_offering_instance_model['crn'] = 'crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::' + + instance_software_attachment_model = {} # InstanceSoftwareAttachment + instance_software_attachment_model['catalog_offering'] = instance_software_attachment_catalog_offering_model + instance_software_attachment_model['created_at'] = '2026-01-02T03:04:05.006000Z' + instance_software_attachment_model['entitlement'] = instance_software_attachment_entitlement_model + instance_software_attachment_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_model['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_model['lifecycle_reasons'] = [instance_software_attachment_lifecycle_reason_model] + instance_software_attachment_model['lifecycle_state'] = 'stable' + instance_software_attachment_model['name'] = 'my-software-attachment' + instance_software_attachment_model['offering_instance'] = instance_software_attachment_offering_instance_model + instance_software_attachment_model['resource_type'] = 'instance_software_attachment' + + # Construct a json representation of a InstanceSoftwareAttachmentCollection model + instance_software_attachment_collection_model_json = {} + instance_software_attachment_collection_model_json['software_attachments'] = [instance_software_attachment_model] + + # Construct a model instance of InstanceSoftwareAttachmentCollection by calling from_dict on the json representation + instance_software_attachment_collection_model = InstanceSoftwareAttachmentCollection.from_dict(instance_software_attachment_collection_model_json) + assert instance_software_attachment_collection_model != False + + # Construct a model instance of InstanceSoftwareAttachmentCollection by calling from_dict on the json representation + instance_software_attachment_collection_model_dict = InstanceSoftwareAttachmentCollection.from_dict(instance_software_attachment_collection_model_json).__dict__ + instance_software_attachment_collection_model2 = InstanceSoftwareAttachmentCollection(**instance_software_attachment_collection_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_collection_model == instance_software_attachment_collection_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_collection_model_json2 = instance_software_attachment_collection_model.to_dict() + assert instance_software_attachment_collection_model_json2 == instance_software_attachment_collection_model_json + + +class TestModel_InstanceSoftwareAttachmentEntitlement: + """ + Test Class for InstanceSoftwareAttachmentEntitlement + """ + + def test_instance_software_attachment_entitlement_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentEntitlement + """ + + # Construct dict forms of any model objects needed in order to build this model. + + instance_software_attachment_entitlement_licensed_software_vendor_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor + instance_software_attachment_entitlement_licensed_software_vendor_model['name'] = 'fortinet' + + instance_software_attachment_entitlement_licensed_software_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftware + instance_software_attachment_entitlement_licensed_software_model['sku'] = 'FC1-10-IDCLD-445-02-12' + instance_software_attachment_entitlement_licensed_software_model['vendor'] = instance_software_attachment_entitlement_licensed_software_vendor_model + + # Construct a json representation of a InstanceSoftwareAttachmentEntitlement model + instance_software_attachment_entitlement_model_json = {} + instance_software_attachment_entitlement_model_json['licensed_software'] = [instance_software_attachment_entitlement_licensed_software_model] + + # Construct a model instance of InstanceSoftwareAttachmentEntitlement by calling from_dict on the json representation + instance_software_attachment_entitlement_model = InstanceSoftwareAttachmentEntitlement.from_dict(instance_software_attachment_entitlement_model_json) + assert instance_software_attachment_entitlement_model != False + + # Construct a model instance of InstanceSoftwareAttachmentEntitlement by calling from_dict on the json representation + instance_software_attachment_entitlement_model_dict = InstanceSoftwareAttachmentEntitlement.from_dict(instance_software_attachment_entitlement_model_json).__dict__ + instance_software_attachment_entitlement_model2 = InstanceSoftwareAttachmentEntitlement(**instance_software_attachment_entitlement_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_entitlement_model == instance_software_attachment_entitlement_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_entitlement_model_json2 = instance_software_attachment_entitlement_model.to_dict() + assert instance_software_attachment_entitlement_model_json2 == instance_software_attachment_entitlement_model_json + + +class TestModel_InstanceSoftwareAttachmentEntitlementLicensedSoftware: + """ + Test Class for InstanceSoftwareAttachmentEntitlementLicensedSoftware + """ + + def test_instance_software_attachment_entitlement_licensed_software_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentEntitlementLicensedSoftware + """ + + # Construct dict forms of any model objects needed in order to build this model. + + instance_software_attachment_entitlement_licensed_software_vendor_model = {} # InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor + instance_software_attachment_entitlement_licensed_software_vendor_model['name'] = 'fortinet' + + # Construct a json representation of a InstanceSoftwareAttachmentEntitlementLicensedSoftware model + instance_software_attachment_entitlement_licensed_software_model_json = {} + instance_software_attachment_entitlement_licensed_software_model_json['sku'] = 'FC1-10-IDCLD-445-02-12' + instance_software_attachment_entitlement_licensed_software_model_json['vendor'] = instance_software_attachment_entitlement_licensed_software_vendor_model + + # Construct a model instance of InstanceSoftwareAttachmentEntitlementLicensedSoftware by calling from_dict on the json representation + instance_software_attachment_entitlement_licensed_software_model = InstanceSoftwareAttachmentEntitlementLicensedSoftware.from_dict(instance_software_attachment_entitlement_licensed_software_model_json) + assert instance_software_attachment_entitlement_licensed_software_model != False + + # Construct a model instance of InstanceSoftwareAttachmentEntitlementLicensedSoftware by calling from_dict on the json representation + instance_software_attachment_entitlement_licensed_software_model_dict = InstanceSoftwareAttachmentEntitlementLicensedSoftware.from_dict(instance_software_attachment_entitlement_licensed_software_model_json).__dict__ + instance_software_attachment_entitlement_licensed_software_model2 = InstanceSoftwareAttachmentEntitlementLicensedSoftware(**instance_software_attachment_entitlement_licensed_software_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_entitlement_licensed_software_model == instance_software_attachment_entitlement_licensed_software_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_entitlement_licensed_software_model_json2 = instance_software_attachment_entitlement_licensed_software_model.to_dict() + assert instance_software_attachment_entitlement_licensed_software_model_json2 == instance_software_attachment_entitlement_licensed_software_model_json + + +class TestModel_InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor: + """ + Test Class for InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor + """ + + def test_instance_software_attachment_entitlement_licensed_software_vendor_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor + """ + + # Construct a json representation of a InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor model + instance_software_attachment_entitlement_licensed_software_vendor_model_json = {} + instance_software_attachment_entitlement_licensed_software_vendor_model_json['name'] = 'fortinet' + + # Construct a model instance of InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor by calling from_dict on the json representation + instance_software_attachment_entitlement_licensed_software_vendor_model = InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor.from_dict(instance_software_attachment_entitlement_licensed_software_vendor_model_json) + assert instance_software_attachment_entitlement_licensed_software_vendor_model != False + + # Construct a model instance of InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor by calling from_dict on the json representation + instance_software_attachment_entitlement_licensed_software_vendor_model_dict = InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor.from_dict(instance_software_attachment_entitlement_licensed_software_vendor_model_json).__dict__ + instance_software_attachment_entitlement_licensed_software_vendor_model2 = InstanceSoftwareAttachmentEntitlementLicensedSoftwareVendor(**instance_software_attachment_entitlement_licensed_software_vendor_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_entitlement_licensed_software_vendor_model == instance_software_attachment_entitlement_licensed_software_vendor_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_entitlement_licensed_software_vendor_model_json2 = instance_software_attachment_entitlement_licensed_software_vendor_model.to_dict() + assert instance_software_attachment_entitlement_licensed_software_vendor_model_json2 == instance_software_attachment_entitlement_licensed_software_vendor_model_json + + +class TestModel_InstanceSoftwareAttachmentLifecycleReason: + """ + Test Class for InstanceSoftwareAttachmentLifecycleReason + """ + + def test_instance_software_attachment_lifecycle_reason_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentLifecycleReason + """ + + # Construct a json representation of a InstanceSoftwareAttachmentLifecycleReason model + instance_software_attachment_lifecycle_reason_model_json = {} + instance_software_attachment_lifecycle_reason_model_json['code'] = 'pending_registration' + instance_software_attachment_lifecycle_reason_model_json['message'] = 'The software instance is being registered with Resource Controller' + instance_software_attachment_lifecycle_reason_model_json['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#failed-registration' + + # Construct a model instance of InstanceSoftwareAttachmentLifecycleReason by calling from_dict on the json representation + instance_software_attachment_lifecycle_reason_model = InstanceSoftwareAttachmentLifecycleReason.from_dict(instance_software_attachment_lifecycle_reason_model_json) + assert instance_software_attachment_lifecycle_reason_model != False + + # Construct a model instance of InstanceSoftwareAttachmentLifecycleReason by calling from_dict on the json representation + instance_software_attachment_lifecycle_reason_model_dict = InstanceSoftwareAttachmentLifecycleReason.from_dict(instance_software_attachment_lifecycle_reason_model_json).__dict__ + instance_software_attachment_lifecycle_reason_model2 = InstanceSoftwareAttachmentLifecycleReason(**instance_software_attachment_lifecycle_reason_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_lifecycle_reason_model == instance_software_attachment_lifecycle_reason_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_lifecycle_reason_model_json2 = instance_software_attachment_lifecycle_reason_model.to_dict() + assert instance_software_attachment_lifecycle_reason_model_json2 == instance_software_attachment_lifecycle_reason_model_json + + +class TestModel_InstanceSoftwareAttachmentOfferingInstance: + """ + Test Class for InstanceSoftwareAttachmentOfferingInstance + """ + + def test_instance_software_attachment_offering_instance_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentOfferingInstance + """ + + # Construct a json representation of a InstanceSoftwareAttachmentOfferingInstance model + instance_software_attachment_offering_instance_model_json = {} + instance_software_attachment_offering_instance_model_json['crn'] = 'crn:v1:bluemix:public:globalcatalog-instance:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:oi-07a7_26fb923a-873f-43bf-94e5-93431235ad5f-31323517-65cc-49cf-9281-13ee3399b747::' + + # Construct a model instance of InstanceSoftwareAttachmentOfferingInstance by calling from_dict on the json representation + instance_software_attachment_offering_instance_model = InstanceSoftwareAttachmentOfferingInstance.from_dict(instance_software_attachment_offering_instance_model_json) + assert instance_software_attachment_offering_instance_model != False + + # Construct a model instance of InstanceSoftwareAttachmentOfferingInstance by calling from_dict on the json representation + instance_software_attachment_offering_instance_model_dict = InstanceSoftwareAttachmentOfferingInstance.from_dict(instance_software_attachment_offering_instance_model_json).__dict__ + instance_software_attachment_offering_instance_model2 = InstanceSoftwareAttachmentOfferingInstance(**instance_software_attachment_offering_instance_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_offering_instance_model == instance_software_attachment_offering_instance_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_offering_instance_model_json2 = instance_software_attachment_offering_instance_model.to_dict() + assert instance_software_attachment_offering_instance_model_json2 == instance_software_attachment_offering_instance_model_json + + +class TestModel_InstanceSoftwareAttachmentPatch: + """ + Test Class for InstanceSoftwareAttachmentPatch + """ + + def test_instance_software_attachment_patch_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentPatch + """ + + # Construct a json representation of a InstanceSoftwareAttachmentPatch model + instance_software_attachment_patch_model_json = {} + instance_software_attachment_patch_model_json['name'] = 'my-software-attachment-patch' + + # Construct a model instance of InstanceSoftwareAttachmentPatch by calling from_dict on the json representation + instance_software_attachment_patch_model = InstanceSoftwareAttachmentPatch.from_dict(instance_software_attachment_patch_model_json) + assert instance_software_attachment_patch_model != False + + # Construct a model instance of InstanceSoftwareAttachmentPatch by calling from_dict on the json representation + instance_software_attachment_patch_model_dict = InstanceSoftwareAttachmentPatch.from_dict(instance_software_attachment_patch_model_json).__dict__ + instance_software_attachment_patch_model2 = InstanceSoftwareAttachmentPatch(**instance_software_attachment_patch_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_patch_model == instance_software_attachment_patch_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_patch_model_json2 = instance_software_attachment_patch_model.to_dict() + assert instance_software_attachment_patch_model_json2 == instance_software_attachment_patch_model_json + + +class TestModel_InstanceSoftwareAttachmentReference: + """ + Test Class for InstanceSoftwareAttachmentReference + """ + + def test_instance_software_attachment_reference_serialization(self): + """ + Test serialization/deserialization for InstanceSoftwareAttachmentReference + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + # Construct a json representation of a InstanceSoftwareAttachmentReference model + instance_software_attachment_reference_model_json = {} + instance_software_attachment_reference_model_json['deleted'] = deleted_model + instance_software_attachment_reference_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/subnets/0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_reference_model_json['id'] = '0717-7ec86020-1c6e-4889-b3f0-a15f2e50f87e' + instance_software_attachment_reference_model_json['name'] = 'my-software-attachment' + instance_software_attachment_reference_model_json['resource_type'] = 'instance_software_attachment' + + # Construct a model instance of InstanceSoftwareAttachmentReference by calling from_dict on the json representation + instance_software_attachment_reference_model = InstanceSoftwareAttachmentReference.from_dict(instance_software_attachment_reference_model_json) + assert instance_software_attachment_reference_model != False + + # Construct a model instance of InstanceSoftwareAttachmentReference by calling from_dict on the json representation + instance_software_attachment_reference_model_dict = InstanceSoftwareAttachmentReference.from_dict(instance_software_attachment_reference_model_json).__dict__ + instance_software_attachment_reference_model2 = InstanceSoftwareAttachmentReference(**instance_software_attachment_reference_model_dict) + + # Verify the model instances are equivalent + assert instance_software_attachment_reference_model == instance_software_attachment_reference_model2 + + # Convert model instance back to dict and verify no loss of data + instance_software_attachment_reference_model_json2 = instance_software_attachment_reference_model.to_dict() + assert instance_software_attachment_reference_model_json2 == instance_software_attachment_reference_model_json + + class TestModel_InstanceStatusReason: """ Test Class for InstanceStatusReason @@ -71520,10 +72850,8 @@ def test_instance_template_collection_serialization(self): instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -71621,15 +72949,11 @@ def test_instance_template_collection_serialization(self): zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -71671,6 +72995,7 @@ def test_instance_template_collection_serialization(self): instance_template_model['profile'] = instance_profile_identity_model instance_template_model['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_model['resource_group'] = resource_group_reference_model + instance_template_model['threads_per_core'] = 1 instance_template_model['total_volume_bandwidth'] = 500 instance_template_model['user_data'] = '[...]' instance_template_model['vcpu'] = instance_vcpu_prototype_model @@ -72193,12 +73518,14 @@ def test_load_balancer_serialization(self): # Construct a json representation of a LoadBalancer model load_balancer_model_json = {} load_balancer_model_json['access_mode'] = 'private' + load_balancer_model_json['advanced_health_checks_supported'] = True load_balancer_model_json['attached_load_balancer_pool_members'] = [load_balancer_pool_member_reference_model] load_balancer_model_json['availability'] = 'region' load_balancer_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' load_balancer_model_json['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727' load_balancer_model_json['dns'] = load_balancer_dns_model load_balancer_model_json['failsafe_policy_actions'] = ['forward'] + load_balancer_model_json['fqdn_pool_members_supported'] = True load_balancer_model_json['hostname'] = '6b88d615-us-south.lb.appdomain.cloud' load_balancer_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727' load_balancer_model_json['id'] = 'r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727' @@ -72207,6 +73534,7 @@ def test_load_balancer_serialization(self): load_balancer_model_json['is_public'] = True load_balancer_model_json['listeners'] = [load_balancer_listener_reference_model] load_balancer_model_json['logging'] = load_balancer_logging_model + load_balancer_model_json['mtls_supported'] = False load_balancer_model_json['name'] = 'my-load-balancer' load_balancer_model_json['operating_status'] = 'offline' load_balancer_model_json['pools'] = [load_balancer_pool_reference_model] @@ -72327,12 +73655,14 @@ def test_load_balancer_collection_serialization(self): load_balancer_model = {} # LoadBalancer load_balancer_model['access_mode'] = 'private' + load_balancer_model['advanced_health_checks_supported'] = True load_balancer_model['attached_load_balancer_pool_members'] = [load_balancer_pool_member_reference_model] load_balancer_model['availability'] = 'region' load_balancer_model['created_at'] = '2026-01-02T03:04:05.006000Z' load_balancer_model['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::load-balancer:r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727' load_balancer_model['dns'] = load_balancer_dns_model load_balancer_model['failsafe_policy_actions'] = ['forward'] + load_balancer_model['fqdn_pool_members_supported'] = True load_balancer_model['hostname'] = '6b88d615-us-south.lb.appdomain.cloud' load_balancer_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727' load_balancer_model['id'] = 'r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727' @@ -72341,6 +73671,7 @@ def test_load_balancer_collection_serialization(self): load_balancer_model['is_public'] = True load_balancer_model['listeners'] = [load_balancer_listener_reference_model] load_balancer_model['logging'] = load_balancer_logging_model + load_balancer_model['mtls_supported'] = False load_balancer_model['name'] = 'my-load-balancer' load_balancer_model['operating_status'] = 'offline' load_balancer_model['pools'] = [load_balancer_pool_reference_model] @@ -72513,6 +73844,10 @@ def test_load_balancer_listener_serialization(self): certificate_instance_reference_model = {} # CertificateInstanceReference certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + load_balancer_listener_client_authentication_model = {} # LoadBalancerListenerClientAuthentication + load_balancer_listener_client_authentication_model['certificate_authority'] = certificate_instance_reference_model + load_balancer_listener_client_authentication_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + deleted_model = {} # Deleted deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' @@ -72542,6 +73877,7 @@ def test_load_balancer_listener_serialization(self): load_balancer_listener_model_json = {} load_balancer_listener_model_json['accept_proxy_protocol'] = True load_balancer_listener_model_json['certificate_instance'] = certificate_instance_reference_model + load_balancer_listener_model_json['client_authentication'] = load_balancer_listener_client_authentication_model load_balancer_listener_model_json['connection_limit'] = 2000 load_balancer_listener_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' load_balancer_listener_model_json['default_pool'] = load_balancer_pool_reference_model @@ -72572,6 +73908,114 @@ def test_load_balancer_listener_serialization(self): assert load_balancer_listener_model_json2 == load_balancer_listener_model_json +class TestModel_LoadBalancerListenerClientAuthentication: + """ + Test Class for LoadBalancerListenerClientAuthentication + """ + + def test_load_balancer_listener_client_authentication_serialization(self): + """ + Test serialization/deserialization for LoadBalancerListenerClientAuthentication + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_reference_model = {} # CertificateInstanceReference + certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerListenerClientAuthentication model + load_balancer_listener_client_authentication_model_json = {} + load_balancer_listener_client_authentication_model_json['certificate_authority'] = certificate_instance_reference_model + load_balancer_listener_client_authentication_model_json['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + + # Construct a model instance of LoadBalancerListenerClientAuthentication by calling from_dict on the json representation + load_balancer_listener_client_authentication_model = LoadBalancerListenerClientAuthentication.from_dict(load_balancer_listener_client_authentication_model_json) + assert load_balancer_listener_client_authentication_model != False + + # Construct a model instance of LoadBalancerListenerClientAuthentication by calling from_dict on the json representation + load_balancer_listener_client_authentication_model_dict = LoadBalancerListenerClientAuthentication.from_dict(load_balancer_listener_client_authentication_model_json).__dict__ + load_balancer_listener_client_authentication_model2 = LoadBalancerListenerClientAuthentication(**load_balancer_listener_client_authentication_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_listener_client_authentication_model == load_balancer_listener_client_authentication_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_listener_client_authentication_model_json2 = load_balancer_listener_client_authentication_model.to_dict() + assert load_balancer_listener_client_authentication_model_json2 == load_balancer_listener_client_authentication_model_json + + +class TestModel_LoadBalancerListenerClientAuthenticationPatch: + """ + Test Class for LoadBalancerListenerClientAuthenticationPatch + """ + + def test_load_balancer_listener_client_authentication_patch_serialization(self): + """ + Test serialization/deserialization for LoadBalancerListenerClientAuthenticationPatch + """ + + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_listener_client_authentication_certificate_authority_patch_model = {} # LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN + load_balancer_listener_client_authentication_certificate_authority_patch_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerListenerClientAuthenticationPatch model + load_balancer_listener_client_authentication_patch_model_json = {} + load_balancer_listener_client_authentication_patch_model_json['certificate_authority'] = load_balancer_listener_client_authentication_certificate_authority_patch_model + load_balancer_listener_client_authentication_patch_model_json['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + + # Construct a model instance of LoadBalancerListenerClientAuthenticationPatch by calling from_dict on the json representation + load_balancer_listener_client_authentication_patch_model = LoadBalancerListenerClientAuthenticationPatch.from_dict(load_balancer_listener_client_authentication_patch_model_json) + assert load_balancer_listener_client_authentication_patch_model != False + + # Construct a model instance of LoadBalancerListenerClientAuthenticationPatch by calling from_dict on the json representation + load_balancer_listener_client_authentication_patch_model_dict = LoadBalancerListenerClientAuthenticationPatch.from_dict(load_balancer_listener_client_authentication_patch_model_json).__dict__ + load_balancer_listener_client_authentication_patch_model2 = LoadBalancerListenerClientAuthenticationPatch(**load_balancer_listener_client_authentication_patch_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_listener_client_authentication_patch_model == load_balancer_listener_client_authentication_patch_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_listener_client_authentication_patch_model_json2 = load_balancer_listener_client_authentication_patch_model.to_dict() + assert load_balancer_listener_client_authentication_patch_model_json2 == load_balancer_listener_client_authentication_patch_model_json + + +class TestModel_LoadBalancerListenerClientAuthenticationPrototype: + """ + Test Class for LoadBalancerListenerClientAuthenticationPrototype + """ + + def test_load_balancer_listener_client_authentication_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerListenerClientAuthenticationPrototype + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerListenerClientAuthenticationPrototype model + load_balancer_listener_client_authentication_prototype_model_json = {} + load_balancer_listener_client_authentication_prototype_model_json['certificate_authority'] = certificate_instance_identity_model + load_balancer_listener_client_authentication_prototype_model_json['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + + # Construct a model instance of LoadBalancerListenerClientAuthenticationPrototype by calling from_dict on the json representation + load_balancer_listener_client_authentication_prototype_model = LoadBalancerListenerClientAuthenticationPrototype.from_dict(load_balancer_listener_client_authentication_prototype_model_json) + assert load_balancer_listener_client_authentication_prototype_model != False + + # Construct a model instance of LoadBalancerListenerClientAuthenticationPrototype by calling from_dict on the json representation + load_balancer_listener_client_authentication_prototype_model_dict = LoadBalancerListenerClientAuthenticationPrototype.from_dict(load_balancer_listener_client_authentication_prototype_model_json).__dict__ + load_balancer_listener_client_authentication_prototype_model2 = LoadBalancerListenerClientAuthenticationPrototype(**load_balancer_listener_client_authentication_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_listener_client_authentication_prototype_model == load_balancer_listener_client_authentication_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_listener_client_authentication_prototype_model_json2 = load_balancer_listener_client_authentication_prototype_model.to_dict() + assert load_balancer_listener_client_authentication_prototype_model_json2 == load_balancer_listener_client_authentication_prototype_model_json + + class TestModel_LoadBalancerListenerCollection: """ Test Class for LoadBalancerListenerCollection @@ -72587,6 +74031,10 @@ def test_load_balancer_listener_collection_serialization(self): certificate_instance_reference_model = {} # CertificateInstanceReference certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + load_balancer_listener_client_authentication_model = {} # LoadBalancerListenerClientAuthentication + load_balancer_listener_client_authentication_model['certificate_authority'] = certificate_instance_reference_model + load_balancer_listener_client_authentication_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + deleted_model = {} # Deleted deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' @@ -72615,6 +74063,7 @@ def test_load_balancer_listener_collection_serialization(self): load_balancer_listener_model = {} # LoadBalancerListener load_balancer_listener_model['accept_proxy_protocol'] = True load_balancer_listener_model['certificate_instance'] = certificate_instance_reference_model + load_balancer_listener_model['client_authentication'] = load_balancer_listener_client_authentication_model load_balancer_listener_model['connection_limit'] = 2000 load_balancer_listener_model['created_at'] = '2026-01-02T03:04:05.006000Z' load_balancer_listener_model['default_pool'] = load_balancer_pool_reference_model @@ -72780,6 +74229,13 @@ def test_load_balancer_listener_patch_serialization(self): certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + load_balancer_listener_client_authentication_certificate_authority_patch_model = {} # LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN + load_balancer_listener_client_authentication_certificate_authority_patch_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + load_balancer_listener_client_authentication_patch_model = {} # LoadBalancerListenerClientAuthenticationPatch + load_balancer_listener_client_authentication_patch_model['certificate_authority'] = load_balancer_listener_client_authentication_certificate_authority_patch_model + load_balancer_listener_client_authentication_patch_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + load_balancer_listener_default_pool_patch_model = {} # LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityById load_balancer_listener_default_pool_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -72795,6 +74251,7 @@ def test_load_balancer_listener_patch_serialization(self): load_balancer_listener_patch_model_json = {} load_balancer_listener_patch_model_json['accept_proxy_protocol'] = True load_balancer_listener_patch_model_json['certificate_instance'] = certificate_instance_identity_model + load_balancer_listener_patch_model_json['client_authentication'] = load_balancer_listener_client_authentication_patch_model load_balancer_listener_patch_model_json['connection_limit'] = 2000 load_balancer_listener_patch_model_json['default_pool'] = load_balancer_listener_default_pool_patch_model load_balancer_listener_patch_model_json['https_redirect'] = load_balancer_listener_https_redirect_patch_model @@ -73248,6 +74705,10 @@ def test_load_balancer_listener_prototype_load_balancer_context_serialization(se certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + load_balancer_listener_client_authentication_prototype_model = {} # LoadBalancerListenerClientAuthenticationPrototype + load_balancer_listener_client_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_listener_client_authentication_prototype_model['certificate_revocation_list'] = '-----BEGIN X509 CRL-----\nMIICvTCBpgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJVUzEOMAwGA1UE\nCAwFZGVsYXMxDDAKBgNVBAoMA0lCTTENMAsGA1UECwwEcm9vdDEQMA4GA1UEAwwH\ncm9vdC1jYRcNMjUwOTA4MDUwMjQwWhcNMjUxMDA4MDUwMjQwWjAVMBMCAhAAFw0y\nNTA5MDgwNTAxNTlaoA8wDTALBgNVHRQEBAICEAAwDQYJKoZIhvcNAQELBQADggIB\nACeEcj7ompUepc5qTvTrNA5PoK5bN71gNI7Rbhq/Bxf1YPMp2iU3qMSj7YpVP7aw\nGNrxFoIZcQ4X7PYyHMfDk6Z83PSTVMnSOVk09fZW49tyVTWmzBVLz3R1bPasnWTZ\n0hRIv9j9n7Lemin+0ubIR/2zmsfBs1JFAFEbbRcgwg+qotsfZNLkX6bjHDpsRQzE\nmXUEu4/AqAsWPbFzG2uMKZ9pKOK+Nn3bt/NEK+AFlnSmgjEqzQ+0zhsrCExIReJV\nc2oiLBkLG6rBwxlGDog+PqwjP+1wGNIL1J3c2lMW1IGMNcts/aDBO5LtPVIY1LsQ\nFoeaTfm3U3GKC/pTczoDk/pKN756f8O05nTWUHgktcNsPvgqDKnpvEkI3VPf9Y4a\nfMOzKgVTgY1dSgjzHO8+4ZfcVGpBePsjOe0/RCUwkgtgOyGtcmBPTMJa0elJzjaM\njD9myqIXkB359sqbuEmcrjgo5uUUvubFYpmT/W0YxOi/py/bDK+7uUs38nUElNkZ\n+YFRpNWjLF9JtAghX5MhA5BwhTTuATvWYuDdK769ifi9qcYvE4u+VNxYfOpPY6sv\nx4FnkZ9+A7s2hk11d+DEq29Efa0xak8rO1LzT5hCSFT0P3KfZEZMpbuXpzVGiZoM\ng5cWHgYcNnzhUatKodvzZizAOVGRR7UFg42O4ylhxDVe\n-----END X509 CRL-----\n' + load_balancer_pool_identity_by_name_model = {} # LoadBalancerPoolIdentityByName load_balancer_pool_identity_by_name_model['name'] = 'my-load-balancer-pool' @@ -73263,6 +74724,7 @@ def test_load_balancer_listener_prototype_load_balancer_context_serialization(se load_balancer_listener_prototype_load_balancer_context_model_json = {} load_balancer_listener_prototype_load_balancer_context_model_json['accept_proxy_protocol'] = True load_balancer_listener_prototype_load_balancer_context_model_json['certificate_instance'] = certificate_instance_identity_model + load_balancer_listener_prototype_load_balancer_context_model_json['client_authentication'] = load_balancer_listener_client_authentication_prototype_model load_balancer_listener_prototype_load_balancer_context_model_json['connection_limit'] = 2000 load_balancer_listener_prototype_load_balancer_context_model_json['default_pool'] = load_balancer_pool_identity_by_name_model load_balancer_listener_prototype_load_balancer_context_model_json['https_redirect'] = load_balancer_listener_https_redirect_prototype_model @@ -73586,6 +75048,12 @@ def test_load_balancer_pool_serialization(self): # Construct dict forms of any model objects needed in order to build this model. + certificate_instance_reference_model = {} # CertificateInstanceReference + certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + load_balancer_pool_client_authentication_model = {} # LoadBalancerPoolClientAuthentication + load_balancer_pool_client_authentication_model['certificate_instance'] = certificate_instance_reference_model + deleted_model = {} # Deleted deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' @@ -73600,11 +75068,26 @@ def test_load_balancer_pool_serialization(self): load_balancer_pool_failsafe_policy_model['healthy_member_threshold_count'] = 0 load_balancer_pool_failsafe_policy_model['target'] = load_balancer_pool_reference_model + load_balancer_pool_health_monitor_type_httphttps_request_header_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader + load_balancer_pool_health_monitor_type_httphttps_request_header_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_model['value'] = 'text/plain' + + load_balancer_pool_health_monitor_type_httphttps_request_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest + load_balancer_pool_health_monitor_type_httphttps_request_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_model] + load_balancer_pool_health_monitor_type_httphttps_request_model['method'] = 'get' + + load_balancer_pool_health_monitor_type_httphttps_response_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse + load_balancer_pool_health_monitor_type_httphttps_response_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_model['codes'] = ['2XX'] + load_balancer_pool_health_monitor_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPS load_balancer_pool_health_monitor_model['delay'] = 5 load_balancer_pool_health_monitor_model['max_retries'] = 2 load_balancer_pool_health_monitor_model['port'] = 22 load_balancer_pool_health_monitor_model['timeout'] = 2 + load_balancer_pool_health_monitor_model['request'] = load_balancer_pool_health_monitor_type_httphttps_request_model + load_balancer_pool_health_monitor_model['response'] = load_balancer_pool_health_monitor_type_httphttps_response_model load_balancer_pool_health_monitor_model['type'] = 'http' load_balancer_pool_health_monitor_model['url_path'] = '/' @@ -73620,6 +75103,10 @@ def test_load_balancer_pool_serialization(self): load_balancer_pool_member_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a' load_balancer_pool_member_reference_model['id'] = 'r006-4a4b345f-cf6b-4326-8202-6d8229e9833a' + load_balancer_pool_server_authentication_model = {} # LoadBalancerPoolServerAuthentication + load_balancer_pool_server_authentication_model['certificate_authority'] = certificate_instance_reference_model + load_balancer_pool_server_authentication_model['verify_certificate'] = False + load_balancer_pool_session_persistence_model = {} # LoadBalancerPoolSessionPersistence load_balancer_pool_session_persistence_model['cookie_name'] = 'my-cookie-name' load_balancer_pool_session_persistence_model['type'] = 'app_cookie' @@ -73627,6 +75114,7 @@ def test_load_balancer_pool_serialization(self): # Construct a json representation of a LoadBalancerPool model load_balancer_pool_model_json = {} load_balancer_pool_model_json['algorithm'] = 'least_connections' + load_balancer_pool_model_json['client_authentication'] = load_balancer_pool_client_authentication_model load_balancer_pool_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' load_balancer_pool_model_json['failsafe_policy'] = load_balancer_pool_failsafe_policy_model load_balancer_pool_model_json['health_monitor'] = load_balancer_pool_health_monitor_model @@ -73638,6 +75126,7 @@ def test_load_balancer_pool_serialization(self): load_balancer_pool_model_json['protocol'] = 'http' load_balancer_pool_model_json['provisioning_status'] = 'active' load_balancer_pool_model_json['proxy_protocol'] = 'disabled' + load_balancer_pool_model_json['server_authentication'] = load_balancer_pool_server_authentication_model load_balancer_pool_model_json['session_persistence'] = load_balancer_pool_session_persistence_model # Construct a model instance of LoadBalancerPool by calling from_dict on the json representation @@ -73656,6 +75145,111 @@ def test_load_balancer_pool_serialization(self): assert load_balancer_pool_model_json2 == load_balancer_pool_model_json +class TestModel_LoadBalancerPoolClientAuthentication: + """ + Test Class for LoadBalancerPoolClientAuthentication + """ + + def test_load_balancer_pool_client_authentication_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolClientAuthentication + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_reference_model = {} # CertificateInstanceReference + certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerPoolClientAuthentication model + load_balancer_pool_client_authentication_model_json = {} + load_balancer_pool_client_authentication_model_json['certificate_instance'] = certificate_instance_reference_model + + # Construct a model instance of LoadBalancerPoolClientAuthentication by calling from_dict on the json representation + load_balancer_pool_client_authentication_model = LoadBalancerPoolClientAuthentication.from_dict(load_balancer_pool_client_authentication_model_json) + assert load_balancer_pool_client_authentication_model != False + + # Construct a model instance of LoadBalancerPoolClientAuthentication by calling from_dict on the json representation + load_balancer_pool_client_authentication_model_dict = LoadBalancerPoolClientAuthentication.from_dict(load_balancer_pool_client_authentication_model_json).__dict__ + load_balancer_pool_client_authentication_model2 = LoadBalancerPoolClientAuthentication(**load_balancer_pool_client_authentication_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_client_authentication_model == load_balancer_pool_client_authentication_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_client_authentication_model_json2 = load_balancer_pool_client_authentication_model.to_dict() + assert load_balancer_pool_client_authentication_model_json2 == load_balancer_pool_client_authentication_model_json + + +class TestModel_LoadBalancerPoolClientAuthenticationPatch: + """ + Test Class for LoadBalancerPoolClientAuthenticationPatch + """ + + def test_load_balancer_pool_client_authentication_patch_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolClientAuthenticationPatch + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerPoolClientAuthenticationPatch model + load_balancer_pool_client_authentication_patch_model_json = {} + load_balancer_pool_client_authentication_patch_model_json['certificate_instance'] = certificate_instance_identity_model + + # Construct a model instance of LoadBalancerPoolClientAuthenticationPatch by calling from_dict on the json representation + load_balancer_pool_client_authentication_patch_model = LoadBalancerPoolClientAuthenticationPatch.from_dict(load_balancer_pool_client_authentication_patch_model_json) + assert load_balancer_pool_client_authentication_patch_model != False + + # Construct a model instance of LoadBalancerPoolClientAuthenticationPatch by calling from_dict on the json representation + load_balancer_pool_client_authentication_patch_model_dict = LoadBalancerPoolClientAuthenticationPatch.from_dict(load_balancer_pool_client_authentication_patch_model_json).__dict__ + load_balancer_pool_client_authentication_patch_model2 = LoadBalancerPoolClientAuthenticationPatch(**load_balancer_pool_client_authentication_patch_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_client_authentication_patch_model == load_balancer_pool_client_authentication_patch_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_client_authentication_patch_model_json2 = load_balancer_pool_client_authentication_patch_model.to_dict() + assert load_balancer_pool_client_authentication_patch_model_json2 == load_balancer_pool_client_authentication_patch_model_json + + +class TestModel_LoadBalancerPoolClientAuthenticationPrototype: + """ + Test Class for LoadBalancerPoolClientAuthenticationPrototype + """ + + def test_load_balancer_pool_client_authentication_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolClientAuthenticationPrototype + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerPoolClientAuthenticationPrototype model + load_balancer_pool_client_authentication_prototype_model_json = {} + load_balancer_pool_client_authentication_prototype_model_json['certificate_instance'] = certificate_instance_identity_model + + # Construct a model instance of LoadBalancerPoolClientAuthenticationPrototype by calling from_dict on the json representation + load_balancer_pool_client_authentication_prototype_model = LoadBalancerPoolClientAuthenticationPrototype.from_dict(load_balancer_pool_client_authentication_prototype_model_json) + assert load_balancer_pool_client_authentication_prototype_model != False + + # Construct a model instance of LoadBalancerPoolClientAuthenticationPrototype by calling from_dict on the json representation + load_balancer_pool_client_authentication_prototype_model_dict = LoadBalancerPoolClientAuthenticationPrototype.from_dict(load_balancer_pool_client_authentication_prototype_model_json).__dict__ + load_balancer_pool_client_authentication_prototype_model2 = LoadBalancerPoolClientAuthenticationPrototype(**load_balancer_pool_client_authentication_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_client_authentication_prototype_model == load_balancer_pool_client_authentication_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_client_authentication_prototype_model_json2 = load_balancer_pool_client_authentication_prototype_model.to_dict() + assert load_balancer_pool_client_authentication_prototype_model_json2 == load_balancer_pool_client_authentication_prototype_model_json + + class TestModel_LoadBalancerPoolCollection: """ Test Class for LoadBalancerPoolCollection @@ -73668,6 +75262,12 @@ def test_load_balancer_pool_collection_serialization(self): # Construct dict forms of any model objects needed in order to build this model. + certificate_instance_reference_model = {} # CertificateInstanceReference + certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + load_balancer_pool_client_authentication_model = {} # LoadBalancerPoolClientAuthentication + load_balancer_pool_client_authentication_model['certificate_instance'] = certificate_instance_reference_model + deleted_model = {} # Deleted deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' @@ -73682,11 +75282,26 @@ def test_load_balancer_pool_collection_serialization(self): load_balancer_pool_failsafe_policy_model['healthy_member_threshold_count'] = 0 load_balancer_pool_failsafe_policy_model['target'] = load_balancer_pool_reference_model + load_balancer_pool_health_monitor_type_httphttps_request_header_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader + load_balancer_pool_health_monitor_type_httphttps_request_header_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_model['value'] = 'text/plain' + + load_balancer_pool_health_monitor_type_httphttps_request_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest + load_balancer_pool_health_monitor_type_httphttps_request_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_model] + load_balancer_pool_health_monitor_type_httphttps_request_model['method'] = 'get' + + load_balancer_pool_health_monitor_type_httphttps_response_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse + load_balancer_pool_health_monitor_type_httphttps_response_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_model['codes'] = ['2XX'] + load_balancer_pool_health_monitor_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPS load_balancer_pool_health_monitor_model['delay'] = 5 load_balancer_pool_health_monitor_model['max_retries'] = 2 load_balancer_pool_health_monitor_model['port'] = 22 load_balancer_pool_health_monitor_model['timeout'] = 2 + load_balancer_pool_health_monitor_model['request'] = load_balancer_pool_health_monitor_type_httphttps_request_model + load_balancer_pool_health_monitor_model['response'] = load_balancer_pool_health_monitor_type_httphttps_response_model load_balancer_pool_health_monitor_model['type'] = 'http' load_balancer_pool_health_monitor_model['url_path'] = '/' @@ -73702,12 +75317,17 @@ def test_load_balancer_pool_collection_serialization(self): load_balancer_pool_member_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/load_balancers/r006-dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/r006-70294e14-4e61-11e8-bcf4-0242ac110004/members/r006-4a4b345f-cf6b-4326-8202-6d8229e9833a' load_balancer_pool_member_reference_model['id'] = 'r006-4a4b345f-cf6b-4326-8202-6d8229e9833a' + load_balancer_pool_server_authentication_model = {} # LoadBalancerPoolServerAuthentication + load_balancer_pool_server_authentication_model['certificate_authority'] = certificate_instance_reference_model + load_balancer_pool_server_authentication_model['verify_certificate'] = False + load_balancer_pool_session_persistence_model = {} # LoadBalancerPoolSessionPersistence load_balancer_pool_session_persistence_model['cookie_name'] = 'my-cookie-name' load_balancer_pool_session_persistence_model['type'] = 'app_cookie' load_balancer_pool_model = {} # LoadBalancerPool load_balancer_pool_model['algorithm'] = 'least_connections' + load_balancer_pool_model['client_authentication'] = load_balancer_pool_client_authentication_model load_balancer_pool_model['created_at'] = '2026-01-02T03:04:05.006000Z' load_balancer_pool_model['failsafe_policy'] = load_balancer_pool_failsafe_policy_model load_balancer_pool_model['health_monitor'] = load_balancer_pool_health_monitor_model @@ -73719,6 +75339,7 @@ def test_load_balancer_pool_collection_serialization(self): load_balancer_pool_model['protocol'] = 'http' load_balancer_pool_model['provisioning_status'] = 'active' load_balancer_pool_model['proxy_protocol'] = 'disabled' + load_balancer_pool_model['server_authentication'] = load_balancer_pool_server_authentication_model load_balancer_pool_model['session_persistence'] = load_balancer_pool_session_persistence_model # Construct a json representation of a LoadBalancerPoolCollection model @@ -73866,11 +75487,28 @@ def test_load_balancer_pool_health_monitor_patch_serialization(self): Test serialization/deserialization for LoadBalancerPoolHealthMonitorPatch """ + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + load_balancer_pool_health_monitor_type_httphttps_request_patch_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['method'] = 'get' + + load_balancer_pool_health_monitor_type_httphttps_response_patch_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['codes'] = ['2XX'] + # Construct a json representation of a LoadBalancerPoolHealthMonitorPatch model load_balancer_pool_health_monitor_patch_model_json = {} load_balancer_pool_health_monitor_patch_model_json['delay'] = 5 load_balancer_pool_health_monitor_patch_model_json['max_retries'] = 2 load_balancer_pool_health_monitor_patch_model_json['port'] = 22 + load_balancer_pool_health_monitor_patch_model_json['request'] = load_balancer_pool_health_monitor_type_httphttps_request_patch_model + load_balancer_pool_health_monitor_patch_model_json['response'] = load_balancer_pool_health_monitor_type_httphttps_response_patch_model load_balancer_pool_health_monitor_patch_model_json['timeout'] = 2 load_balancer_pool_health_monitor_patch_model_json['type'] = 'http' load_balancer_pool_health_monitor_patch_model_json['url_path'] = '/' @@ -73891,6 +75529,237 @@ def test_load_balancer_pool_health_monitor_patch_serialization(self): assert load_balancer_pool_health_monitor_patch_model_json2 == load_balancer_pool_health_monitor_patch_model_json +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_request_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest + """ + + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader + load_balancer_pool_health_monitor_type_httphttps_request_header_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_model['value'] = 'text/plain' + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest model + load_balancer_pool_health_monitor_type_httphttps_request_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_request_model_json['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_model_json['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_model] + load_balancer_pool_health_monitor_type_httphttps_request_model_json['method'] = 'get' + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_request_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_request_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest(**load_balancer_pool_health_monitor_type_httphttps_request_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_request_model == load_balancer_pool_health_monitor_type_httphttps_request_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_request_model_json2 = load_balancer_pool_health_monitor_type_httphttps_request_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_request_model_json2 == load_balancer_pool_health_monitor_type_httphttps_request_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_request_header_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader + """ + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader model + load_balancer_pool_health_monitor_type_httphttps_request_header_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_request_header_model_json['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_model_json['value'] = 'text/plain' + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_header_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_header_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_request_header_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_header_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_header_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_request_header_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader(**load_balancer_pool_health_monitor_type_httphttps_request_header_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_request_header_model == load_balancer_pool_health_monitor_type_httphttps_request_header_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_request_header_model_json2 = load_balancer_pool_health_monitor_type_httphttps_request_header_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_request_header_model_json2 == load_balancer_pool_health_monitor_type_httphttps_request_header_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + """ + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype model + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json['value'] = 'text/plain' + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype(**load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model == load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json2 = load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json2 == load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_request_patch_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch + """ + + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch model + load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json['method'] = 'get' + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_patch_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_request_patch_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_patch_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_request_patch_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch(**load_balancer_pool_health_monitor_type_httphttps_request_patch_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_request_patch_model == load_balancer_pool_health_monitor_type_httphttps_request_patch_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json2 = load_balancer_pool_health_monitor_type_httphttps_request_patch_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json2 == load_balancer_pool_health_monitor_type_httphttps_request_patch_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_response_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse + """ + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse model + load_balancer_pool_health_monitor_type_httphttps_response_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_response_model_json['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_model_json['codes'] = ['2XX'] + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_response_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse.from_dict(load_balancer_pool_health_monitor_type_httphttps_response_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_response_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_response_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse.from_dict(load_balancer_pool_health_monitor_type_httphttps_response_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_response_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse(**load_balancer_pool_health_monitor_type_httphttps_response_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_response_model == load_balancer_pool_health_monitor_type_httphttps_response_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_response_model_json2 = load_balancer_pool_health_monitor_type_httphttps_response_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_response_model_json2 == load_balancer_pool_health_monitor_type_httphttps_response_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_response_patch_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch + """ + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch model + load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json['codes'] = ['2XX'] + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_response_patch_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch.from_dict(load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_response_patch_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_response_patch_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch.from_dict(load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_response_patch_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch(**load_balancer_pool_health_monitor_type_httphttps_response_patch_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_response_patch_model == load_balancer_pool_health_monitor_type_httphttps_response_patch_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json2 = load_balancer_pool_health_monitor_type_httphttps_response_patch_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json2 == load_balancer_pool_health_monitor_type_httphttps_response_patch_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_response_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype + """ + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype model + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json['codes'] = ['200'] + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_response_prototype_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype(**load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_response_prototype_model == load_balancer_pool_health_monitor_type_httphttps_response_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json2 = load_balancer_pool_health_monitor_type_httphttps_response_prototype_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json2 == load_balancer_pool_health_monitor_type_httphttps_response_prototype_model_json + + class TestModel_LoadBalancerPoolIdentityByName: """ Test Class for LoadBalancerPoolIdentityByName @@ -74145,6 +76014,12 @@ def test_load_balancer_pool_patch_serialization(self): # Construct dict forms of any model objects needed in order to build this model. + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + load_balancer_pool_client_authentication_patch_model = {} # LoadBalancerPoolClientAuthenticationPatch + load_balancer_pool_client_authentication_patch_model['certificate_instance'] = certificate_instance_identity_model + load_balancer_pool_failsafe_policy_target_patch_model = {} # LoadBalancerPoolFailsafePolicyTargetPatchLoadBalancerPoolIdentityById load_balancer_pool_failsafe_policy_target_patch_model['id'] = 'r006-70294e14-4e61-11e8-bcf4-0242ac110004' @@ -74152,14 +76027,33 @@ def test_load_balancer_pool_patch_serialization(self): load_balancer_pool_failsafe_policy_patch_model['action'] = 'forward' load_balancer_pool_failsafe_policy_patch_model['target'] = load_balancer_pool_failsafe_policy_target_patch_model + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + load_balancer_pool_health_monitor_type_httphttps_request_patch_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPatch + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_patch_model['method'] = 'get' + + load_balancer_pool_health_monitor_type_httphttps_response_patch_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePatch + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_patch_model['codes'] = ['2XX'] + load_balancer_pool_health_monitor_patch_model = {} # LoadBalancerPoolHealthMonitorPatch load_balancer_pool_health_monitor_patch_model['delay'] = 5 load_balancer_pool_health_monitor_patch_model['max_retries'] = 2 load_balancer_pool_health_monitor_patch_model['port'] = 22 + load_balancer_pool_health_monitor_patch_model['request'] = load_balancer_pool_health_monitor_type_httphttps_request_patch_model + load_balancer_pool_health_monitor_patch_model['response'] = load_balancer_pool_health_monitor_type_httphttps_response_patch_model load_balancer_pool_health_monitor_patch_model['timeout'] = 2 load_balancer_pool_health_monitor_patch_model['type'] = 'http' load_balancer_pool_health_monitor_patch_model['url_path'] = '/' + load_balancer_pool_server_authentication_patch_model = {} # LoadBalancerPoolServerAuthenticationPatch + load_balancer_pool_server_authentication_patch_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_patch_model['verify_certificate'] = False + load_balancer_pool_session_persistence_patch_model = {} # LoadBalancerPoolSessionPersistencePatch load_balancer_pool_session_persistence_patch_model['cookie_name'] = 'my-cookie-name' load_balancer_pool_session_persistence_patch_model['type'] = 'app_cookie' @@ -74167,11 +76061,13 @@ def test_load_balancer_pool_patch_serialization(self): # Construct a json representation of a LoadBalancerPoolPatch model load_balancer_pool_patch_model_json = {} load_balancer_pool_patch_model_json['algorithm'] = 'least_connections' + load_balancer_pool_patch_model_json['client_authentication'] = load_balancer_pool_client_authentication_patch_model load_balancer_pool_patch_model_json['failsafe_policy'] = load_balancer_pool_failsafe_policy_patch_model load_balancer_pool_patch_model_json['health_monitor'] = load_balancer_pool_health_monitor_patch_model load_balancer_pool_patch_model_json['name'] = 'my-load-balancer-pool' load_balancer_pool_patch_model_json['protocol'] = 'http' load_balancer_pool_patch_model_json['proxy_protocol'] = 'disabled' + load_balancer_pool_patch_model_json['server_authentication'] = load_balancer_pool_server_authentication_patch_model load_balancer_pool_patch_model_json['session_persistence'] = load_balancer_pool_session_persistence_patch_model # Construct a model instance of LoadBalancerPoolPatch by calling from_dict on the json representation @@ -74202,6 +76098,12 @@ def test_load_balancer_pool_prototype_load_balancer_context_serialization(self): # Construct dict forms of any model objects needed in order to build this model. + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + load_balancer_pool_client_authentication_prototype_model = {} # LoadBalancerPoolClientAuthenticationPrototype + load_balancer_pool_client_authentication_prototype_model['certificate_instance'] = certificate_instance_identity_model + load_balancer_pool_health_monitor_prototype_model = {} # LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeTCPPrototype load_balancer_pool_health_monitor_prototype_model['delay'] = 5 load_balancer_pool_health_monitor_prototype_model['max_retries'] = 2 @@ -74217,6 +76119,10 @@ def test_load_balancer_pool_prototype_load_balancer_context_serialization(self): load_balancer_pool_member_prototype_model['target'] = load_balancer_pool_member_target_prototype_model load_balancer_pool_member_prototype_model['weight'] = 50 + load_balancer_pool_server_authentication_prototype_model = {} # LoadBalancerPoolServerAuthenticationPrototype + load_balancer_pool_server_authentication_prototype_model['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_prototype_model['verify_certificate'] = False + load_balancer_pool_session_persistence_prototype_model = {} # LoadBalancerPoolSessionPersistencePrototype load_balancer_pool_session_persistence_prototype_model['cookie_name'] = 'my-cookie-name' load_balancer_pool_session_persistence_prototype_model['type'] = 'app_cookie' @@ -74224,11 +76130,13 @@ def test_load_balancer_pool_prototype_load_balancer_context_serialization(self): # Construct a json representation of a LoadBalancerPoolPrototypeLoadBalancerContext model load_balancer_pool_prototype_load_balancer_context_model_json = {} load_balancer_pool_prototype_load_balancer_context_model_json['algorithm'] = 'least_connections' + load_balancer_pool_prototype_load_balancer_context_model_json['client_authentication'] = load_balancer_pool_client_authentication_prototype_model load_balancer_pool_prototype_load_balancer_context_model_json['health_monitor'] = load_balancer_pool_health_monitor_prototype_model load_balancer_pool_prototype_load_balancer_context_model_json['members'] = [load_balancer_pool_member_prototype_model] load_balancer_pool_prototype_load_balancer_context_model_json['name'] = 'my-load-balancer-pool' load_balancer_pool_prototype_load_balancer_context_model_json['protocol'] = 'http' load_balancer_pool_prototype_load_balancer_context_model_json['proxy_protocol'] = 'disabled' + load_balancer_pool_prototype_load_balancer_context_model_json['server_authentication'] = load_balancer_pool_server_authentication_prototype_model load_balancer_pool_prototype_load_balancer_context_model_json['session_persistence'] = load_balancer_pool_session_persistence_prototype_model # Construct a model instance of LoadBalancerPoolPrototypeLoadBalancerContext by calling from_dict on the json representation @@ -74285,6 +76193,114 @@ def test_load_balancer_pool_reference_serialization(self): assert load_balancer_pool_reference_model_json2 == load_balancer_pool_reference_model_json +class TestModel_LoadBalancerPoolServerAuthentication: + """ + Test Class for LoadBalancerPoolServerAuthentication + """ + + def test_load_balancer_pool_server_authentication_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolServerAuthentication + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_reference_model = {} # CertificateInstanceReference + certificate_instance_reference_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerPoolServerAuthentication model + load_balancer_pool_server_authentication_model_json = {} + load_balancer_pool_server_authentication_model_json['certificate_authority'] = certificate_instance_reference_model + load_balancer_pool_server_authentication_model_json['verify_certificate'] = False + + # Construct a model instance of LoadBalancerPoolServerAuthentication by calling from_dict on the json representation + load_balancer_pool_server_authentication_model = LoadBalancerPoolServerAuthentication.from_dict(load_balancer_pool_server_authentication_model_json) + assert load_balancer_pool_server_authentication_model != False + + # Construct a model instance of LoadBalancerPoolServerAuthentication by calling from_dict on the json representation + load_balancer_pool_server_authentication_model_dict = LoadBalancerPoolServerAuthentication.from_dict(load_balancer_pool_server_authentication_model_json).__dict__ + load_balancer_pool_server_authentication_model2 = LoadBalancerPoolServerAuthentication(**load_balancer_pool_server_authentication_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_server_authentication_model == load_balancer_pool_server_authentication_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_server_authentication_model_json2 = load_balancer_pool_server_authentication_model.to_dict() + assert load_balancer_pool_server_authentication_model_json2 == load_balancer_pool_server_authentication_model_json + + +class TestModel_LoadBalancerPoolServerAuthenticationPatch: + """ + Test Class for LoadBalancerPoolServerAuthenticationPatch + """ + + def test_load_balancer_pool_server_authentication_patch_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolServerAuthenticationPatch + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerPoolServerAuthenticationPatch model + load_balancer_pool_server_authentication_patch_model_json = {} + load_balancer_pool_server_authentication_patch_model_json['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_patch_model_json['verify_certificate'] = False + + # Construct a model instance of LoadBalancerPoolServerAuthenticationPatch by calling from_dict on the json representation + load_balancer_pool_server_authentication_patch_model = LoadBalancerPoolServerAuthenticationPatch.from_dict(load_balancer_pool_server_authentication_patch_model_json) + assert load_balancer_pool_server_authentication_patch_model != False + + # Construct a model instance of LoadBalancerPoolServerAuthenticationPatch by calling from_dict on the json representation + load_balancer_pool_server_authentication_patch_model_dict = LoadBalancerPoolServerAuthenticationPatch.from_dict(load_balancer_pool_server_authentication_patch_model_json).__dict__ + load_balancer_pool_server_authentication_patch_model2 = LoadBalancerPoolServerAuthenticationPatch(**load_balancer_pool_server_authentication_patch_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_server_authentication_patch_model == load_balancer_pool_server_authentication_patch_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_server_authentication_patch_model_json2 = load_balancer_pool_server_authentication_patch_model.to_dict() + assert load_balancer_pool_server_authentication_patch_model_json2 == load_balancer_pool_server_authentication_patch_model_json + + +class TestModel_LoadBalancerPoolServerAuthenticationPrototype: + """ + Test Class for LoadBalancerPoolServerAuthenticationPrototype + """ + + def test_load_balancer_pool_server_authentication_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolServerAuthenticationPrototype + """ + + # Construct dict forms of any model objects needed in order to build this model. + + certificate_instance_identity_model = {} # CertificateInstanceIdentityByCRN + certificate_instance_identity_model['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a json representation of a LoadBalancerPoolServerAuthenticationPrototype model + load_balancer_pool_server_authentication_prototype_model_json = {} + load_balancer_pool_server_authentication_prototype_model_json['certificate_authority'] = certificate_instance_identity_model + load_balancer_pool_server_authentication_prototype_model_json['verify_certificate'] = False + + # Construct a model instance of LoadBalancerPoolServerAuthenticationPrototype by calling from_dict on the json representation + load_balancer_pool_server_authentication_prototype_model = LoadBalancerPoolServerAuthenticationPrototype.from_dict(load_balancer_pool_server_authentication_prototype_model_json) + assert load_balancer_pool_server_authentication_prototype_model != False + + # Construct a model instance of LoadBalancerPoolServerAuthenticationPrototype by calling from_dict on the json representation + load_balancer_pool_server_authentication_prototype_model_dict = LoadBalancerPoolServerAuthenticationPrototype.from_dict(load_balancer_pool_server_authentication_prototype_model_json).__dict__ + load_balancer_pool_server_authentication_prototype_model2 = LoadBalancerPoolServerAuthenticationPrototype(**load_balancer_pool_server_authentication_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_server_authentication_prototype_model == load_balancer_pool_server_authentication_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_server_authentication_prototype_model_json2 = load_balancer_pool_server_authentication_prototype_model.to_dict() + assert load_balancer_pool_server_authentication_prototype_model_json2 == load_balancer_pool_server_authentication_prototype_model_json + + class TestModel_LoadBalancerPoolSessionPersistence: """ Test Class for LoadBalancerPoolSessionPersistence @@ -74394,6 +76410,10 @@ def test_load_balancer_profile_serialization(self): load_balancer_profile_access_modes_model['type'] = 'enum' load_balancer_profile_access_modes_model['values'] = ['private'] + load_balancer_profile_advanced_health_check_supported_model = {} # LoadBalancerProfileAdvancedHealthCheckSupportedFixed + load_balancer_profile_advanced_health_check_supported_model['type'] = 'fixed' + load_balancer_profile_advanced_health_check_supported_model['value'] = True + load_balancer_profile_availability_model = {} # LoadBalancerProfileAvailabilityFixed load_balancer_profile_availability_model['type'] = 'fixed' load_balancer_profile_availability_model['value'] = 'region' @@ -74403,6 +76423,10 @@ def test_load_balancer_profile_serialization(self): load_balancer_profile_failsafe_policy_actions_model['type'] = 'enum' load_balancer_profile_failsafe_policy_actions_model['values'] = ['forward', 'fail'] + load_balancer_profile_fqdn_supported_model = {} # LoadBalancerProfileFQDNSupportedFixed + load_balancer_profile_fqdn_supported_model['type'] = 'fixed' + load_balancer_profile_fqdn_supported_model['value'] = True + load_balancer_profile_instance_groups_supported_model = {} # LoadBalancerProfileInstanceGroupsSupportedFixed load_balancer_profile_instance_groups_supported_model['type'] = 'fixed' load_balancer_profile_instance_groups_supported_model['value'] = True @@ -74411,6 +76435,10 @@ def test_load_balancer_profile_serialization(self): load_balancer_profile_logging_supported_model['type'] = 'fixed' load_balancer_profile_logging_supported_model['value'] = ['datapath'] + load_balancer_profile_mtls_supported_model = {} # LoadBalancerProfileMtlsSupportedFixed + load_balancer_profile_mtls_supported_model['type'] = 'fixed' + load_balancer_profile_mtls_supported_model['value'] = True + load_balancer_profile_route_mode_supported_model = {} # LoadBalancerProfileRouteModeSupportedFixed load_balancer_profile_route_mode_supported_model['type'] = 'fixed' load_balancer_profile_route_mode_supported_model['value'] = True @@ -74439,12 +76467,15 @@ def test_load_balancer_profile_serialization(self): # Construct a json representation of a LoadBalancerProfile model load_balancer_profile_model_json = {} load_balancer_profile_model_json['access_modes'] = load_balancer_profile_access_modes_model + load_balancer_profile_model_json['advanced_health_checks_supported'] = load_balancer_profile_advanced_health_check_supported_model load_balancer_profile_model_json['availability'] = load_balancer_profile_availability_model load_balancer_profile_model_json['failsafe_policy_actions'] = load_balancer_profile_failsafe_policy_actions_model load_balancer_profile_model_json['family'] = 'application' + load_balancer_profile_model_json['fqdn_pool_members_supported'] = load_balancer_profile_fqdn_supported_model load_balancer_profile_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed' load_balancer_profile_model_json['instance_groups_supported'] = load_balancer_profile_instance_groups_supported_model load_balancer_profile_model_json['logging_supported'] = load_balancer_profile_logging_supported_model + load_balancer_profile_model_json['mtls_supported'] = load_balancer_profile_mtls_supported_model load_balancer_profile_model_json['name'] = 'network-fixed' load_balancer_profile_model_json['route_mode_supported'] = load_balancer_profile_route_mode_supported_model load_balancer_profile_model_json['security_groups_supported'] = load_balancer_profile_security_groups_supported_model @@ -74519,6 +76550,10 @@ def test_load_balancer_profile_collection_serialization(self): load_balancer_profile_access_modes_model['type'] = 'enum' load_balancer_profile_access_modes_model['values'] = ['private'] + load_balancer_profile_advanced_health_check_supported_model = {} # LoadBalancerProfileAdvancedHealthCheckSupportedFixed + load_balancer_profile_advanced_health_check_supported_model['type'] = 'fixed' + load_balancer_profile_advanced_health_check_supported_model['value'] = True + load_balancer_profile_availability_model = {} # LoadBalancerProfileAvailabilityFixed load_balancer_profile_availability_model['type'] = 'fixed' load_balancer_profile_availability_model['value'] = 'region' @@ -74528,6 +76563,10 @@ def test_load_balancer_profile_collection_serialization(self): load_balancer_profile_failsafe_policy_actions_model['type'] = 'enum' load_balancer_profile_failsafe_policy_actions_model['values'] = ['forward', 'fail'] + load_balancer_profile_fqdn_supported_model = {} # LoadBalancerProfileFQDNSupportedFixed + load_balancer_profile_fqdn_supported_model['type'] = 'fixed' + load_balancer_profile_fqdn_supported_model['value'] = True + load_balancer_profile_instance_groups_supported_model = {} # LoadBalancerProfileInstanceGroupsSupportedFixed load_balancer_profile_instance_groups_supported_model['type'] = 'fixed' load_balancer_profile_instance_groups_supported_model['value'] = True @@ -74536,6 +76575,10 @@ def test_load_balancer_profile_collection_serialization(self): load_balancer_profile_logging_supported_model['type'] = 'fixed' load_balancer_profile_logging_supported_model['value'] = ['datapath'] + load_balancer_profile_mtls_supported_model = {} # LoadBalancerProfileMtlsSupportedFixed + load_balancer_profile_mtls_supported_model['type'] = 'fixed' + load_balancer_profile_mtls_supported_model['value'] = True + load_balancer_profile_route_mode_supported_model = {} # LoadBalancerProfileRouteModeSupportedFixed load_balancer_profile_route_mode_supported_model['type'] = 'fixed' load_balancer_profile_route_mode_supported_model['value'] = True @@ -74563,12 +76606,15 @@ def test_load_balancer_profile_collection_serialization(self): load_balancer_profile_model = {} # LoadBalancerProfile load_balancer_profile_model['access_modes'] = load_balancer_profile_access_modes_model + load_balancer_profile_model['advanced_health_checks_supported'] = load_balancer_profile_advanced_health_check_supported_model load_balancer_profile_model['availability'] = load_balancer_profile_availability_model load_balancer_profile_model['failsafe_policy_actions'] = load_balancer_profile_failsafe_policy_actions_model load_balancer_profile_model['family'] = 'application' + load_balancer_profile_model['fqdn_pool_members_supported'] = load_balancer_profile_fqdn_supported_model load_balancer_profile_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed' load_balancer_profile_model['instance_groups_supported'] = load_balancer_profile_instance_groups_supported_model load_balancer_profile_model['logging_supported'] = load_balancer_profile_logging_supported_model + load_balancer_profile_model['mtls_supported'] = load_balancer_profile_mtls_supported_model load_balancer_profile_model['name'] = 'network-fixed' load_balancer_profile_model['route_mode_supported'] = load_balancer_profile_route_mode_supported_model load_balancer_profile_model['security_groups_supported'] = load_balancer_profile_security_groups_supported_model @@ -75393,10 +77439,8 @@ def test_network_interface_prototype_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -80032,15 +82076,11 @@ def test_share_prototype_share_context_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -81146,6 +83186,12 @@ def test_snapshot_consistency_group_serialization(self): deleted_model = {} # Deleted deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + backup_policy_job_reference_model = {} # BackupPolicyJobReference + backup_policy_job_reference_model['deleted'] = deleted_model + backup_policy_job_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90' + backup_policy_job_reference_model['id'] = 'r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90' + backup_policy_job_reference_model['resource_type'] = 'backup_policy_job' + region_reference_model = {} # RegionReference region_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south' region_reference_model['name'] = 'us-south' @@ -81185,6 +83231,7 @@ def test_snapshot_consistency_group_serialization(self): # Construct a json representation of a SnapshotConsistencyGroup model snapshot_consistency_group_model_json = {} + snapshot_consistency_group_model_json['backup_policy_job'] = backup_policy_job_reference_model snapshot_consistency_group_model_json['backup_policy_plan'] = backup_policy_plan_reference_model snapshot_consistency_group_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' snapshot_consistency_group_model_json['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263' @@ -81232,6 +83279,12 @@ def test_snapshot_consistency_group_collection_serialization(self): deleted_model = {} # Deleted deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + backup_policy_job_reference_model = {} # BackupPolicyJobReference + backup_policy_job_reference_model['deleted'] = deleted_model + backup_policy_job_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/backup_policies/r006-076191ba-49c2-4763-94fd-c70de73ee2e6/jobs/r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90' + backup_policy_job_reference_model['id'] = 'r006-fc4b7fbc-38af-45d9-9fb6-bf0533acbf90' + backup_policy_job_reference_model['resource_type'] = 'backup_policy_job' + region_reference_model = {} # RegionReference region_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south' region_reference_model['name'] = 'us-south' @@ -81270,6 +83323,7 @@ def test_snapshot_consistency_group_collection_serialization(self): snapshot_reference_model['resource_type'] = 'snapshot' snapshot_consistency_group_model = {} # SnapshotConsistencyGroup + snapshot_consistency_group_model['backup_policy_job'] = backup_policy_job_reference_model snapshot_consistency_group_model['backup_policy_plan'] = backup_policy_plan_reference_model snapshot_consistency_group_model['created_at'] = '2026-01-02T03:04:05.006000Z' snapshot_consistency_group_model['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::snapshot-consistency-group:r006-fa329f6b-0e36-433f-a3bb-0df632e79263' @@ -82006,6 +84060,68 @@ def test_trusted_profile_reference_serialization(self): assert trusted_profile_reference_model_json2 == trusted_profile_reference_model_json +class TestModel_UpdateVpcRouteResponse: + """ + Test Class for UpdateVpcRouteResponse + """ + + def test_update_vpc_route_response_serialization(self): + """ + Test serialization/deserialization for UpdateVpcRouteResponse + """ + + # Construct dict forms of any model objects needed in order to build this model. + + deleted_model = {} # Deleted + deleted_model['more_info'] = 'https://cloud.ibm.com/apidocs/vpc#deleted-resources' + + route_creator_model = {} # RouteCreatorVPNGatewayReference + route_creator_model['crn'] = 'crn:v1:bluemix:public:is:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34::vpn:0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['deleted'] = deleted_model + route_creator_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['id'] = '0717-ddf51bec-3424-11e8-b467-0ed5f89f718b' + route_creator_model['name'] = 'my-vpn-gateway' + route_creator_model['resource_type'] = 'vpn_gateway' + + route_next_hop_model = {} # RouteNextHopIP + route_next_hop_model['address'] = '192.168.3.4' + + zone_reference_model = {} # ZoneReference + zone_reference_model['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/us-south-1' + zone_reference_model['name'] = 'us-south-1' + + # Construct a json representation of a Route model + update_vpc_route_response_model_json = {} + update_vpc_route_response_model_json['action'] = 'deliver' + update_vpc_route_response_model_json['advertise'] = True + update_vpc_route_response_model_json['created_at'] = '2026-01-02T03:04:05.006000Z' + update_vpc_route_response_model_json['creator'] = route_creator_model + update_vpc_route_response_model_json['destination'] = '192.168.3.0/24' + update_vpc_route_response_model_json['href'] = 'https://us-south.iaas.cloud.ibm.com/v1/vpcs/r006-4727d842-f94f-4a2d-824a-9bc9b02c523b/routes/r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1' + update_vpc_route_response_model_json['id'] = 'r006-67b7b783-9a0f-41c1-a7f7-eccff87fb8f1' + update_vpc_route_response_model_json['lifecycle_state'] = 'stable' + update_vpc_route_response_model_json['name'] = 'my-vpc-routing-table-route' + update_vpc_route_response_model_json['next_hop'] = route_next_hop_model + update_vpc_route_response_model_json['origin'] = 'service' + update_vpc_route_response_model_json['priority'] = 1 + update_vpc_route_response_model_json['zone'] = zone_reference_model + + # Construct a model instance of Route by calling from_dict on the json representation + update_vpc_route_response_model = Route.from_dict(update_vpc_route_response_model_json) + assert update_vpc_route_response_model != False + + # Construct a model instance of Route by calling from_dict on the json representation + update_vpc_route_response_model_dict = Route.from_dict(update_vpc_route_response_model_json).__dict__ + update_vpc_route_response_model2 = Route(**update_vpc_route_response_model_dict) + + # Verify the model instances are equivalent + assert update_vpc_route_response_model == update_vpc_route_response_model2 + + # Convert model instance back to dict and verify no loss of data + update_vpc_route_response_model_json2 = update_vpc_route_response_model.to_dict() + assert update_vpc_route_response_model_json2 == update_vpc_route_response_model_json + + class TestModel_VCPU: """ Test Class for VCPU @@ -88302,15 +90418,11 @@ def test_bare_metal_server_network_attachment_prototype_virtual_network_interfac # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -88362,15 +90474,11 @@ def test_bare_metal_server_network_attachment_prototype_bare_metal_server_networ # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -88428,15 +90536,11 @@ def test_bare_metal_server_network_attachment_prototype_bare_metal_server_networ # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -88741,10 +90845,8 @@ def test_bare_metal_server_network_interface_prototype_bare_metal_server_network # Construct dict forms of any model objects needed in order to build this model. - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -88790,10 +90892,8 @@ def test_bare_metal_server_network_interface_prototype_bare_metal_server_network # Construct dict forms of any model objects needed in order to build this model. - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -88840,10 +90940,8 @@ def test_bare_metal_server_network_interface_prototype_bare_metal_server_network # Construct dict forms of any model objects needed in order to build this model. - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -88891,15 +90989,11 @@ def test_bare_metal_server_primary_network_attachment_prototype_bare_metal_serve # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -89948,15 +92042,11 @@ def test_bare_metal_server_prototype_bare_metal_server_by_network_attachment_ser zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -90077,10 +92167,8 @@ def test_bare_metal_server_prototype_bare_metal_server_by_network_interface_seri zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -92483,10 +94571,8 @@ def test_instance_cluster_network_attachment_prototype_cluster_network_interface # Construct dict forms of any model objects needed in order to build this model. - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -92805,15 +94891,11 @@ def test_instance_network_attachment_prototype_virtual_network_interface_virtual # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -94749,10 +96831,8 @@ def test_instance_prototype_instance_by_source_template_serialization(self): instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -94852,15 +96932,11 @@ def test_instance_prototype_instance_by_source_template_serialization(self): image_identity_model = {} # ImageIdentityById image_identity_model['id'] = 'r006-02c73baf-9abb-493d-9e41-d0f1866f4051' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -94884,10 +96960,8 @@ def test_instance_prototype_instance_by_source_template_serialization(self): instance_network_attachment_prototype_model['name'] = 'my-instance-network-attachment' instance_network_attachment_prototype_model['virtual_network_interface'] = instance_network_attachment_prototype_virtual_network_interface_model - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' network_interface_prototype_model = {} # NetworkInterfacePrototype network_interface_prototype_model['allow_ip_spoofing'] = True @@ -94917,6 +96991,7 @@ def test_instance_prototype_instance_by_source_template_serialization(self): instance_prototype_instance_by_source_template_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_source_template_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_source_template_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_source_template_model_json['threads_per_core'] = 1 instance_prototype_instance_by_source_template_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_source_template_model_json['user_data'] = '[...]' instance_prototype_instance_by_source_template_model_json['vcpu'] = instance_vcpu_prototype_model @@ -95058,10 +97133,8 @@ def test_instance_template_prototype_instance_template_by_source_template_serial instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -95161,15 +97234,11 @@ def test_instance_template_prototype_instance_template_by_source_template_serial image_identity_model = {} # ImageIdentityById image_identity_model['id'] = 'r006-02c73baf-9abb-493d-9e41-d0f1866f4051' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -95193,10 +97262,8 @@ def test_instance_template_prototype_instance_template_by_source_template_serial instance_network_attachment_prototype_model['name'] = 'my-instance-network-attachment' instance_network_attachment_prototype_model['virtual_network_interface'] = instance_network_attachment_prototype_virtual_network_interface_model - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' network_interface_prototype_model = {} # NetworkInterfacePrototype network_interface_prototype_model['allow_ip_spoofing'] = True @@ -95226,6 +97293,7 @@ def test_instance_template_prototype_instance_template_by_source_template_serial instance_template_prototype_instance_template_by_source_template_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_source_template_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_source_template_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_source_template_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_source_template_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_source_template_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_source_template_model_json['vcpu'] = instance_vcpu_prototype_model @@ -95498,6 +97566,36 @@ def test_load_balancer_identity_by_id_serialization(self): assert load_balancer_identity_by_id_model_json2 == load_balancer_identity_by_id_model_json +class TestModel_LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN: + """ + Test Class for LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN + """ + + def test_load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_serialization(self): + """ + Test serialization/deserialization for LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN + """ + + # Construct a json representation of a LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN model + load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json = {} + load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json['crn'] = 'crn:v1:bluemix:public:secrets-manager:us-south:a/aa2432b1fa4d4ace891e9b80fc104e34:36fa422d-080d-4d83-8d2d-86851b4001df:secret:2e786aab-42fa-63ed-14f8-d66d552f4dd5' + + # Construct a model instance of LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN by calling from_dict on the json representation + load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model = LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN.from_dict(load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json) + assert load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model != False + + # Construct a model instance of LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN by calling from_dict on the json representation + load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_dict = LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN.from_dict(load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json).__dict__ + load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model2 = LoadBalancerListenerClientAuthenticationCertificateAuthorityPatchByCRN(**load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model == load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json2 = load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model.to_dict() + assert load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json2 == load_balancer_listener_client_authentication_certificate_authority_patch_by_crn_model_json + + class TestModel_LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityByHref: """ Test Class for LoadBalancerListenerDefaultPoolPatchLoadBalancerPoolIdentityByHref @@ -95972,12 +98070,28 @@ def test_load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_m Test serialization/deserialization for LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSPrototype """ + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + load_balancer_pool_health_monitor_type_httphttps_request_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype + load_balancer_pool_health_monitor_type_httphttps_request_prototype_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_prototype_model['method'] = 'get' + + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponsePrototype + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_prototype_model['codes'] = ['200'] + # Construct a json representation of a LoadBalancerPoolHealthMonitorPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSPrototype model load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json = {} load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['delay'] = 5 load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['max_retries'] = 2 load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['port'] = 22 load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['timeout'] = 2 + load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['request'] = load_balancer_pool_health_monitor_type_httphttps_request_prototype_model + load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['response'] = load_balancer_pool_health_monitor_type_httphttps_response_prototype_model load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['type'] = 'http' load_balancer_pool_health_monitor_prototype_load_balancer_pool_health_monitor_type_httphttps_prototype_model_json['url_path'] = '/' @@ -96041,12 +98155,29 @@ def test_load_balancer_pool_health_monitor_type_httphttps_serialization(self): Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPS """ + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeader + load_balancer_pool_health_monitor_type_httphttps_request_header_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_model['value'] = 'text/plain' + + load_balancer_pool_health_monitor_type_httphttps_request_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequest + load_balancer_pool_health_monitor_type_httphttps_request_model['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_model['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_model] + load_balancer_pool_health_monitor_type_httphttps_request_model['method'] = 'get' + + load_balancer_pool_health_monitor_type_httphttps_response_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSResponse + load_balancer_pool_health_monitor_type_httphttps_response_model['body_regex'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_response_model['codes'] = ['2XX'] + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPS model load_balancer_pool_health_monitor_type_httphttps_model_json = {} load_balancer_pool_health_monitor_type_httphttps_model_json['delay'] = 5 load_balancer_pool_health_monitor_type_httphttps_model_json['max_retries'] = 2 load_balancer_pool_health_monitor_type_httphttps_model_json['port'] = 22 load_balancer_pool_health_monitor_type_httphttps_model_json['timeout'] = 2 + load_balancer_pool_health_monitor_type_httphttps_model_json['request'] = load_balancer_pool_health_monitor_type_httphttps_request_model + load_balancer_pool_health_monitor_type_httphttps_model_json['response'] = load_balancer_pool_health_monitor_type_httphttps_response_model load_balancer_pool_health_monitor_type_httphttps_model_json['type'] = 'http' load_balancer_pool_health_monitor_type_httphttps_model_json['url_path'] = '/' @@ -96066,6 +98197,81 @@ def test_load_balancer_pool_health_monitor_type_httphttps_serialization(self): assert load_balancer_pool_health_monitor_type_httphttps_model_json2 == load_balancer_pool_health_monitor_type_httphttps_model_json +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype + """ + + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype model + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json['method'] = 'get' + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestGetPrototype(**load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model == load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json2 = load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json2 == load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_get_prototype_model_json + + +class TestModel_LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype: + """ + Test Class for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype + """ + + def test_load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype + """ + + # Construct dict forms of any model objects needed in order to build this model. + + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model = {} # LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestHeaderPrototype + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['field'] = 'Content-Type' + load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model['value'] = 'text/plain' + + # Construct a json representation of a LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype model + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json = {} + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json['body'] = 'ACTIVE' + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json['headers'] = [load_balancer_pool_health_monitor_type_httphttps_request_header_prototype_model] + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json['method'] = 'post' + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json) + assert load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model != False + + # Construct a model instance of LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype by calling from_dict on the json representation + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_dict = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype.from_dict(load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json).__dict__ + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model2 = LoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPrototypeLoadBalancerPoolHealthMonitorTypeHTTPHTTPSRequestPostPrototype(**load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model == load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json2 = load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model.to_dict() + assert load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json2 == load_balancer_pool_health_monitor_type_httphttps_request_prototype_load_balancer_pool_health_monitor_type_httphttps_request_post_prototype_model_json + + class TestModel_LoadBalancerPoolHealthMonitorTypeTCP: """ Test Class for LoadBalancerPoolHealthMonitorTypeTCP @@ -96200,6 +98406,36 @@ def test_load_balancer_pool_member_target_by_reserved_ip_serialization(self): assert load_balancer_pool_member_target_by_reserved_ip_model_json2 == load_balancer_pool_member_target_by_reserved_ip_model_json +class TestModel_LoadBalancerPoolMemberTargetPrototypeFQDN: + """ + Test Class for LoadBalancerPoolMemberTargetPrototypeFQDN + """ + + def test_load_balancer_pool_member_target_prototype_fqdn_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolMemberTargetPrototypeFQDN + """ + + # Construct a json representation of a LoadBalancerPoolMemberTargetPrototypeFQDN model + load_balancer_pool_member_target_prototype_fqdn_model_json = {} + load_balancer_pool_member_target_prototype_fqdn_model_json['fqdn'] = 'my-service.example.com' + + # Construct a model instance of LoadBalancerPoolMemberTargetPrototypeFQDN by calling from_dict on the json representation + load_balancer_pool_member_target_prototype_fqdn_model = LoadBalancerPoolMemberTargetPrototypeFQDN.from_dict(load_balancer_pool_member_target_prototype_fqdn_model_json) + assert load_balancer_pool_member_target_prototype_fqdn_model != False + + # Construct a model instance of LoadBalancerPoolMemberTargetPrototypeFQDN by calling from_dict on the json representation + load_balancer_pool_member_target_prototype_fqdn_model_dict = LoadBalancerPoolMemberTargetPrototypeFQDN.from_dict(load_balancer_pool_member_target_prototype_fqdn_model_json).__dict__ + load_balancer_pool_member_target_prototype_fqdn_model2 = LoadBalancerPoolMemberTargetPrototypeFQDN(**load_balancer_pool_member_target_prototype_fqdn_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_member_target_prototype_fqdn_model == load_balancer_pool_member_target_prototype_fqdn_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_member_target_prototype_fqdn_model_json2 = load_balancer_pool_member_target_prototype_fqdn_model.to_dict() + assert load_balancer_pool_member_target_prototype_fqdn_model_json2 == load_balancer_pool_member_target_prototype_fqdn_model_json + + class TestModel_LoadBalancerPoolMemberTargetPrototypeIP: """ Test Class for LoadBalancerPoolMemberTargetPrototypeIP @@ -96230,6 +98466,36 @@ def test_load_balancer_pool_member_target_prototype_ip_serialization(self): assert load_balancer_pool_member_target_prototype_ip_model_json2 == load_balancer_pool_member_target_prototype_ip_model_json +class TestModel_LoadBalancerPoolMemberTargetFQDN: + """ + Test Class for LoadBalancerPoolMemberTargetFQDN + """ + + def test_load_balancer_pool_member_target_fqdn_serialization(self): + """ + Test serialization/deserialization for LoadBalancerPoolMemberTargetFQDN + """ + + # Construct a json representation of a LoadBalancerPoolMemberTargetFQDN model + load_balancer_pool_member_target_fqdn_model_json = {} + load_balancer_pool_member_target_fqdn_model_json['fqdn'] = 'my-service.example.com' + + # Construct a model instance of LoadBalancerPoolMemberTargetFQDN by calling from_dict on the json representation + load_balancer_pool_member_target_fqdn_model = LoadBalancerPoolMemberTargetFQDN.from_dict(load_balancer_pool_member_target_fqdn_model_json) + assert load_balancer_pool_member_target_fqdn_model != False + + # Construct a model instance of LoadBalancerPoolMemberTargetFQDN by calling from_dict on the json representation + load_balancer_pool_member_target_fqdn_model_dict = LoadBalancerPoolMemberTargetFQDN.from_dict(load_balancer_pool_member_target_fqdn_model_json).__dict__ + load_balancer_pool_member_target_fqdn_model2 = LoadBalancerPoolMemberTargetFQDN(**load_balancer_pool_member_target_fqdn_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_pool_member_target_fqdn_model == load_balancer_pool_member_target_fqdn_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_pool_member_target_fqdn_model_json2 = load_balancer_pool_member_target_fqdn_model.to_dict() + assert load_balancer_pool_member_target_fqdn_model_json2 == load_balancer_pool_member_target_fqdn_model_json + + class TestModel_LoadBalancerPoolMemberTargetIPNotReservedIP: """ Test Class for LoadBalancerPoolMemberTargetIPNotReservedIP @@ -96339,6 +98605,67 @@ def test_load_balancer_pool_member_target_load_balancer_reference_serialization( assert load_balancer_pool_member_target_load_balancer_reference_model_json2 == load_balancer_pool_member_target_load_balancer_reference_model_json +class TestModel_LoadBalancerProfileAdvancedHealthCheckSupportedDependent: + """ + Test Class for LoadBalancerProfileAdvancedHealthCheckSupportedDependent + """ + + def test_load_balancer_profile_advanced_health_check_supported_dependent_serialization(self): + """ + Test serialization/deserialization for LoadBalancerProfileAdvancedHealthCheckSupportedDependent + """ + + # Construct a json representation of a LoadBalancerProfileAdvancedHealthCheckSupportedDependent model + load_balancer_profile_advanced_health_check_supported_dependent_model_json = {} + load_balancer_profile_advanced_health_check_supported_dependent_model_json['type'] = 'dependent' + + # Construct a model instance of LoadBalancerProfileAdvancedHealthCheckSupportedDependent by calling from_dict on the json representation + load_balancer_profile_advanced_health_check_supported_dependent_model = LoadBalancerProfileAdvancedHealthCheckSupportedDependent.from_dict(load_balancer_profile_advanced_health_check_supported_dependent_model_json) + assert load_balancer_profile_advanced_health_check_supported_dependent_model != False + + # Construct a model instance of LoadBalancerProfileAdvancedHealthCheckSupportedDependent by calling from_dict on the json representation + load_balancer_profile_advanced_health_check_supported_dependent_model_dict = LoadBalancerProfileAdvancedHealthCheckSupportedDependent.from_dict(load_balancer_profile_advanced_health_check_supported_dependent_model_json).__dict__ + load_balancer_profile_advanced_health_check_supported_dependent_model2 = LoadBalancerProfileAdvancedHealthCheckSupportedDependent(**load_balancer_profile_advanced_health_check_supported_dependent_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_profile_advanced_health_check_supported_dependent_model == load_balancer_profile_advanced_health_check_supported_dependent_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_profile_advanced_health_check_supported_dependent_model_json2 = load_balancer_profile_advanced_health_check_supported_dependent_model.to_dict() + assert load_balancer_profile_advanced_health_check_supported_dependent_model_json2 == load_balancer_profile_advanced_health_check_supported_dependent_model_json + + +class TestModel_LoadBalancerProfileAdvancedHealthCheckSupportedFixed: + """ + Test Class for LoadBalancerProfileAdvancedHealthCheckSupportedFixed + """ + + def test_load_balancer_profile_advanced_health_check_supported_fixed_serialization(self): + """ + Test serialization/deserialization for LoadBalancerProfileAdvancedHealthCheckSupportedFixed + """ + + # Construct a json representation of a LoadBalancerProfileAdvancedHealthCheckSupportedFixed model + load_balancer_profile_advanced_health_check_supported_fixed_model_json = {} + load_balancer_profile_advanced_health_check_supported_fixed_model_json['type'] = 'fixed' + load_balancer_profile_advanced_health_check_supported_fixed_model_json['value'] = True + + # Construct a model instance of LoadBalancerProfileAdvancedHealthCheckSupportedFixed by calling from_dict on the json representation + load_balancer_profile_advanced_health_check_supported_fixed_model = LoadBalancerProfileAdvancedHealthCheckSupportedFixed.from_dict(load_balancer_profile_advanced_health_check_supported_fixed_model_json) + assert load_balancer_profile_advanced_health_check_supported_fixed_model != False + + # Construct a model instance of LoadBalancerProfileAdvancedHealthCheckSupportedFixed by calling from_dict on the json representation + load_balancer_profile_advanced_health_check_supported_fixed_model_dict = LoadBalancerProfileAdvancedHealthCheckSupportedFixed.from_dict(load_balancer_profile_advanced_health_check_supported_fixed_model_json).__dict__ + load_balancer_profile_advanced_health_check_supported_fixed_model2 = LoadBalancerProfileAdvancedHealthCheckSupportedFixed(**load_balancer_profile_advanced_health_check_supported_fixed_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_profile_advanced_health_check_supported_fixed_model == load_balancer_profile_advanced_health_check_supported_fixed_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_profile_advanced_health_check_supported_fixed_model_json2 = load_balancer_profile_advanced_health_check_supported_fixed_model.to_dict() + assert load_balancer_profile_advanced_health_check_supported_fixed_model_json2 == load_balancer_profile_advanced_health_check_supported_fixed_model_json + + class TestModel_LoadBalancerProfileAvailabilityDependent: """ Test Class for LoadBalancerProfileAvailabilityDependent @@ -96400,6 +98727,67 @@ def test_load_balancer_profile_availability_fixed_serialization(self): assert load_balancer_profile_availability_fixed_model_json2 == load_balancer_profile_availability_fixed_model_json +class TestModel_LoadBalancerProfileFQDNSupportedDependent: + """ + Test Class for LoadBalancerProfileFQDNSupportedDependent + """ + + def test_load_balancer_profile_fqdn_supported_dependent_serialization(self): + """ + Test serialization/deserialization for LoadBalancerProfileFQDNSupportedDependent + """ + + # Construct a json representation of a LoadBalancerProfileFQDNSupportedDependent model + load_balancer_profile_fqdn_supported_dependent_model_json = {} + load_balancer_profile_fqdn_supported_dependent_model_json['type'] = 'dependent' + + # Construct a model instance of LoadBalancerProfileFQDNSupportedDependent by calling from_dict on the json representation + load_balancer_profile_fqdn_supported_dependent_model = LoadBalancerProfileFQDNSupportedDependent.from_dict(load_balancer_profile_fqdn_supported_dependent_model_json) + assert load_balancer_profile_fqdn_supported_dependent_model != False + + # Construct a model instance of LoadBalancerProfileFQDNSupportedDependent by calling from_dict on the json representation + load_balancer_profile_fqdn_supported_dependent_model_dict = LoadBalancerProfileFQDNSupportedDependent.from_dict(load_balancer_profile_fqdn_supported_dependent_model_json).__dict__ + load_balancer_profile_fqdn_supported_dependent_model2 = LoadBalancerProfileFQDNSupportedDependent(**load_balancer_profile_fqdn_supported_dependent_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_profile_fqdn_supported_dependent_model == load_balancer_profile_fqdn_supported_dependent_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_profile_fqdn_supported_dependent_model_json2 = load_balancer_profile_fqdn_supported_dependent_model.to_dict() + assert load_balancer_profile_fqdn_supported_dependent_model_json2 == load_balancer_profile_fqdn_supported_dependent_model_json + + +class TestModel_LoadBalancerProfileFQDNSupportedFixed: + """ + Test Class for LoadBalancerProfileFQDNSupportedFixed + """ + + def test_load_balancer_profile_fqdn_supported_fixed_serialization(self): + """ + Test serialization/deserialization for LoadBalancerProfileFQDNSupportedFixed + """ + + # Construct a json representation of a LoadBalancerProfileFQDNSupportedFixed model + load_balancer_profile_fqdn_supported_fixed_model_json = {} + load_balancer_profile_fqdn_supported_fixed_model_json['type'] = 'fixed' + load_balancer_profile_fqdn_supported_fixed_model_json['value'] = True + + # Construct a model instance of LoadBalancerProfileFQDNSupportedFixed by calling from_dict on the json representation + load_balancer_profile_fqdn_supported_fixed_model = LoadBalancerProfileFQDNSupportedFixed.from_dict(load_balancer_profile_fqdn_supported_fixed_model_json) + assert load_balancer_profile_fqdn_supported_fixed_model != False + + # Construct a model instance of LoadBalancerProfileFQDNSupportedFixed by calling from_dict on the json representation + load_balancer_profile_fqdn_supported_fixed_model_dict = LoadBalancerProfileFQDNSupportedFixed.from_dict(load_balancer_profile_fqdn_supported_fixed_model_json).__dict__ + load_balancer_profile_fqdn_supported_fixed_model2 = LoadBalancerProfileFQDNSupportedFixed(**load_balancer_profile_fqdn_supported_fixed_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_profile_fqdn_supported_fixed_model == load_balancer_profile_fqdn_supported_fixed_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_profile_fqdn_supported_fixed_model_json2 = load_balancer_profile_fqdn_supported_fixed_model.to_dict() + assert load_balancer_profile_fqdn_supported_fixed_model_json2 == load_balancer_profile_fqdn_supported_fixed_model_json + + class TestModel_LoadBalancerProfileFailsafePolicyActionsDependent: """ Test Class for LoadBalancerProfileFailsafePolicyActionsDependent @@ -96583,6 +98971,67 @@ def test_load_balancer_profile_instance_groups_supported_fixed_serialization(sel assert load_balancer_profile_instance_groups_supported_fixed_model_json2 == load_balancer_profile_instance_groups_supported_fixed_model_json +class TestModel_LoadBalancerProfileMtlsSupportedDependent: + """ + Test Class for LoadBalancerProfileMtlsSupportedDependent + """ + + def test_load_balancer_profile_mtls_supported_dependent_serialization(self): + """ + Test serialization/deserialization for LoadBalancerProfileMtlsSupportedDependent + """ + + # Construct a json representation of a LoadBalancerProfileMtlsSupportedDependent model + load_balancer_profile_mtls_supported_dependent_model_json = {} + load_balancer_profile_mtls_supported_dependent_model_json['type'] = 'dependent' + + # Construct a model instance of LoadBalancerProfileMtlsSupportedDependent by calling from_dict on the json representation + load_balancer_profile_mtls_supported_dependent_model = LoadBalancerProfileMtlsSupportedDependent.from_dict(load_balancer_profile_mtls_supported_dependent_model_json) + assert load_balancer_profile_mtls_supported_dependent_model != False + + # Construct a model instance of LoadBalancerProfileMtlsSupportedDependent by calling from_dict on the json representation + load_balancer_profile_mtls_supported_dependent_model_dict = LoadBalancerProfileMtlsSupportedDependent.from_dict(load_balancer_profile_mtls_supported_dependent_model_json).__dict__ + load_balancer_profile_mtls_supported_dependent_model2 = LoadBalancerProfileMtlsSupportedDependent(**load_balancer_profile_mtls_supported_dependent_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_profile_mtls_supported_dependent_model == load_balancer_profile_mtls_supported_dependent_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_profile_mtls_supported_dependent_model_json2 = load_balancer_profile_mtls_supported_dependent_model.to_dict() + assert load_balancer_profile_mtls_supported_dependent_model_json2 == load_balancer_profile_mtls_supported_dependent_model_json + + +class TestModel_LoadBalancerProfileMtlsSupportedFixed: + """ + Test Class for LoadBalancerProfileMtlsSupportedFixed + """ + + def test_load_balancer_profile_mtls_supported_fixed_serialization(self): + """ + Test serialization/deserialization for LoadBalancerProfileMtlsSupportedFixed + """ + + # Construct a json representation of a LoadBalancerProfileMtlsSupportedFixed model + load_balancer_profile_mtls_supported_fixed_model_json = {} + load_balancer_profile_mtls_supported_fixed_model_json['type'] = 'fixed' + load_balancer_profile_mtls_supported_fixed_model_json['value'] = True + + # Construct a model instance of LoadBalancerProfileMtlsSupportedFixed by calling from_dict on the json representation + load_balancer_profile_mtls_supported_fixed_model = LoadBalancerProfileMtlsSupportedFixed.from_dict(load_balancer_profile_mtls_supported_fixed_model_json) + assert load_balancer_profile_mtls_supported_fixed_model != False + + # Construct a model instance of LoadBalancerProfileMtlsSupportedFixed by calling from_dict on the json representation + load_balancer_profile_mtls_supported_fixed_model_dict = LoadBalancerProfileMtlsSupportedFixed.from_dict(load_balancer_profile_mtls_supported_fixed_model_json).__dict__ + load_balancer_profile_mtls_supported_fixed_model2 = LoadBalancerProfileMtlsSupportedFixed(**load_balancer_profile_mtls_supported_fixed_model_dict) + + # Verify the model instances are equivalent + assert load_balancer_profile_mtls_supported_fixed_model == load_balancer_profile_mtls_supported_fixed_model2 + + # Convert model instance back to dict and verify no loss of data + load_balancer_profile_mtls_supported_fixed_model_json2 = load_balancer_profile_mtls_supported_fixed_model.to_dict() + assert load_balancer_profile_mtls_supported_fixed_model_json2 == load_balancer_profile_mtls_supported_fixed_model_json + + class TestModel_LoadBalancerProfileRouteModeSupportedDependent: """ Test Class for LoadBalancerProfileRouteModeSupportedDependent @@ -100449,15 +102898,11 @@ def test_share_mount_target_prototype_share_mount_target_by_access_control_mode_ # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -100553,15 +102998,11 @@ def test_share_mount_target_virtual_network_interface_prototype_virtual_network_ # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -101281,15 +103722,11 @@ def test_share_prototype_share_by_origin_share_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -101376,15 +103813,11 @@ def test_share_prototype_share_by_size_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -101483,15 +103916,11 @@ def test_share_prototype_share_by_source_share_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -101586,15 +104015,11 @@ def test_share_prototype_share_by_source_snapshot_serialization(self): # Construct dict forms of any model objects needed in order to build this model. - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' resource_group_identity_model = {} # ResourceGroupIdentityById resource_group_identity_model['id'] = 'fee82deba12e4c0fb69c3b09d1f12345' @@ -107714,10 +110139,8 @@ def test_instance_prototype_instance_by_catalog_offering_instance_by_catalog_off instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -107817,15 +110240,11 @@ def test_instance_prototype_instance_by_catalog_offering_instance_by_catalog_off zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -107864,6 +110283,7 @@ def test_instance_prototype_instance_by_catalog_offering_instance_by_catalog_off instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -107911,10 +110331,8 @@ def test_instance_prototype_instance_by_catalog_offering_instance_by_catalog_off instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -108014,10 +110432,8 @@ def test_instance_prototype_instance_by_catalog_offering_instance_by_catalog_off zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -108047,6 +110463,7 @@ def test_instance_prototype_instance_by_catalog_offering_instance_by_catalog_off instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['user_data'] = '[...]' instance_prototype_instance_by_catalog_offering_instance_by_catalog_offering_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -108094,10 +110511,8 @@ def test_instance_prototype_instance_by_image_instance_by_image_instance_by_netw instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -108190,15 +110605,11 @@ def test_instance_prototype_instance_by_image_instance_by_image_instance_by_netw zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -108237,6 +110648,7 @@ def test_instance_prototype_instance_by_image_instance_by_image_instance_by_netw instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_prototype_instance_by_image_instance_by_image_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -108284,10 +110696,8 @@ def test_instance_prototype_instance_by_image_instance_by_image_instance_by_netw instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -108380,10 +110790,8 @@ def test_instance_prototype_instance_by_image_instance_by_image_instance_by_netw zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -108413,6 +110821,7 @@ def test_instance_prototype_instance_by_image_instance_by_image_instance_by_netw instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['user_data'] = '[...]' instance_prototype_instance_by_image_instance_by_image_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -108460,10 +110869,8 @@ def test_instance_prototype_instance_by_source_snapshot_instance_by_source_snaps instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -108557,15 +110964,11 @@ def test_instance_prototype_instance_by_source_snapshot_instance_by_source_snaps zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -108604,6 +111007,7 @@ def test_instance_prototype_instance_by_source_snapshot_instance_by_source_snaps instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -108650,10 +111054,8 @@ def test_instance_prototype_instance_by_source_snapshot_instance_by_source_snaps instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -108747,10 +111149,8 @@ def test_instance_prototype_instance_by_source_snapshot_instance_by_source_snaps zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -108780,6 +111180,7 @@ def test_instance_prototype_instance_by_source_snapshot_instance_by_source_snaps instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['user_data'] = '[...]' instance_prototype_instance_by_source_snapshot_instance_by_source_snapshot_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -108826,10 +111227,8 @@ def test_instance_prototype_instance_by_volume_instance_by_volume_instance_by_ne instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -108900,15 +111299,11 @@ def test_instance_prototype_instance_by_volume_instance_by_volume_instance_by_ne zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -108947,6 +111342,7 @@ def test_instance_prototype_instance_by_volume_instance_by_volume_instance_by_ne instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -108993,10 +111389,8 @@ def test_instance_prototype_instance_by_volume_instance_by_volume_instance_by_ne instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -109067,10 +111461,8 @@ def test_instance_prototype_instance_by_volume_instance_by_volume_instance_by_ne zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -109100,6 +111492,7 @@ def test_instance_prototype_instance_by_volume_instance_by_volume_instance_by_ne instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['user_data'] = '[...]' instance_prototype_instance_by_volume_instance_by_volume_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -109146,10 +111539,8 @@ def test_instance_template_prototype_instance_template_by_catalog_offering_insta instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -109249,15 +111640,11 @@ def test_instance_template_prototype_instance_template_by_catalog_offering_insta zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -109296,6 +111683,7 @@ def test_instance_template_prototype_instance_template_by_catalog_offering_insta instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -109343,10 +111731,8 @@ def test_instance_template_prototype_instance_template_by_catalog_offering_insta instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -109446,10 +111832,8 @@ def test_instance_template_prototype_instance_template_by_catalog_offering_insta zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -109479,6 +111863,7 @@ def test_instance_template_prototype_instance_template_by_catalog_offering_insta instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_catalog_offering_instance_template_by_catalog_offering_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -109526,10 +111911,8 @@ def test_instance_template_prototype_instance_template_by_image_instance_templat instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -109622,15 +112005,11 @@ def test_instance_template_prototype_instance_template_by_image_instance_templat zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -109669,6 +112048,7 @@ def test_instance_template_prototype_instance_template_by_image_instance_templat instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -109716,10 +112096,8 @@ def test_instance_template_prototype_instance_template_by_image_instance_templat instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -109812,10 +112190,8 @@ def test_instance_template_prototype_instance_template_by_image_instance_templat zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -109845,6 +112221,7 @@ def test_instance_template_prototype_instance_template_by_image_instance_templat instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_image_instance_template_by_image_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -109892,10 +112269,8 @@ def test_instance_template_prototype_instance_template_by_source_snapshot_instan instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -109989,15 +112364,11 @@ def test_instance_template_prototype_instance_template_by_source_snapshot_instan zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -110036,6 +112407,7 @@ def test_instance_template_prototype_instance_template_by_source_snapshot_instan instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -110082,10 +112454,8 @@ def test_instance_template_prototype_instance_template_by_source_snapshot_instan instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -110179,10 +112549,8 @@ def test_instance_template_prototype_instance_template_by_source_snapshot_instan zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -110212,6 +112580,7 @@ def test_instance_template_prototype_instance_template_by_source_snapshot_instan instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['resource_group'] = resource_group_identity_model + instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['user_data'] = '[...]' instance_template_prototype_instance_template_by_source_snapshot_instance_template_by_source_snapshot_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -110258,10 +112627,8 @@ def test_instance_template_instance_by_catalog_offering_instance_template_contex instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -110366,15 +112733,11 @@ def test_instance_template_instance_by_catalog_offering_instance_template_contex zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -110417,6 +112780,7 @@ def test_instance_template_instance_by_catalog_offering_instance_template_contex instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['resource_group'] = resource_group_reference_model + instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -110464,10 +112828,8 @@ def test_instance_template_instance_by_catalog_offering_instance_template_contex instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -110572,10 +112934,8 @@ def test_instance_template_instance_by_catalog_offering_instance_template_contex zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -110609,6 +112969,7 @@ def test_instance_template_instance_by_catalog_offering_instance_template_contex instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['resource_group'] = resource_group_reference_model + instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['user_data'] = '[...]' instance_template_instance_by_catalog_offering_instance_template_context_instance_by_catalog_offering_instance_template_context_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -110656,10 +113017,8 @@ def test_instance_template_instance_by_image_instance_template_context_instance_ instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -110757,15 +113116,11 @@ def test_instance_template_instance_by_image_instance_template_context_instance_ zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -110808,6 +113163,7 @@ def test_instance_template_instance_by_image_instance_template_context_instance_ instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['resource_group'] = resource_group_reference_model + instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -110855,10 +113211,8 @@ def test_instance_template_instance_by_image_instance_template_context_instance_ instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -110956,10 +113310,8 @@ def test_instance_template_instance_by_image_instance_template_context_instance_ zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -110993,6 +113345,7 @@ def test_instance_template_instance_by_image_instance_template_context_instance_ instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['resource_group'] = resource_group_reference_model + instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['user_data'] = '[...]' instance_template_instance_by_image_instance_template_context_instance_by_image_instance_template_context_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model @@ -111040,10 +113393,8 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -111139,10 +113490,8 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context volume_attachment_prototype_instance_by_source_snapshot_context_model['name'] = 'my-volume-attachment' volume_attachment_prototype_instance_by_source_snapshot_context_model['volume'] = volume_prototype_instance_by_source_snapshot_context_model - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -111160,15 +113509,11 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' instance_network_attachment_prototype_virtual_network_interface_model = {} # InstanceNetworkAttachmentPrototypeVirtualNetworkInterfaceVirtualNetworkInterfacePrototypeInstanceNetworkAttachmentContext instance_network_attachment_prototype_virtual_network_interface_model['allow_ip_spoofing'] = True @@ -111205,6 +113550,7 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['profile'] = instance_profile_identity_model instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['resource_group'] = resource_group_reference_model + instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['threads_per_core'] = 1 instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['total_volume_bandwidth'] = 500 instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['user_data'] = '[...]' instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_attachment_model_json['vcpu'] = instance_vcpu_prototype_model @@ -111252,10 +113598,8 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context instance_availability_policy_prototype_model['host_failure'] = 'restart' instance_availability_policy_prototype_model['preemption'] = 'stop' - cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPPrototypeClusterNetworkInterfacePrimaryIPContext - cluster_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - cluster_network_interface_primary_ip_prototype_model['auto_delete'] = False - cluster_network_interface_primary_ip_prototype_model['name'] = 'my-cluster-network-subnet-reserved-ip' + cluster_network_interface_primary_ip_prototype_model = {} # ClusterNetworkInterfacePrimaryIPPrototypeClusterNetworkSubnetReservedIPIdentityClusterNetworkInterfacePrimaryIPContextById + cluster_network_interface_primary_ip_prototype_model['id'] = '0717-d4d6489a-3bf5-4104-a33a-3572faf2d117' cluster_network_subnet_identity_model = {} # ClusterNetworkSubnetIdentityById cluster_network_subnet_identity_model['id'] = '0717-7931845c-65c4-4b0a-80cd-7d9c1a6d7930' @@ -111351,15 +113695,11 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context volume_attachment_prototype_instance_by_source_snapshot_context_model['name'] = 'my-volume-attachment' volume_attachment_prototype_instance_by_source_snapshot_context_model['volume'] = volume_prototype_instance_by_source_snapshot_context_model - virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPPrototypeVirtualNetworkInterfaceIPsContext - virtual_network_interface_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_ip_prototype_model['auto_delete'] = False - virtual_network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_ip_prototype_model = {} # VirtualNetworkInterfaceIPPrototypeReservedIPIdentityVirtualNetworkInterfaceIPsContextById + virtual_network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' - virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPPrototypeVirtualNetworkInterfacePrimaryIPContext - virtual_network_interface_primary_ip_prototype_model['address'] = '10.0.0.5' - virtual_network_interface_primary_ip_prototype_model['auto_delete'] = False - virtual_network_interface_primary_ip_prototype_model['name'] = 'my-reserved-ip' + virtual_network_interface_primary_ip_prototype_model = {} # VirtualNetworkInterfacePrimaryIPPrototypeReservedIPIdentityVirtualNetworkInterfacePrimaryIPContextById + virtual_network_interface_primary_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' security_group_identity_model = {} # SecurityGroupIdentityById security_group_identity_model['id'] = 'r006-be5df5ca-12a0-494b-907e-aa6ec2bfa271' @@ -111386,10 +113726,8 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context zone_identity_model = {} # ZoneIdentityByName zone_identity_model['name'] = 'us-south-1' - network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPPrototypeNetworkInterfaceContext - network_interface_ip_prototype_model['address'] = '10.0.0.5' - network_interface_ip_prototype_model['auto_delete'] = False - network_interface_ip_prototype_model['name'] = 'my-reserved-ip' + network_interface_ip_prototype_model = {} # NetworkInterfaceIPPrototypeReservedIPIdentityById + network_interface_ip_prototype_model['id'] = '0717-6d353a0f-aeb1-4ae1-832e-1110d10981bb' network_interface_prototype_model = {} # NetworkInterfacePrototype network_interface_prototype_model['allow_ip_spoofing'] = True @@ -111417,6 +113755,7 @@ def test_instance_template_instance_by_source_snapshot_instance_template_context instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['profile'] = instance_profile_identity_model instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['reservation_affinity'] = instance_reservation_affinity_prototype_model instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['resource_group'] = resource_group_reference_model + instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['threads_per_core'] = 1 instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['total_volume_bandwidth'] = 500 instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['user_data'] = '[...]' instance_template_instance_by_source_snapshot_instance_template_context_instance_by_source_snapshot_instance_template_context_instance_by_network_interface_model_json['vcpu'] = instance_vcpu_prototype_model From bd0990964f4436e2073a8ea36246757b73603eab Mon Sep 17 00:00:00 2001 From: Mallikarjun M Date: Thu, 2 Jul 2026 18:13:33 +0530 Subject: [PATCH 2/2] updated pyproject.toml Signed-off-by: Mallikarjun M --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d7b4808..108a110 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "ibm-vpc" -version = "0.33.0+local" +version = "0.33.0" authors = [ { name="IBM", email="devxsdk@us.ibm.com" } ]