Beispiel #1
0
cst_hostedzone.provider = 'aws'
cst_hostedzone.group = 'Route53'
cst_hostedzone.labels = ['Networking']
cst_hostedzone.is_primary = True
cst_hostedzone.service_code = 'AmazonRoute53'
cst_hostedzone.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Route-53.svg',
}

cst_hostedzone._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Domain Name', 'data.name'),
        EnumDyField.data_source('Type',
                                'data.type',
                                default_badge={
                                    'indigo.500': ['Public'],
                                    'coral.600': ['Private']
                                }),
        TextDyField.data_source('Record Set Count',
                                'data.resource_record_set_count'),
        TextDyField.data_source('Comment', 'data.config.comment'),
        TextDyField.data_source('Host Zone ID', 'data.id'),
        TextDyField.data_source('ARN',
                                'data.arn',
                                options={'is_optional': True}),
        TextDyField.data_source('Private Zone',
                                'data.config.private_zone',
                                options={'is_optional': True}),
        TextDyField.data_source('Caller Reference',
                                'data.caller_reference',
                                options={'is_optional': True}),
Beispiel #2
0
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/AWS-Certificate-Manager.svg',
}

cst_certi._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        # TextDyField.data_source('Name', 'data.'),
        TextDyField.data_source('Domain Name', 'data.domain_name'),
        ListDyField.data_source('Additional Names',
                                'data.additional_names_display',
                                options={"delimiter": ", "}),
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['ISSUED'],
                                    'warning': [
                                        'PENDING_VALIDATION', 'INACTIVE',
                                        'VALIDATION_TIMED_OUT', 'REVOKED'
                                    ],
                                    'alert': ['EXPIRED', 'FAILED']
                                }),
        TextDyField.data_source('Type', 'data.type_display'),
        TextDyField.data_source('In use?', 'data.in_use_display'),
        TextDyField.data_source('Renewal Eligibility',
                                'data.renewal_eligibility_display'),
    ],
    search=[
        SearchField.set(name='Domain Name', key='data.domain_name'),
        SearchField.set(name='ARN', key='data.certificate_arn'),
        SearchField.set(name='Status', key='data.status'),
        SearchField.set(name='Type', key='data.type'),
        SearchField.set(name='In use?', key='data.in_use_display'),
Beispiel #3
0
from spaceone.inventory.connector.aws_cloud_front_connector.schema.data import DistributionData
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, BadgeItemDyField, BadgeDyField, \
    EnumDyField, DateTimeDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, SimpleTableDynamicLayout

# TAB - BASE
meta_base = ItemDynamicLayout.set_fields(
    'Distributions',
    fields=[
        TextDyField.data_source('Distribution ID', 'data.id'),
        TextDyField.data_source('ARN', 'data.arn'),
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['Deployed'],
                                }),
        TextDyField.data_source('Domain Name', 'data.domain_name'),
        TextDyField.data_source('HTTP Version', 'data.http_version'),
        TextDyField.data_source('Comment', 'data.comment'),
        TextDyField.data_source('Price Class', 'data.price_class'),
        TextDyField.data_source('AWS Web ACL', 'data.web_acl_id'),
        EnumDyField.data_source('State Enabled',
                                'data.enabled',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        ListDyField.data_source('CNAME',
                                'data.alias_icp_recordals',
Beispiel #4
0
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, \
    SimpleTableDynamicLayout

base = ItemDynamicLayout.set_fields(
    'Clusters',
    fields=[
        TextDyField.data_source('Cluster', 'data.cluster_identifier'),
        EnumDyField.data_source(
            'Status',
            'data.cluster_status',
            default_state={
                'safe': ['available'],
                'warning': [
                    'prep-for-resize', 'resize-cleanup', 'cancelling-resize',
                    'creating', 'deleting', 'final-snapshot', 'modifying',
                    'rebooting', 'renaming', 'resizing', 'rotating-keys',
                    'updating-hsm'
                ],
                'disable': ['paused'],
                'alert': [
                    'hardware-failure', 'incompatible-hsm',
                    'incompatible-network', 'incompatible-parameters',
                    'incompatible-restore', 'storage-full'
                ]
            }),
        TextDyField.data_source('Endpoint', 'data.endpoint.address'),
        TextDyField.data_source('Cluster Version', 'data.cluster_version'),
        EnumDyField.data_source('Cluster Availability Status',
                                'data.cluster_availability_status',
                                default_state={
                                    'safe': ['Available'],
                                    'warning': ['Maintenance', 'Modifying'],
cst_kds.labels = ["Analytics"]
cst_kds.is_primary = True
cst_kds.is_major = True
cst_kds.service_code = "AmazonKinesis"
cst_kds.tags = {
    "spaceone:icon":
    "https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Kinesis-Firehose.svg",
}

cst_kds._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source("Data Stream Name", "data.stream_name"),
        EnumDyField.data_source(
            "Status",
            "data.stream_status_display",
            default_state={
                "safe": ["Active"],
                "warning": ["Creating", "Deleting", "Updating"],
            },
        ),
        TextDyField.data_source("Open shards", "data.open_shards_num"),
        TextDyField.data_source("Data retention period",
                                "data.retention_period_display"),
        TextDyField.data_source("Encryption", "data.encryption_display"),
        TextDyField.data_source("Consumers with enhanced fan-out",
                                "data.consumers_vo.num_of_consumers"),
    ],
    search=[
        SearchField.set(name="Stream Name", key="data.stream_name"),
        SearchField.set(name="Stream ARN", key="data.stream_arn"),
        SearchField.set(name="Stream Status", key="data.stream_status"),
        SearchField.set(name="Consumer Name",
    fields=[
        TextDyField.data_source('ID', 'data.group_id'),
        TextDyField.data_source('Name', 'data.group_name'),
        TextDyField.data_source('Description', 'data.description'),
        TextDyField.data_source('VPC ID', 'data.vpc_id'),
        TextDyField.data_source('Account ID', 'data.owner_id'),
    ])

inbound_rules = TableDynamicLayout.set_fields(
    'Inbound Rules',
    'data.ip_permissions',
    fields=[
        EnumDyField.data_source('Protocol',
                                'protocol_display',
                                default_badge={
                                    'coral.600': ['ALL'],
                                    'indigo.500': ['TCP'],
                                    'peacock.500': ['UDP'],
                                    'green.500': ['ICMP']
                                }),
        TextDyField.data_source('Port range', 'port_display'),
        TextDyField.data_source('Source', 'source_display'),
        TextDyField.data_source('Description', 'description_display'),
    ])

outbound_rules = TableDynamicLayout.set_fields(
    'Outbound Rules',
    'data.ip_permissions_egress',
    fields=[
        EnumDyField.data_source('Protocol',
                                'protocol_display',
                                default_badge={
cst_cluster.service_code = 'AmazonMSK'
cst_cluster.is_primary = True
cst_cluster.is_major = True
cst_cluster.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-MSK.svg',
}

cst_cluster._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Cluster name', 'data.cluster_name'),
        EnumDyField.data_source('Status',
                                'data.state',
                                default_state={
                                    'safe': ['ACTIVE'],
                                    'warning': [
                                        'CREATING', 'DELETING', 'HEALING',
                                        'MAINTENANCE', 'REBOOTING_BROKER'
                                    ],
                                    'alert': ['FAILED']
                                }),
        TextDyField.data_source(
            'Kafka Version',
            'data.current_broker_software_info.kafka_version'),
        TextDyField.data_source('Broker Type',
                                'data.broker_node_group_info.instance_type'),
        TextDyField.data_source('Number Of  Broker Nodes',
                                'data.number_of_broker_nodes'),
        DateTimeDyField.data_source('Creation time', 'data.creation_time'),
        TextDyField.data_source('ARN',
                                'data.cluster_arn',
                                options={'is_optional': True}),
Beispiel #8
0
cst_distribution.name = 'Distribution'
cst_distribution.provider = 'aws'
cst_distribution.group = 'CloudFront'
cst_distribution.labels = ['Networking']
cst_distribution.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-CloudFront.svg',
    'spaceone:is_major': 'false',
}

cst_distribution._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Id', 'data.id'),
        TextDyField.data_source('Domain Name', 'data.domain_name'),
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={'safe': ['Deployed']}),
        ListDyField.data_source('CNAME',
                                'data.alias_icp_recordals',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'cname',
                                }),
    ],
    search=[
        SearchField.set(name='Distribution ID', key='data.id'),
        SearchField.set(name='ARN', key='data.arn'),
        SearchField.set(name='Status',
                        key='data.status',
                        enums={
                            'Deployed': {
Beispiel #9
0
cst_api.name = 'API'
cst_api.provider = 'aws'
cst_api.group = 'APIGateway'
cst_api.labels = ['Networking']
cst_api.is_primary = True
cst_api.is_major = True
cst_api.service_code = 'AmazonApiGateway'
cst_api.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-API-Gateway.svg',
}

cst_api._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('ID', 'data.id'),
        TextDyField.data_source('Name', 'data.name'),
        EnumDyField.data_source('Protocol', 'data.protocol', default_outline_badge=['REST', 'WEBSOCKET', 'HTTP']),
        TextDyField.data_source('Endpoint Type', 'data.endpoint_type'),
        DateTimeDyField.data_source('Creation Time', 'data.created_date')
    ],
    search=[
        SearchField.set(name='ID', key='data.id'),
        SearchField.set(name='Name', key='data.name'),
        SearchField.set(name='ARN', key='data.arn'),
        SearchField.set(name='Protocol', key='data.protocol'),
        SearchField.set(name='Endpoint Type', key='data.endpoint_type'),
        SearchField.set(name='AWS Account ID', key='data.account_id'),
        SearchField.set(name='Creation Time', key='data.create_date', data_type='datetime'),
    ]
)

cst_instance.group = 'Lightsail'
cst_instance.labels = ['Compute']
cst_instance.is_primary = True
cst_instance.is_major = True
cst_instance.service_code = 'AmazonLightsail'
cst_instance.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Lightsail.svg',
}

cst_instance._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        EnumDyField.data_source('State',
                                'data.state.name',
                                default_state={
                                    'safe': ['running'],
                                    'warning': ['provisioning'],
                                    'alert': ['stopped']
                                }),
        TextDyField.data_source('Core', 'data.hardware.cpu_count'),
        TextDyField.data_source('Memory', 'data.hardware.ram_size_in_gb'),
        TextDyField.data_source('Availability Zone',
                                'data.location.availability_zone'),
        TextDyField.data_source('Public IP', 'data.public_ip_address'),
        TextDyField.data_source('Private IP', 'data.private_ip_address'),
        TextDyField.data_source('Blueprint',
                                'data.blueprint_name',
                                options={'is_optional': True}),
        TextDyField.data_source('Bundle ID',
                                'data.bundle_id',
                                options={'is_optional': True}),
cst_cluster.service_code = 'AmazonDocDB'
cst_cluster.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-DocumentDB.svg',
}
cst_cluster._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['available'],
                                    'warning': [
                                        'maintenance', 'backing-up',
                                        'creating', 'migrating', 'modifying',
                                        'renaming',
                                        'resetting-master-credentials',
                                        'upgrading'
                                    ],
                                    'alert': [
                                        'deleting', 'failing-over',
                                        'inaccessible-encryption-credentials',
                                        'migration-failed'
                                    ]
                                }),
        TextDyField.data_source('Engine', 'data.engine'),
        TextDyField.data_source('Version', 'data.engine_version'),
        TextDyField.data_source('Instances', 'data.instance_count'),
        # For Dynamic Table
        TextDyField.data_source('DB Cluster ARN',
                                'data.db_cluster_arn',
                                options={'is_optional': True}),
cst_rds_database.name = 'Database'
cst_rds_database.provider = 'aws'
cst_rds_database.group = 'RDS'
cst_rds_database.labels = ['Database']
cst_rds_database.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-RDS.svg',
    'spaceone:is_major': 'true',
}

cst_rds_database._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('DB Identifier', 'data.db_identifier'),
        EnumDyField.data_source('Role',
                                'data.role',
                                default_badge={
                                    'indigo.500': ['cluster'],
                                    'coral.600': ['instance']
                                }),
        EnumDyField.data_source('Engine',
                                'data.engine',
                                default_outline_badge=[
                                    'aurora', 'mysql', 'mariadb', 'postgres',
                                    'oracle-ee', 'oracle-se', 'oracle-se1',
                                    'oracle-se2', 'sqlserver-ex',
                                    'sqlserver-web', 'sqlserver-se',
                                    'sqlserver-ee'
                                ]),
        TextDyField.data_source('Size', 'data.size'),
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
cst_filesystem.name = 'FileSystem'
cst_filesystem.provider = 'aws'
cst_filesystem.group = 'EFS'
cst_filesystem.labels = ['Storage']
cst_filesystem.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Elastic-File-System_EFS.svg',
    'spaceone:is_major': 'true',
}

cst_filesystem._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('ID', 'data.file_system_id'),
        TextDyField.data_source('Name', 'data.name'),
        EnumDyField.data_source('State', 'data.life_cycle_state', default_state={
            'safe': ['available'],
            'warning': ['creating', 'updating', 'deleting'],
            'disable': ['deleted']
        }),
        TextDyField.data_source('Metered Sizes (Bytes)', 'data.size_in_bytes.value'),
        TextDyField.data_source('Mount Targets', 'data.number_of_mount_targets'),
        DateTimeDyField.data_source('Creation date', 'data.creation_time'),
    ],
    search=[
        SearchField.set(name='File System ID', key='data.file_system_id'),
        SearchField.set(name='ARN', key='data.arn'),
        SearchField.set(name='Name', key='data.name'),
        SearchField.set(name='State', key='data.life_cycle_state',
                        enums={
                            'available': {'label': 'available', 'icon': {'color': 'green.500'}},
                            'creating': {'label': 'creating', 'icon': {'color': 'yellow.500'}},
                            'updating': {'label': 'updating', 'icon': {'color': 'yellow.500'}},
Beispiel #14
0
from schematics.types import ModelType, StringType, PolyModelType, DictType, ListType

from spaceone.inventory.connector.aws_cloud_front_connector.schema.data import DistributionData
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, BadgeItemDyField, BadgeDyField, EnumDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, SimpleTableDynamicLayout

# TAB - BASE
meta_base = ItemDynamicLayout.set_fields(
    'Distributions',
    fields=[
        TextDyField.data_source('Id', 'data.id'),
        TextDyField.data_source('ARN', 'data.arn'),
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['Deployed'],
                                }),
        TextDyField.data_source('Domain Name', 'data.domain_name'),
        ListDyField.data_source('CNAME',
                                'data.alias_icp_recordals',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'cname',
                                }),
        TextDyField.data_source(
            'Origins quantity',
            'data.distribution_config.origin_groups.quantity'),
        TextDyField.data_source(
            'Origin Groups quantity',
            'data.distribution_config.origin_groups.quantity'),
cst_bucket.group = 'S3'
cst_bucket.labels = ['Storage']
cst_bucket.is_primary = True
cst_bucket.is_major = True
cst_bucket.service_code = 'AmazonS3'
cst_bucket.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-S3.svg',
}

cst_bucket._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.name'),
        EnumDyField.data_source('Access',
                                'data.public_access',
                                default_badge={
                                    'indigo.500': ['Private'],
                                    'coral.600': ['Public']
                                }),
        TextDyField.data_source('Object Total Counts', 'data.object_count'),
        SizeField.data_source('Object Total Size', 'data.object_total_size'),
        TextDyField.data_source('ARN',
                                'data.arn',
                                options={'is_optional': True}),
        TextDyField.data_source('Versioning Status',
                                'data.versioning.status',
                                options={'is_optional': True}),
        TextDyField.data_source('Webhosting Index Document',
                                'data.website_hosting.index_document',
                                options={'is_optional': True}),
        TextDyField.data_source('Webhosting Error Document',
                                'data.website_hosting.error_document',
Beispiel #16
0
cst_table.group = 'DynamoDB'
cst_table.labels = ['Database']
cst_table.is_primary = True
cst_table.is_major = True
cst_table.service_code = 'AmazonDynamoDB'
cst_table.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-DynamoDB.svg',
}
cst_table._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.table_name'),
        EnumDyField.data_source(
            'Status',
            'data.table_status',
            default_state={
                'safe': ['ACTIVE'],
                'warning': ['CREATING', 'UPDATING', 'DELETING', 'ARCHIVING'],
                'alert': ['INACCESSIBLE_ENCRYPTION_CREDENTIALS', 'ARCHIVED']
            }),
        TextDyField.data_source('Partition Key', 'data.partition_key_display'),
        TextDyField.data_source('Sort Key', 'data.sort_key_display'),
        TextDyField.data_source('Indexes', 'data.index_count'),
        TextDyField.data_source('Total read capacity',
                                'data.total_read_capacity'),
        TextDyField.data_source('Total write capacity',
                                'data.total_write_capacity'),
        ListDyField.data_source('Auto Scaling',
                                'data.auto_scaling_policies',
                                default_badge={'type': 'outline'}),
        TextDyField.data_source('Table ID',
                                'data.table_id',
Beispiel #17
0
cst_ebs.group = 'EC2'
cst_ebs.labels = ['Compute', 'Storage']
cst_ebs.is_primary = True
cst_ebs.is_major = True
cst_ebs.service_code = 'AmazonEC2'
cst_ebs.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Elastic-Block-Store-EBS.svg',
    'spaceone:display_name': 'EBS'
}
cst_ebs._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Volume ID', 'data.volume_id'),
        EnumDyField.data_source('State', 'data.state', default_state={
            'safe': ['in-use'],
            'available': ['available'],
            'warning': ['deleting', 'creating'],
            'disable': ['deleted'],
            'alert': ['error']
        }),
        SizeField.data_source('Size', 'instance_size'),
        TextDyField.data_source('Volume Type', 'instance_type'),
        TextDyField.data_source('IOPS', 'data.iops'),
        TextDyField.data_source('From Snapshot', 'data.snapshot_id'),
        TextDyField.data_source('Availablity Zone', 'data.availability_zone'),
        DateTimeDyField.data_source('Created', 'data.create_time'),
        TextDyField.data_source('ARN', 'data.arn', options={
            'is_optional': True
        }),
        TextDyField.data_source('Encrypted', 'data.encrypted', options={
            'is_optional': True
        }),
Beispiel #18
0
from spaceone.inventory.connector.aws_dynamodb_connector.schema.data import Table
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, BadgeDyField, DateTimeDyField, \
    EnumDyField, SizeField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout

tables = ItemDynamicLayout.set_fields(
    'Tables',
    fields=[
        TextDyField.data_source('Table Name', 'data.table_name'),
        TextDyField.data_source('ARN', 'data.table_arn'),
        EnumDyField.data_source(
            'Status',
            'data.table_status',
            default_state={
                'safe': ['ACTIVE'],
                'warning': ['CREATING', 'UPDATING', 'DELETING', 'ARCHIVING'],
                'alert': ['INACCESSIBLE_ENCRYPTION_CREDENTIALS', 'ARCHIVED']
            }),
        TextDyField.data_source('Partition Key', 'data.partition_key_display'),
        TextDyField.data_source('Primary Sort Key', 'data.sort_key_display'),
        EnumDyField.data_source(
            'Point-in-time Recovery',
            'data.continuous_backup.point_in_time_recovery_description.point_in_time_recovery_status',
            default_state={
                'safe': ['ENABLED'],
                'disable': ['DISABLED']
            }),
        EnumDyField.data_source(
            'CloudWatch Contributor Insights',
            'data.contributor_insight.contributor_insights_status',
Beispiel #19
0
from schematics.types import ModelType, StringType, PolyModelType, DictType, ListType

from spaceone.inventory.connector.aws_rds_connector.schema.data import Database, 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
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, SimpleTableDynamicLayout

summary = ItemDynamicLayout.set_fields(
    'Summary',
    fields=[
        TextDyField.data_source('DB Identifier', 'data.db_identifier'),
        EnumDyField.data_source('Role',
                                'data.role',
                                default_badge={
                                    'indigo.500': ['cluster'],
                                    'coral.600': ['instance']
                                }),
        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',
Beispiel #20
0
from spaceone.inventory.connector.aws_efs_connector.schema.data import FileSystem
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, DateTimeDyField, EnumDyField, \
    SizeField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, SimpleTableDynamicLayout

base = ItemDynamicLayout.set_fields(
    'File Systems',
    fields=[
        TextDyField.data_source('ID', 'data.file_system_id'),
        TextDyField.data_source('Name', 'data.name'),
        EnumDyField.data_source('File System State',
                                'data.life_cycle_state',
                                default_state={
                                    'safe': ['available'],
                                    'warning':
                                    ['creating', 'updating', 'deleting'],
                                    'disable': ['deleted']
                                }),
        TextDyField.data_source('Owner ID', 'data.owner_id'),
        SizeField.data_source('Metered Size', 'data.size_in_bytes.value'),
        TextDyField.data_source('Number of mount targets',
                                'data.number_of_mount_targets'),
        TextDyField.data_source('Performance mode', 'data.performance_mode'),
        TextDyField.data_source('Throughput mode', 'data.throughput_mode'),
        EnumDyField.data_source('Encrypted',
                                'data.encrypted',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
cst_ecs_cluster.labels = ['Container', 'Compute']
cst_ecs_cluster.is_primary = True
cst_ecs_cluster.is_major = True
cst_ecs_cluster.service_code = 'AmazonECS'
cst_ecs_cluster.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Elastic-Container-Service.svg',
}

cst_ecs_cluster._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['ACTIVE'],
                                    'warning':
                                    ['PROVISIONING', 'DEPROVISIONING'],
                                    'disable': ['INACTIVE'],
                                    'alert': ['FAILED']
                                }),
        TextDyField.data_source('Active Services',
                                'data.active_services_count'),
        TextDyField.data_source('Running Tasks', 'data.running_tasks_count'),
        TextDyField.data_source('Pending Tasks', 'data.pending_tasks_count'),
        TextDyField.data_source('Registered Instances',
                                'data.registered_container_instances_count'),
        TextDyField.data_source('Cluster ARN',
                                'data.cluster_arn',
                                options={'is_optional': True}),
        ListDyField.data_source('Services ARN',
                                'data.services',
Beispiel #22
0
# GROUP
group_base = ItemDynamicLayout.set_fields('Group', fields=[
    TextDyField.data_source('Group ARN', 'data.arn'),
    TextDyField.data_source('Group Name', 'data.group_name'),
    TextDyField.data_source('Group ID', 'data.group_id'),
    TextDyField.data_source('Path', 'data.path'),
    TextDyField.data_source('User Count', 'data.user_count'),
    DateTimeDyField.data_source('Created At', 'data.create_date'),
])

group_user_table = TableDynamicLayout.set_fields('Users', root_path='data.users', fields=[
    TextDyField.data_source('User Name', 'user_name'),
    TextDyField.data_source('Access Key Age', 'access_key_age_display'),
    TextDyField.data_source('Last Activity', 'last_activity'),
    EnumDyField.data_source('MFA', 'mfa_device', default_badge={
        'indigo.500': ['Virtual'], 'coral.600': ['Not enabled'],
    }),
])

group_policy_table = TableDynamicLayout.set_fields('Permissions', root_path='data.attached_permission', fields=[
    TextDyField.data_source('Policy Name', 'policy_name'),
    TextDyField.data_source('Policy ID', 'policy_id'),
    EnumDyField.data_source('Policy Type', 'policy_type', default_badge={
        'indigo.500': ['AWS Managed'], 'coral.600': ['Local Managed'],
    }),
    TextDyField.data_source('Policy ARN', 'arn'),
    TextDyField.data_source('Permission Usage Count', 'attachment_count'),
    TextDyField.data_source('Description', 'description'),
    DateTimeDyField.data_source('Created At', 'create_date'),
    DateTimeDyField.data_source('Updated At', 'update_date'),
])
cst_eks_cluster.name = 'Cluster'
cst_eks_cluster.provider = 'aws'
cst_eks_cluster.group = 'EKS'
cst_eks_cluster.labels = ['Container']
cst_eks_cluster.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Elastic-Kubernetes-Service.svg',
    'spaceone:is_major': 'true',
}

cst_eks_cluster._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.name'),
        TextDyField.data_source('Version', 'data.version'),
        EnumDyField.data_source('Status', 'data.status', default_state={
            'safe': ['ACTIVE'],
            'warning': ['CREATING', 'DELETING', 'UPDATING'],
            'alert': ['FAILED']
        })
    ],
    search=[
        SearchField.set(name='Cluster Name', key='data.name'),
        SearchField.set(name='ARN', key='data.arn'),
        SearchField.set(name='Status', key='data.status',
                        enums={
                            'ACTIVE': {'label': 'ACTIVE', 'icon': {'color': 'green.500'}},
                            'CREATING': {'label': 'CREATING', 'icon': {'color': 'yellow.500'}},
                            'UPDATING': {'label': 'UPDATING', 'icon': {'color': 'yellow.500'}},
                            'DELETING': {'label': 'DELETING', 'icon': {'color': 'yellow.500'}},
                            'FAILED': {'label': 'FAILED', 'icon': {'color': 'red.500'}},
                        }),
        SearchField.set(name='Cluster Version', key='data.version'),
cst_ami.labels = ['Compute']
cst_ami.service_code = 'AmazonEC2'
cst_ami.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-AMI.svg',
}

cst_ami._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('ID', 'data.image_id'),
        TextDyField.data_source('Name', 'data.name'),
        TextDyField.data_source('Source', 'data.image_location'),
        TextDyField.data_source('Owner', 'data.owner_id'),
        EnumDyField.data_source('Is Public',
                                'data.public',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        EnumDyField.data_source(
            'Status',
            'data.state',
            default_state={
                'safe': ['available'],
                'warning': ['pending', 'transient', 'deregistered', 'invalid'],
                'alert': ['error', 'failed']
            }),
        DateTimeDyField.data_source('Creation Date', 'data.creation_date'),
        TextDyField.data_source('Platform', 'data.platform'),
        TextDyField.data_source('Root Device Type', 'data.root_device_type'),
        TextDyField.data_source('Virtualization', 'data.virtualization_type'),
    ],
cst_redshift_cluster.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-Redshift.svg'
}

cst_redshift_cluster._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        EnumDyField.data_source(
            'Status',
            'data.cluster_status',
            default_state={
                'safe': ['available'],
                'warning': [
                    'prep-for-resize', 'resize-cleanup', 'cancelling-resize',
                    'creating', 'deleting', 'final-snapshot', 'modifying',
                    'rebooting', 'renaming', 'resizing', 'rotating-keys',
                    'updating-hsm'
                ],
                'disable': ['paused'],
                'alert': [
                    'hardware-failure', 'incompatible-hsm',
                    'incompatible-network', 'incompatible-parameters',
                    'incompatible-restore', 'storage-full'
                ]
            }),
        TextDyField.data_source('Cluster Version', 'data.cluster_version'),
        TextDyField.data_source('Nodes', 'data.number_of_nodes'),
        TextDyField.data_source('Node Type', 'instance_type'),
        TextDyField.data_source('Endpoint',
                                'data.endpoint.address',
                                options={'is_optional': True}),
        TextDyField.data_source('Port',
launch_template.name = 'LaunchTemplate'
launch_template.provider = 'aws'
launch_template.group = 'EC2'
launch_template.labels = ['Compute']
launch_template.service_code = 'AmazonEC2'
launch_template.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-EC2-Auto-Scaling.svg',
}

launch_template._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.launch_template_name'),
        TextDyField.data_source('AMI ID', 'data.launch_template_data.image_id'),
        TextDyField.data_source('Owner', 'data.created_by'),
        EnumDyField.data_source('Default Version', 'data.default_version', default_badge={
            'indigo.500': ['true'], 'coral.600': ['false']
        }),
        TextDyField.data_source('Version', 'data.version'),
        DateTimeDyField.data_source('Creation Time', 'data.create_time'),
    ],
    search=[
        SearchField.set(name='Name', key='data.launch_template_name'),
        SearchField.set(name='ID', key='data.launch_template_id'),
        SearchField.set(name='AMI ID', key='data.launch_template_data.image_id'),
        SearchField.set(name='Owner', key='data.created_by'),
        SearchField.set(name='Default Version', key='data.default_version', data_type='boolean'),
        SearchField.set(name='Versions', key='data.version'),
        SearchField.set(name='Instance Type', key='data.launch_template_data.instance_type'),
        SearchField.set(name='Monitoring', key='data.launch_template_data.monitoring.enabled', data_type='boolean'),
        SearchField.set(name='Security Group ID', key='data.launch_template_data.security_group_ids'),
        SearchField.set(name='Created Time', key='data.create_time', data_type='datetime'),
Beispiel #27
0
cst_eip.labels = ['Networking', 'Compute']
cst_eip.is_major = True
cst_eip.service_code = 'AmazonEC2'
cst_eip.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-EC2_Elastic-IP-Address_light-bg.svg',
}

cst_eip._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.name'),
        TextDyField.data_source('Public IP', 'data.public_ip'),
        TextDyField.data_source('Private IP', 'data.private_ip_address'),
        TextDyField.data_source('Address Pool', 'data.public_ipv4_pool'),
        EnumDyField.data_source('Scope',
                                'data.domain',
                                default_outline_badge=['vpc', 'standard']),
        TextDyField.data_source('Associate Instance ID', 'data.instance_id'),
        TextDyField.data_source('Public DNS',
                                'data.public_dns',
                                options={'is_optional': True}),
        TextDyField.data_source('NAT Gateway ID',
                                'data.nat_gateway_id',
                                options={'is_optional': True}),
        TextDyField.data_source('Association ID',
                                'data.association_id',
                                options={'is_optional': True}),
        TextDyField.data_source('Allocation ID',
                                'data.allocation_id',
                                options={'is_optional': True}),
        TextDyField.data_source('AWS Account ID',
Beispiel #28
0
from spaceone.inventory.connector.aws_ecs_connector.schema.data import Cluster
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, BadgeDyField, EnumDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, SimpleTableDynamicLayout

base = ItemDynamicLayout.set_fields(
    'Clusters',
    fields=[
        TextDyField.data_source('Name', 'data.cluster_name'),
        TextDyField.data_source('ARN', 'data.cluster_arn'),
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['ACTIVE'],
                                    'warning':
                                    ['PROVISIONING', 'DEPROVISIONING'],
                                    'disable': ['INACTIVE'],
                                    'alert': ['FAILED']
                                }),
        TextDyField.data_source('Active Service',
                                'data.active_services_count'),
        TextDyField.data_source('Running Tasks', 'data.active_services_count'),
        TextDyField.data_source('Pending Tasks', 'data.pending_tasks_count'),
        TextDyField.data_source('Registered Instances',
                                'data.registered_container_instances_count'),
    ])

services = TableDynamicLayout.set_fields(
    'Services',
    'data.services',
    CloudServiceMeta,
)

"""
kinesis
"""
# TAB - Stream
firehose_meta_stream_details = ItemDynamicLayout.set_fields(
    "Stream Details",
    fields=[
        TextDyField.data_source("ARN", "data.delivery_stream_arn"),
        EnumDyField.data_source(
            "Status",
            "data.delivery_stream_status",
            default_state={
                "safe": ["ACTIVE"],
                'warning': ["CREATING", "DELETING"],
                "alert": ["DELETING_FAILED", "CREATING_FAILED", "SUSPENDED"]
            },
        ),
        DateTimeDyField.data_source(
            "Data retention period", "data.create_timestamp"
        ),
        ListDyField.data_source("Permissions (IAM role)", "data.additional_tabs.iam_role", options={"delimiter": ", "}),
        ListDyField.data_source("CloudWatch error logging", "data.additional_tabs.cloud_watch_info",
                                options={"delimiter": ", "})
    ],
)

# TAB - Source
firehose_meta_source_details = ItemDynamicLayout.set_fields(
Beispiel #30
0
    EgressOnlyInternetGateway, Endpoint, NATGateway, PeeringConnection, NetworkACL, TransitGateway, CustomerGateway, \
    VPNConnection, VPNGateway
from spaceone.inventory.libs.schema.resource import CloudServiceMeta, CloudServiceResource, CloudServiceResponse
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, EnumDyField, DateTimeDyField, \
    BadgeDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, \
    SimpleTableDynamicLayout

# VPC
vpc = ItemDynamicLayout.set_fields(
    'VPC',
    fields=[
        TextDyField.data_source('VPC ID', 'data.vpc_id'),
        EnumDyField.data_source('State',
                                'data.state',
                                default_state={
                                    'safe': ['available'],
                                    'warning': ['pending']
                                }),
        TextDyField.data_source('IPv4 CIDR', 'data.cidr_block'),
        ListDyField.data_source('IPv6 CIDR',
                                'data.ipv6_cidr_block_association_set',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'ipv6_cidr_block'
                                }),
        EnumDyField.data_source('DNS resolution',
                                'data.enable_dns_support',
                                default_badge={
                                    'indigo.500': ['Enabled'],
                                    'coral.600': ['Disabled']
                                }),