예제 #1
0
    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
예제 #2
0
 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)
예제 #3
0
 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, '', ''
예제 #5
0
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'
                                    ]