def db_cluster_data(self, region_name) -> List[Database]: # Cluster for cluster in self.describe_clusters(region_name): db = { 'arn': cluster.db_cluster_arn, 'db_identifier': cluster.db_cluster_identifier, 'status': cluster.status, 'role': 'cluster', 'engine': cluster.engine, 'availability_zone': self.get_region(cluster.availability_zones), 'size': f'{len(cluster.db_cluster_members)} instances', 'multi_az': cluster.multi_az, 'account_id': self.account_id, 'cluster': cluster, } yield Database(db, strict=False), DBClusterResource # Instance Only for instance in self.describe_instances(region_name): if not instance.db_cluster_identifier: db = { 'arn': instance.db_instance_arn, 'db_identifier': instance.db_instance_identifier, 'status': instance.db_instance_status, 'role': 'instance', 'engine': instance.engine, 'availability_zone': instance.availability_zone, 'size': instance.db_instance_class, 'multi_az': instance.multi_az, 'account_id': self.account_id, 'instance': instance, } yield Database(db, strict=False), DBInstanceResource
def db_instance_data(self, region_name) -> List[Database]: for instance in self.describe_instances(): db = { 'arn': instance.db_instance_arn, 'db_identifier': instance.db_instance_identifier, 'status': instance.db_instance_status, 'role': 'instance', 'engine': instance.engine, 'region_name': region_name, 'availability_zone': instance.availability_zone, 'size': instance.db_instance_class, 'multi_az': instance.multi_az, 'account_id': self.account_id, 'instance': Instance(instance, strict=False), } yield Database(db, strict=False)
def db_cluster_data(self, region_name) -> List[Database]: for cluster in self.describe_clusters(): db = { 'arn': cluster.db_cluster_arn, 'db_identifier': cluster.db_cluster_identifier, 'status': cluster.status, 'role': 'cluster', 'engine': cluster.engine, 'region_name': region_name, 'availability_zone': self.get_region(cluster.availability_zones), 'size': f'{len(cluster.db_cluster_members)} instances', 'multi_az': cluster.multi_az, 'account_id': self.account_id, 'cluster': Cluster(cluster, strict=False), } yield Database(db, strict=False)
def db_cluster_data(self, region_name) -> List[Database]: self.cloud_service_type = 'Database' # Cluster for cluster, cluster_identifier in self.describe_clusters(region_name): try: db = { 'arn': cluster.db_cluster_arn, 'db_identifier': cluster.db_cluster_identifier, 'status': cluster.status, 'role': 'cluster', 'engine': cluster.engine, 'availability_zone': self.get_region(cluster.availability_zones), 'size': f'{len(cluster.db_cluster_members)} instances', 'multi_az': cluster.multi_az, 'account_id': self.account_id, 'cluster': cluster, 'tags': cluster.tags } yield Database( db, strict=False), DBClusterResource, cluster_identifier except Exception as e: resource_id = cluster.db_cluster_arn error_resource_response = self.generate_error( region_name, resource_id, e) yield error_resource_response, '', '' # Instance Only for instance, instance_identifier in self.describe_instances( region_name): try: if not instance.db_cluster_identifier: db = { 'arn': instance.db_instance_arn, 'db_identifier': instance.db_instance_identifier, 'status': instance.db_instance_status, 'role': 'instance', 'engine': instance.engine, 'availability_zone': instance.availability_zone, 'size': instance.db_instance_class, 'multi_az': instance.multi_az, 'account_id': self.account_id, 'instance': instance, 'tags': instance.tags } yield Database( db, strict=False), DBInstanceResource, instance_identifier except Exception as e: resource_id = instance.db_instance_arn error_resource_response = self.generate_error( region_name, resource_id, e) yield error_resource_response, '', ''
from schematics.types import ModelType, StringType, PolyModelType from spaceone.inventory.connector.aws_rds_connector.schema.data import Database, Instance, Snapshot, SubnetGroup, \ ParameterGroup, OptionGroup from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, BadgeDyField, EnumDyField, \ DateTimeDyField, SizeField from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, SimpleTableDynamicLayout ''' Database (Role: Cluster) ''' cluster_summary = ItemDynamicLayout.set_fields( 'Summary', fields=[ TextDyField.data_source('DB Identifier', 'data.db_identifier'), TextDyField.data_source('Role', 'data.role'), EnumDyField.data_source('Status', 'data.status', default_state={ 'safe': ['available'], 'warning': [ 'creating', 'deleting', 'maintenance', 'modifying', 'rebooting', 'renaming', 'starting', 'stopping', 'upgrading' ], 'alert': [ 'failed', 'inaccessible-encryption-credentials', 'restore-error', 'stopped', 'storage-full' ]