# 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