Source code for openapi_client.models.cluster_response_advanced_details

# coding: utf-8

"""
    Amorphic Data Platform

    Amorphic Data Platform - API Definition documentation

    The version of the OpenAPI document: 0.3.0
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import pprint
import re  # noqa: F401
import json

from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.cluster_response_advanced_details_cluster_nodes_inner import ClusterResponseAdvancedDetailsClusterNodesInner
from openapi_client.models.cluster_response_advanced_details_cluster_parameter_groups_inner import ClusterResponseAdvancedDetailsClusterParameterGroupsInner
from openapi_client.models.cluster_response_advanced_details_domain_endpoint_options import ClusterResponseAdvancedDetailsDomainEndpointOptions
from openapi_client.models.cluster_response_advanced_details_ebs_options import ClusterResponseAdvancedDetailsEBSOptions
from openapi_client.models.cluster_response_advanced_details_encryption_at_rest_options import ClusterResponseAdvancedDetailsEncryptionAtRestOptions
from openapi_client.models.cluster_response_advanced_details_environments_inner import ClusterResponseAdvancedDetailsEnvironmentsInner
from openapi_client.models.cluster_response_advanced_details_iam_roles_inner import ClusterResponseAdvancedDetailsIamRolesInner
from openapi_client.models.cluster_response_advanced_details_latest_recovery_point import ClusterResponseAdvancedDetailsLatestRecoveryPoint
from openapi_client.models.cluster_response_advanced_details_namespace import ClusterResponseAdvancedDetailsNamespace
from openapi_client.models.cluster_response_advanced_details_restore_status import ClusterResponseAdvancedDetailsRestoreStatus
from openapi_client.models.cluster_response_advanced_details_vpc_security_groups_inner import ClusterResponseAdvancedDetailsVpcSecurityGroupsInner
from openapi_client.models.cluster_response_advanced_details_workgroup import ClusterResponseAdvancedDetailsWorkgroup
from typing import Optional, Set
from typing_extensions import Self

[docs] class ClusterResponseAdvancedDetails(BaseModel): """ ClusterResponseAdvancedDetails """ # noqa: E501 cluster_identifier: Optional[StrictStr] = Field(default=None, alias="ClusterIdentifier") cluster_version: Optional[StrictStr] = Field(default=None, alias="ClusterVersion") storage_encrypted: Optional[StrictBool] = Field(default=None, alias="StorageEncrypted") automated_snapshot_retention_period: Optional[StrictInt] = Field(default=None, alias="AutomatedSnapshotRetentionPeriod") vpc_security_groups: Optional[List[ClusterResponseAdvancedDetailsVpcSecurityGroupsInner]] = Field(default=None, alias="VpcSecurityGroups") cluster_parameter_groups: Optional[List[ClusterResponseAdvancedDetailsClusterParameterGroupsInner]] = Field(default=None, alias="ClusterParameterGroups") cluster_subnet_group_name: Optional[StrictStr] = Field(default=None, alias="ClusterSubnetGroupName") vpc_id: Optional[StrictStr] = Field(default=None, alias="VpcId") availability_zone: Optional[StrictStr] = Field(default=None, alias="AvailabilityZone") preferred_maintenance_window: Optional[StrictStr] = Field(default=None, alias="PreferredMaintenanceWindow") pending_modified_values: Optional[Dict[str, Any]] = Field(default=None, alias="PendingModifiedValues") allow_version_upgrade: Optional[StrictBool] = Field(default=None, alias="AllowVersionUpgrade") publicly_accessible: Optional[StrictBool] = Field(default=None, alias="PubliclyAccessible") restore_status: Optional[ClusterResponseAdvancedDetailsRestoreStatus] = Field(default=None, alias="RestoreStatus") cluster_nodes: Optional[List[ClusterResponseAdvancedDetailsClusterNodesInner]] = Field(default=None, alias="ClusterNodes") cluster_revision_number: Optional[StrictStr] = Field(default=None, alias="ClusterRevisionNumber") enhanced_vpc_routing: Optional[StrictBool] = Field(default=None, alias="EnhancedVpcRouting") iam_roles: Optional[List[ClusterResponseAdvancedDetailsIamRolesInner]] = Field(default=None, alias="IamRoles") maintenance_track_name: Optional[StrictStr] = Field(default=None, alias="MaintenanceTrackName") next_maintenance_window_start_time: Optional[StrictStr] = Field(default=None, alias="NextMaintenanceWindowStartTime") availability_zone_relocation_status: Optional[StrictStr] = Field(default=None, alias="AvailabilityZoneRelocationStatus") multi_az: Optional[StrictStr] = Field(default=None, alias="MultiAZ") schedules: Optional[List[Dict[str, Any]]] = Field(default=None, alias="Schedules") namespace: Optional[ClusterResponseAdvancedDetailsNamespace] = Field(default=None, alias="Namespace") workgroup: Optional[ClusterResponseAdvancedDetailsWorkgroup] = Field(default=None, alias="Workgroup") snapshots: Optional[List[Dict[str, Any]]] = Field(default=None, alias="Snapshots") latest_recovery_point: Optional[ClusterResponseAdvancedDetailsLatestRecoveryPoint] = Field(default=None, alias="LatestRecoveryPoint") ebs_options: Optional[ClusterResponseAdvancedDetailsEBSOptions] = Field(default=None, alias="EBSOptions") encryption_at_rest_options: Optional[ClusterResponseAdvancedDetailsEncryptionAtRestOptions] = Field(default=None, alias="EncryptionAtRestOptions") domain_endpoint_options: Optional[ClusterResponseAdvancedDetailsDomainEndpointOptions] = Field(default=None, alias="DomainEndpointOptions") availability_zone_count: Optional[StrictInt] = Field(default=None, alias="AvailabilityZoneCount") environments: Optional[List[ClusterResponseAdvancedDetailsEnvironmentsInner]] = Field(default=None, alias="Environments") __properties: ClassVar[List[str]] = ["ClusterIdentifier", "ClusterVersion", "StorageEncrypted", "AutomatedSnapshotRetentionPeriod", "VpcSecurityGroups", "ClusterParameterGroups", "ClusterSubnetGroupName", "VpcId", "AvailabilityZone", "PreferredMaintenanceWindow", "PendingModifiedValues", "AllowVersionUpgrade", "PubliclyAccessible", "RestoreStatus", "ClusterNodes", "ClusterRevisionNumber", "EnhancedVpcRouting", "IamRoles", "MaintenanceTrackName", "NextMaintenanceWindowStartTime", "AvailabilityZoneRelocationStatus", "MultiAZ", "Schedules", "Namespace", "Workgroup", "Snapshots", "LatestRecoveryPoint", "EBSOptions", "EncryptionAtRestOptions", "DomainEndpointOptions", "AvailabilityZoneCount", "Environments"] model_config = ConfigDict( populate_by_name=True, validate_assignment=True, protected_namespaces=(), )
[docs] def to_str(self) -> str: """Returns the string representation of the model using alias""" return pprint.pformat(self.model_dump(by_alias=True))
[docs] def to_json(self) -> str: """Returns the JSON representation of the model using alias""" # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead return json.dumps(self.to_dict())
[docs] @classmethod def from_json(cls, json_str: str) -> Optional[Self]: """Create an instance of ClusterResponseAdvancedDetails from a JSON string""" return cls.from_dict(json.loads(json_str))
[docs] def to_dict(self) -> Dict[str, Any]: """Return the dictionary representation of the model using alias. This has the following differences from calling pydantic's `self.model_dump(by_alias=True)`: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. """ excluded_fields: Set[str] = set([ ]) _dict = self.model_dump( by_alias=True, exclude=excluded_fields, exclude_none=True, ) # override the default output from pydantic by calling `to_dict()` of each item in vpc_security_groups (list) _items = [] if self.vpc_security_groups: for _item_vpc_security_groups in self.vpc_security_groups: if _item_vpc_security_groups: _items.append(_item_vpc_security_groups.to_dict()) _dict['VpcSecurityGroups'] = _items # override the default output from pydantic by calling `to_dict()` of each item in cluster_parameter_groups (list) _items = [] if self.cluster_parameter_groups: for _item_cluster_parameter_groups in self.cluster_parameter_groups: if _item_cluster_parameter_groups: _items.append(_item_cluster_parameter_groups.to_dict()) _dict['ClusterParameterGroups'] = _items # override the default output from pydantic by calling `to_dict()` of restore_status if self.restore_status: _dict['RestoreStatus'] = self.restore_status.to_dict() # override the default output from pydantic by calling `to_dict()` of each item in cluster_nodes (list) _items = [] if self.cluster_nodes: for _item_cluster_nodes in self.cluster_nodes: if _item_cluster_nodes: _items.append(_item_cluster_nodes.to_dict()) _dict['ClusterNodes'] = _items # override the default output from pydantic by calling `to_dict()` of each item in iam_roles (list) _items = [] if self.iam_roles: for _item_iam_roles in self.iam_roles: if _item_iam_roles: _items.append(_item_iam_roles.to_dict()) _dict['IamRoles'] = _items # override the default output from pydantic by calling `to_dict()` of namespace if self.namespace: _dict['Namespace'] = self.namespace.to_dict() # override the default output from pydantic by calling `to_dict()` of workgroup if self.workgroup: _dict['Workgroup'] = self.workgroup.to_dict() # override the default output from pydantic by calling `to_dict()` of latest_recovery_point if self.latest_recovery_point: _dict['LatestRecoveryPoint'] = self.latest_recovery_point.to_dict() # override the default output from pydantic by calling `to_dict()` of ebs_options if self.ebs_options: _dict['EBSOptions'] = self.ebs_options.to_dict() # override the default output from pydantic by calling `to_dict()` of encryption_at_rest_options if self.encryption_at_rest_options: _dict['EncryptionAtRestOptions'] = self.encryption_at_rest_options.to_dict() # override the default output from pydantic by calling `to_dict()` of domain_endpoint_options if self.domain_endpoint_options: _dict['DomainEndpointOptions'] = self.domain_endpoint_options.to_dict() # override the default output from pydantic by calling `to_dict()` of each item in environments (list) _items = [] if self.environments: for _item_environments in self.environments: if _item_environments: _items.append(_item_environments.to_dict()) _dict['Environments'] = _items return _dict
[docs] @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: """Create an instance of ClusterResponseAdvancedDetails from a dict""" if obj is None: return None if not isinstance(obj, dict): return cls.model_validate(obj) _obj = cls.model_validate({ "ClusterIdentifier": obj.get("ClusterIdentifier"), "ClusterVersion": obj.get("ClusterVersion"), "StorageEncrypted": obj.get("StorageEncrypted"), "AutomatedSnapshotRetentionPeriod": obj.get("AutomatedSnapshotRetentionPeriod"), "VpcSecurityGroups": [ClusterResponseAdvancedDetailsVpcSecurityGroupsInner.from_dict(_item) for _item in obj["VpcSecurityGroups"]] if obj.get("VpcSecurityGroups") is not None else None, "ClusterParameterGroups": [ClusterResponseAdvancedDetailsClusterParameterGroupsInner.from_dict(_item) for _item in obj["ClusterParameterGroups"]] if obj.get("ClusterParameterGroups") is not None else None, "ClusterSubnetGroupName": obj.get("ClusterSubnetGroupName"), "VpcId": obj.get("VpcId"), "AvailabilityZone": obj.get("AvailabilityZone"), "PreferredMaintenanceWindow": obj.get("PreferredMaintenanceWindow"), "PendingModifiedValues": obj.get("PendingModifiedValues"), "AllowVersionUpgrade": obj.get("AllowVersionUpgrade"), "PubliclyAccessible": obj.get("PubliclyAccessible"), "RestoreStatus": ClusterResponseAdvancedDetailsRestoreStatus.from_dict(obj["RestoreStatus"]) if obj.get("RestoreStatus") is not None else None, "ClusterNodes": [ClusterResponseAdvancedDetailsClusterNodesInner.from_dict(_item) for _item in obj["ClusterNodes"]] if obj.get("ClusterNodes") is not None else None, "ClusterRevisionNumber": obj.get("ClusterRevisionNumber"), "EnhancedVpcRouting": obj.get("EnhancedVpcRouting"), "IamRoles": [ClusterResponseAdvancedDetailsIamRolesInner.from_dict(_item) for _item in obj["IamRoles"]] if obj.get("IamRoles") is not None else None, "MaintenanceTrackName": obj.get("MaintenanceTrackName"), "NextMaintenanceWindowStartTime": obj.get("NextMaintenanceWindowStartTime"), "AvailabilityZoneRelocationStatus": obj.get("AvailabilityZoneRelocationStatus"), "MultiAZ": obj.get("MultiAZ"), "Schedules": obj.get("Schedules"), "Namespace": ClusterResponseAdvancedDetailsNamespace.from_dict(obj["Namespace"]) if obj.get("Namespace") is not None else None, "Workgroup": ClusterResponseAdvancedDetailsWorkgroup.from_dict(obj["Workgroup"]) if obj.get("Workgroup") is not None else None, "Snapshots": obj.get("Snapshots"), "LatestRecoveryPoint": ClusterResponseAdvancedDetailsLatestRecoveryPoint.from_dict(obj["LatestRecoveryPoint"]) if obj.get("LatestRecoveryPoint") is not None else None, "EBSOptions": ClusterResponseAdvancedDetailsEBSOptions.from_dict(obj["EBSOptions"]) if obj.get("EBSOptions") is not None else None, "EncryptionAtRestOptions": ClusterResponseAdvancedDetailsEncryptionAtRestOptions.from_dict(obj["EncryptionAtRestOptions"]) if obj.get("EncryptionAtRestOptions") is not None else None, "DomainEndpointOptions": ClusterResponseAdvancedDetailsDomainEndpointOptions.from_dict(obj["DomainEndpointOptions"]) if obj.get("DomainEndpointOptions") is not None else None, "AvailabilityZoneCount": obj.get("AvailabilityZoneCount"), "Environments": [ClusterResponseAdvancedDetailsEnvironmentsInner.from_dict(_item) for _item in obj["Environments"]] if obj.get("Environments") is not None else None }) return _obj