Пример #1
0
         'is_optional': True
     }),
     TextDyField.data_source('Parameter Group Name', 'data.parameter_group_name', options={
         'is_optional': True
     }),
     TextDyField.data_source('Replication Group ID', 'data.replication_group_id', options={
         'is_optional': True
     }),
     TextDyField.data_source('Snapshot Window', 'data.snapshot_window', options={
         'is_optional': True
     }),
     TextDyField.data_source('Multi AZ', 'data.multi_az', options={
         'is_optional': True
     }),
     ListDyField.data_source('Availability Zones', 'data.availability_zones', options={
         'delimiter': '<br>',
         'is_optional': True
     }),
     TextDyField.data_source('Subnet Group Name', 'data.subnet_group_name', options={
         'is_optional': True
     }),
     TextDyField.data_source('Auth Token Enabled', 'data.auth_token_enabled', options={
         'is_optional': True
     })
 ],
 search=[
     SearchField.set(name='ARN', key='data.arn'),
     SearchField.set(name='Mode', key='data.mode'),
     SearchField.set(name='Status', key='data.status'),
     SearchField.set(name='Shard Count', key='data.shard_count', data_type='integer'),
     SearchField.set(name='Node Count', key='data.node_count', data_type='integer'),
     SearchField.set(name='Node Type', key='instance_type'),
 TextDyField.data_source('Publicly Accessible',
                         'data.publicly_accessible',
                         options={'is_optional': True}),
 TextDyField.data_source('Automated Snapshot Retention Period',
                         'data.automated_snapshot_retention_period',
                         options={'is_optional': True}),
 TextDyField.data_source('Subnet Group Name',
                         'data.cluster_subnet_group_name',
                         options={'is_optional': True}),
 TextDyField.data_source('Master Username',
                         'data.master_username',
                         options={'is_optional': True}),
 ListDyField.data_source('IAM Role ARNs',
                         'data.iam_roles',
                         options={
                             'delimiter': '<br>',
                             'sub_key': 'iam_role_arn',
                             'is_optional': True
                         }),
 ListDyField.data_source('Security Groups',
                         'data.vpc_security_groups',
                         options={
                             'delimiter': '<br>',
                             'sub_key': 'vpc_security_group_id',
                             'is_optional': True
                         }),
 TextDyField.data_source('HSM Status',
                         'data.hsm_status',
                         options={'is_optional': True}),
 TextDyField.data_source('Snapshot Schedule Identifier',
                         'data.snapshot_schedule_identifier',
Пример #3
0
                             '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',
                         options={
                             'sub_key': 'cname',
                             'delimiter': '<br>'
                         }),
 TextDyField.data_source('Domain Name', 'data.domain_name'),
 TextDyField.data_source('Custom SSL Client Support',
                         'data.viewer_certificate.ssl_support_method'),
 TextDyField.data_source(
     'Security Policy',
     'data.viewer_certificate.minimum_protocol_version'),
 EnumDyField.data_source('IPv6 Support',
                         'data.is_ipv6_enabled',
                         default_badge={
                             'indigo.500': ['true'],
                             'coral.600': ['false']
                         }),
 DateTimeDyField.data_source('Last Modified', 'data.last_modified_time')
                             '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',
                         options={
                             'sub_key': 'service_arn',
                             'delimiter': '<br>',
                             'is_optional': True
                         }),
 ListDyField.data_source('Services name',
                         'data.services',
                         options={
                             'sub_key': 'service_name',
                             'delimiter': '<br>',
                             'is_optional': True
                         }),
 ListDyField.data_source('Services Launch Type',
                         'data.services',
                         options={
                             'sub_key': 'launch_type',
                             'delimiter': '<br>',
Пример #5
0
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
    ])

net_sec = ItemDynamicLayout.set_fields(
    'Network and Security',
    fields=[
        TextDyField.data_source('VPC ID', 'data.vpc_id'),
        TextDyField.data_source('Availability Zone', 'availability_zone'),
        TextDyField.data_source('Subnet Group',
                                'data.cluster_subnet_group_name'),
        ListDyField.data_source('Security Groups',
                                'data.vpc_security_groups',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'vpc_security_group_id',
                                }),
        TextDyField.data_source('Enhanced VPC Routing',
                                'enhanced_vpc_routing'),
        EnumDyField.data_source('Publicly Accessible',
                                'publicly_accessible',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'vpc_security_group_id',
                                })
    ])

param_group = ItemDynamicLayout.set_fields(
    'Parameter Groups',
    'data.cluster_parameter_groups',
Пример #6
0
     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
     }),
     TextDyField.data_source('KMS Key ID', 'data.kms_key_id', options={
         'is_optional': True
     }),
     TextDyField.data_source('Multi Attach Enabled', 'data.multi_attach_enabled', options={
         'is_optional': True
     }),
     ListDyField.data_source('Attached Instance ID', 'data.attachments', options={
         'sub_key': 'instance_id',
         'delimiter': '<br>',
         'is_optional': True
     }),
     TextDyField.data_source('AWS Account ID', 'data.account_id', options={
         'is_optional': True
     })
 ],
 search=[
     SearchField.set(name='Volume ID', key='data.volume_id'),
     SearchField.set(name='ARN', key='data.arn'),
     SearchField.set(name='State', key='data.state',
                     enums={
                         'in-use': {'label': 'in-use', 'icon': {'color': 'green.500'}},
                         'available': {'label': 'available', 'icon': {'color': 'blue.400'}},
                         'deleting': {'label': 'deleting', 'icon': {'color': 'yellow.500'}},
                         'creating': {'label': 'creating', 'icon': {'color': 'yellow.500'}},
Пример #7
0
instance_conn = ItemDynamicLayout.set_fields(
    'Connectivity',
    fields=[
        TextDyField.data_source('Endpoint', 'data.instance.endpoint.address'),
        TextDyField.data_source('Port', 'data.instance.endpoint.port'),
        TextDyField.data_source('Availability Zone',
                                'data.instance.availability_zone'),
        TextDyField.data_source('VPC', 'data.instance.db_subnet_group.vpc_id'),
        TextDyField.data_source(
            'Subnet Group',
            'data.instance.db_subnet_group.db_subnet_group_name'),
        ListDyField.data_source('Subnets',
                                'data.instance.db_subnet_group.subnets',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'subnet_identifier',
                                    'delimiter': '<br>'
                                }),
    ])

instance_sec = ItemDynamicLayout.set_fields(
    'Security',
    fields=[
        ListDyField.data_source('VPC Security Groups',
                                'data.instance.vpc_security_groups',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'vpc_security_group_id',
                                }),
        EnumDyField.data_source('Public Accessibility',
     ),
     TextDyField.data_source('ARN', 'data.stream_arn', options={
         'is_optional': True
     }),
     TextDyField.data_source('Encryption Type', 'data.encryption_type', options={
         'is_optional': True
     }),
     TextDyField.data_source('Encryption Key ID', 'data.key_id', options={
         'is_optional': True
     }),
     TextDyField.data_source('Closed Shards', 'data.closed_shards_num', options={
         'is_optional': True
     }),
     ListDyField.data_source('Shard IDs', 'data.shards', options={
         'delimiter': '<br>',
         'sub_key': 'shard_id',
         'is_optional': True
     })
 ],
 search=[
     SearchField.set(name="Stream ARN", key="data.stream_arn"),
     SearchField.set(name="Stream Status", key="data.stream_status"),
     SearchField.set(name="Consumer Name", key="data.consumers_vo.consumer_name"),
     SearchField.set(name="Consumer ARN", key="data.consumers_vo.consumer_arn"),
     SearchField.set(name="Shard ID", key="data.shards.shard_id"),
     SearchField.set(name="Parent Shard Id", key="data.shards.parent_shard_id"),
     SearchField.set(
         name="Retention Hours",
         key="data.retention_period_hours",
         data_type="Integer",
     ),
                         options={'is_optional': True}),
 TextDyField.data_source('Endpoint',
                         'data.endpoint',
                         options={'is_optional': True}),
 TextDyField.data_source('Reader Endpoint',
                         'data.reader_endpoint',
                         options={'is_optional': True}),
 TextDyField.data_source('Port',
                         'data.port',
                         options={'is_optional': True}),
 TextDyField.data_source('Multi AZ',
                         'data.multi_az',
                         options={'is_optional': True}),
 ListDyField.data_source('Availability Zones',
                         'data.availability_zones',
                         options={
                             'delimiter': '<br>',
                             'is_optional': True
                         }),
 ListDyField.data_source('Instances ARN',
                         'data.instances',
                         options={
                             'delimiter': '<br>',
                             'sub_key': 'db_instance_arn',
                             'is_optional': True
                         }),
 ListDyField.data_source('Instances Identifier',
                         'data.instances',
                         options={
                             'delimiter': '<br>',
                             'sub_key': 'db_instance_identifier',
                             'is_optional': True
Пример #10
0
cst_asg.service_code = 'AmazonEC2'
cst_asg.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-EC2-Auto-Scaling.svg',
}

cst_asg._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.auto_scaling_group_name'),
        TextDyField.data_source('Desired', 'data.desired_capacity'),
        TextDyField.data_source('Min', 'data.min_size'),
        TextDyField.data_source('Max', 'data.max_size'),
        TextDyField.data_source('Launch Template / Configuration',
                                'data.display_launch_configuration_template'),
        ListDyField.data_source('AZ',
                                'data.availability_zones',
                                default_badge={'delimiter': '<br>'}),
        # For Dynamic Table
        TextDyField.data_source('ARN',
                                'data.auto_scaling_group_arn',
                                options={'is_optional': True}),
        TextDyField.data_source('Health Check Type',
                                'data.health_check_type',
                                options={'is_optional': True}),
        TextDyField.data_source('Instance Protected from Scale In',
                                'data.new_instances_protected_from_scale_in',
                                options={'is_optional': True}),
        TextDyField.data_source('Default CoolDown (sec)',
                                'data.default_cooldown',
                                options={'is_optional': True}),
        TextDyField.data_source('Health Check Grace Period (sec)',
     SizeField.data_source('Object Total Size', 'data.object_total_size'),
     TextDyField.data_source('URL', 'data.url'),
     TextDyField.data_source('Object Access',
                             'data.access_rules.get_object'),
     TextDyField.data_source('ARN',
                             'data.arn',
                             options={'is_optional': True}),
     TextDyField.data_source('Bundle ID',
                             'data.bundle_id',
                             options={'is_optional': True}),
     TextDyField.data_source('Object Versioning',
                             'data.object_versioning',
                             options={'is_optional': True}),
     ListDyField.data_source('Readonly Access Accounts',
                             'data.readonly_access_accounts',
                             options={
                                 'delimiter': '<br>',
                                 'is_optional': True
                             }),
     TextDyField.data_source('Access Log Config',
                             'data.access_log_config.enabled',
                             options={'is_optional': True}),
 ],
 search=[
     SearchField.set(name='State', key='data.state.code'),
     SearchField.set(name='Region', key='data.state.code'),
     SearchField.set(name='URL', key='data.url'),
     SearchField.set(name='Bundle ID', key='data.bundle_id'),
     SearchField.set(name='Object Versioning ',
                     key='data.object_versioning'),
     SearchField.set(name='Readonly Access Accounts',
                     key='data.readonly_access_accounts'),
Пример #12
0
                             '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}),
     ListDyField.data_source('Record Set Names',
                             'data.record_sets',
                             options={
                                 'sub_key': 'name',
                                 'delimiter': '<br>',
                                 'is_optional': True
                             }),
     ListDyField.data_source('Record Set TTLs',
                             'data.record_sets',
                             options={
                                 'sub_key': 'ttl',
                                 'delimiter': '<br>',
                                 'is_optional': True
                             }),
     TextDyField.data_source('AWS Account ID',
                             'data.account_id',
                             options={'is_optional': True})
 ],
 search=[
Пример #13
0
# 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']
                                }),
        EnumDyField.data_source('DNS hostnames',
                                'data.enable_dns_hostnames',
                                default_badge={
                                    'indigo.500': ['Enabled'],
                                    'coral.600': ['Disabled']
                                }),
        TextDyField.data_source('DHCP Options set', 'data.dhcp_options_id'),
Пример #14
0
from schematics.types import ModelType, StringType, PolyModelType, DictType, ListType

from spaceone.inventory.connector.aws_api_gateway_connector.schema.data import RestAPI, HTTPWebsocket
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, ListDyField, BadgeDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta

'''
REST API
'''
# TAB - BASE
rest_api_meta_base = ItemDynamicLayout.set_fields('REST API', fields=[
    TextDyField.data_source('Id', 'data.id'),
    TextDyField.data_source('Name', 'data.name'),
    TextDyField.data_source('Description', 'data.description'),
    ListDyField.data_source('Endpoint Type', 'data.endpoint_configuration.types', default_badge={'type': 'outline'})
])

# TAB - RESOURCE
rest_api_meta_resources = TableDynamicLayout.set_fields('Resources', 'data.resources', fields=[
    TextDyField.data_source('ID', 'id'),
    TextDyField.data_source('Parent ID', 'parent_id'),
    TextDyField.data_source('Path', 'path'),
    ListDyField.data_source('HTTP Methods', 'display_methods', default_badge={'type': 'inline'}),
])

rest_api_meta = CloudServiceMeta.set_layouts([rest_api_meta_base,
                                              rest_api_meta_resources])


'''
cst_asg.provider = 'aws'
cst_asg.group = 'EC2'
cst_asg.labels = ['Compute']
cst_asg.service_code = 'AmazonEC2'
cst_asg.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-EC2-Auto-Scaling.svg',
}

cst_asg._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.auto_scaling_group_name'),
        TextDyField.data_source('Desired', 'data.desired_capacity'),
        TextDyField.data_source('Min', 'data.min_size'),
        TextDyField.data_source('Max', 'data.max_size'),
        TextDyField.data_source('Launch Template / Configuration', 'data.display_launch_configuration_template'),
        ListDyField.data_source('AZ', 'data.availability_zones',
                                default_badge={'delimiter': '<br>'})
    ],
    search=[
        SearchField.set(name='Name', key='data.auto_scaling_group_name'),
        SearchField.set(name='ARN', key='data.auto_scaling_group_arn'),
        SearchField.set(name='Launch Configuration Name', key='data.launch_configuration_name'),
        SearchField.set(name='Availability Zone', key='data.availability_zones'),
        SearchField.set(name='Creation Time', key='data.created_time', data_type='datetime'),
        SearchField.set(name='Instance ID', key='data.instances.instance_id'),
        SearchField.set(name='Region', key='region_code'),
        SearchField.set(name='AWS Account ID', key='data.account_id'),
    ]
)

launch_configuration = CloudServiceTypeResource()
launch_configuration.name = 'LaunchConfiguration'
Пример #16
0
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': {
                                'label': 'Deployed',
                                'icon': {
                                    'color': 'green.500'
                                }
                            }
 TextDyField.data_source('Webhosting Error Document',
                         'data.website_hosting.error_document',
                         options={'is_optional': True}),
 TextDyField.data_source('Webhosting Error Document',
                         'data.website_hosting.routing_rules',
                         options={'is_optional': True}),
 TextDyField.data_source('Access Logging Target Bucket',
                         'data.server_access_logging.target_bucket',
                         options={'is_optional': True}),
 TextDyField.data_source('Access Logging Target Prefix',
                         'data.server_access_logging.target_prefix',
                         options={'is_optional': True}),
 ListDyField.data_source('Webhosting Routing Rules Condition',
                         'data.website_hosting.routing_rules',
                         options={
                             'sub_key': 'condition',
                             'delimiter': '<br>',
                             'is_optional': True
                         }),
 TextDyField.data_source('Object Lock Enabled',
                         'data.object_lock.object_lock_enabled',
                         options={'is_optional': True}),
 TextDyField.data_source(
     'Transfer Acceleration Enabled',
     'data.transfer_acceleration.transfer_acceleration',
     options={'is_optional': True}),
 ListDyField.data_source('Notification Type',
                         'data.notification_configurations',
                         options={
                             'sub_key': 'notification_type',
                             'delimiter': '<br>',
Пример #18
0
 DateTimeDyField.data_source('Last Retrieved', 'data.last_accessed_date'),
 TextDyField.data_source('ARN', 'data.arn', options={
     'is_optional': True
 }),
 TextDyField.data_source('KMS Key ID', 'data.kms_key_id', options={
     'is_optional': True
 }),
 TextDyField.data_source('Rotation Enabled', 'data.rotation_enabled', options={
     'is_optional': True
 }),
 TextDyField.data_source('Rotation Lambda ARN', 'data.rotation_lambda_arn', options={
     'is_optional': True
 }),
 ListDyField.data_source('Rotation Rule: Automatically After Days', 'data.rotation_rules', options={
     'sub_key': 'automatically_after_days',
     'delimiter': '<br>',
     'is_optional': True
 }),
 DateTimeDyField.data_source('Last Rotated Date', 'data.last_rotated_date', options={
     'is_optional': True
 }),
 DateTimeDyField.data_source('Last Changed Date', 'data.last_changed_date', options={
     'is_optional': True
 }),
 DateTimeDyField.data_source('Last Accessed Date', 'data.last_accessed_date', options={
     'is_optional': True
 }),
 DateTimeDyField.data_source('Last Deleted Date', 'data.deleted_date', options={
     'is_optional': True
 }),
 TextDyField.data_source('Owning Service', 'data.owning_service', options={
Пример #19
0
        TextDyField.data_source('State Reason', 'data.state_reason.message'),
        DateTimeDyField.data_source('Creation Date', 'data.creation_date'),
        TextDyField.data_source('Platform Details', 'data.platform_details'),
        TextDyField.data_source('Architecture', 'data.architecture'),
        TextDyField.data_source('Usage Operation', 'data.usage_operation'),
        TextDyField.data_source('Image Type', 'data.image_type'),
        TextDyField.data_source('Virtualization Type',
                                'data.virtualization_type'),
        TextDyField.data_source('Description', 'data.description'),
        TextDyField.data_source('Root Device Name', 'data.root_device_name'),
        TextDyField.data_source('Root Device Type', 'data.root_device_type'),
        TextDyField.data_source('RAM Disk ID', 'data.platform'),
        TextDyField.data_source('Kernel ID', 'data.platform'),
        ListDyField.data_source('Block Devices',
                                'data.block_device_mappings',
                                default_badge={
                                    'sub_key': 'device_name',
                                }),
    ])

ami_permission = TableDynamicLayout.set_fields(
    'Permission',
    'data.launch_permissions',
    fields=[TextDyField.data_source('AWS Account ID', 'user_id')])

ami_tags = SimpleTableDynamicLayout.set_tags()

ami_metadata = CloudServiceMeta.set_layouts(
    layouts=[ami, ami_permission, ami_tags])

Пример #20
0
     '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',
                         options={'is_optional': True}),
 TextDyField.data_source('ARN',
                         'data.table_arn',
                         options={'is_optional': True}),
 TextDyField.data_source('Encryption Type',
                         'data.encryption_type',
                         options={'is_optional': True}),
 SizeField.data_source('Table Size',
                       'data.table_size_bytes',
                       options={'is_optional': True}),
 TextDyField.data_source('Item Count',
                         'data.item_count',
 TextDyField.data_source('ARN',
                         'data.cluster_arn',
                         options={'is_optional': True}),
 TextDyField.data_source('Active Operation ARN',
                         'data.active_operation_arn',
                         options={'is_optional': True}),
 TextDyField.data_source('Zookeeper Connect String TLS',
                         'data.zookeeper_connect_string_tls',
                         options={'is_optional': True}),
 TextDyField.data_source('Zookeeper Connect String',
                         'data.zookeeper_connect_string',
                         options={'is_optional': True}),
 ListDyField.data_source('Nodes ARN',
                         'data.node_info_list',
                         options={
                             'delimiter': '<br>',
                             'sub_key': 'node_arn',
                             'is_optional': True
                         }),
 TextDyField.data_source('Client Auth SASL',
                         'data.client_authentication.sasl',
                         options={'is_optional': True}),
 TextDyField.data_source('Client Auth TLS',
                         'data.client_authentication.tls',
                         options={'is_optional': True}),
 TextDyField.data_source(
     'Encryption At Rest',
     'data.encryption_info.encryption_at_rest.data_volume_kms_key_id',
     options={'is_optional': True}),
 TextDyField.data_source(
     'Encryption In Transit',
Пример #22
0
    ])

contributor_insights = ItemDynamicLayout.set_fields(
    'CloudWatch Contributor Insights',
    fields=[
        EnumDyField.data_source(
            'Status',
            'data.contributor_insight.contributor_insights_status',
            default_state={
                'safe': ['ENABLED'],
                'warning': ['ENABLING', 'DISABLING'],
                'disable': ['DISABLED'],
                'alert': ['FAILED']
            }),
        ListDyField.data_source(
            'Rule List',
            'data.contributor_insight.contributor_insights_rule_list',
            default_badge={'type': 'outline'}),
    ])

metadata = CloudServiceMeta.set_layouts(
    layouts=[tables, capacity, encryption, ttl, contributor_insights])


class DynamoDBResource(CloudServiceResource):
    cloud_service_group = StringType(default='DynamoDB')


class TableResource(DynamoDBResource):
    cloud_service_type = StringType(default='Table')
    data = ModelType(Table)
    _metadata = ModelType(CloudServiceMeta,
cst_rest_api.name = 'RestAPI'
cst_rest_api.provider = 'aws'
cst_rest_api.group = 'APIGateway'
cst_rest_api.labels = ['Networking']
cst_rest_api.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-API-Gateway.svg',
    'spaceone:is_major': 'true',
}

cst_rest_api._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('ID', 'data.id'),
        TextDyField.data_source('Name', 'data.name'),
        ListDyField.data_source('Endpoint Type',
                                'data.endpoint_configuration.types',
                                default_badge={'type': 'outline'}),
        TextDyField.data_source('Description', 'data.description')
    ],
    search=[
        SearchField.set(name='Rest API ID', key='data.id'),
        SearchField.set(name='Name', key='data.name'),
        SearchField.set(name='ARN', key='data.arn'),
        SearchField.set(name='API Key Source', key='data.api_key_source'),
        SearchField.set(name='Creation Time',
                        key='data.created_date',
                        data_type='datetime'),
        SearchField.set(name='Region', key='data.region_name'),
        SearchField.set(name='AWS Account ID', key='data.account_id'),
    ])
Пример #24
0
                                }),
        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']
                                }),
        ListDyField.data_source('Lifecycle policy',
                                'data.life_cycle_policies',
                                options={
                                    'sub_key': 'transition_to_ia_display',
                                    'delimiter': '<br>'
                                }),
        DateTimeDyField.data_source('Creation date', 'data.creation_time')
    ])

mount_target = TableDynamicLayout.set_fields(
    'Mount Targets',
    'data.mount_targets',
    fields=[
        TextDyField.data_source('Mount target ID', 'mount_target_id'),
        EnumDyField.data_source('State',
                                'life_cycle_state',
                                default_state={
                                    'safe': ['available'],
                                    'warning':
cst_layer.service_code = 'AWSLambda'
cst_layer.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/AWS-Lambda.svg',
}

cst_layer._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.layer_name'),
        TextDyField.data_source('Version',
                                'data.latest_matching_version.version'),
        TextDyField.data_source('Description',
                                'data.latest_matching_version.description'),
        ListDyField.data_source(
            'Compatible Runtimes',
            'data.latest_matching_version.compatible_runtimes',
            default_badge={
                'type': 'outline',
            }),
    ],
    search=[
        SearchField.set(name='Name', key='data.layer_name'),
        SearchField.set(name='ARN', key='data.layer_arn'),
        SearchField.set(
            name='Compatible Runtimes',
            key='data.latest_matching_version.compatible_runtimes'),
        SearchField.set(name='Version',
                        key='data.version',
                        data_type='integer'),
        SearchField.set(name='Created Time',
                        key='data.latest_matching_version.created_date',
                        data_type='datetime'),
    "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("Creation Time", "data.create_timestamp"),
        TextDyField.data_source("Source", "data.source.source_name"),
        ListDyField.data_source('Destination', 'data.destinations', options={
            'sub_key': 'destination_id',
            'delimiter': '<br>'
        }),
        TextDyField.data_source('ARN', 'data.delivery_stream_arn'),
        TextDyField.data_source('Type', 'data.delivery_stream_type'),
        TextDyField.data_source('Version ID', 'data.version_id'),
        TextDyField.data_source('Encryption Configuration Status',
                                'data.delivery_stream_encryption_configuration.status'),
        TextDyField.data_source('Failure Description', 'data.failure_description')
    ],
)

# TAB - Source
firehose_meta_source_details = ItemDynamicLayout.set_fields(
    "Source",
    fields=[
        TextDyField.data_source("Source Name", "data.source.source_name"),
Пример #27
0
cst_certi.name = 'Certificate'
cst_certi.provider = 'aws'
cst_certi.group = 'CertificateManager'
cst_certi.labels = ['Security']
cst_certi.service_code = 'AWSCertificateManager'
cst_certi.tags = {
    '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'),
Пример #28
0
    DateTimeDyField.data_source('Created At', 'data.create_date'),
    DateTimeDyField.data_source('Last Accessed At', 'data.password_last_used'),
])

user_policy_table = TableDynamicLayout.set_fields('Permission', root_path='data.policies', fields=[
    TextDyField.data_source('Policy Name', 'policy_name'),
    EnumDyField.data_source('Policy Type', 'policy_type', default_badge={
        'indigo.500': ['AWS Managed'], 'coral.600': ['Local Managed'],
    }),
    TextDyField.data_source('Description', 'description'),
    DateTimeDyField.data_source('Created At', 'create_date'),
])

user_group_table = TableDynamicLayout.set_fields('Groups', root_path='data.groups', fields=[
    TextDyField.data_source('Group Name', 'group_name'),
    ListDyField.data_source('Policy Name', 'attached_policy_name', default_badge={'type': 'outline',
                                                                                  'delimiter': '<br>'}),
    DateTimeDyField.data_source('Created At', 'create_date'),
])

sign_in_credentials = ItemDynamicLayout.set_fields('Sign-in Credentials', root_path='data.sign_in_credential',
                                                   fields=[
                                                       ListDyField.data_source('Summary', 'summary'),
                                                       EnumDyField.data_source('Console Password', 'console_password',
                                                                               default_badge={
                                                                                   'indigo.500': ['Enabled'],
                                                                                   'coral.600': ['Disabled'],
                                                                               }),
                                                       TextDyField.data_source('Assigned MFA device',
                                                                               'assigned_mfa_device'),
                                                   ])
    "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(
    "Source",
    fields=[
        TextDyField.data_source("Source", "data.source.source_details"),
        TextDyField.data_source("Server-side encryption for source records",
                                "data.delivery_stream_encryption_configuration.status"),
        TextDyField.data_source("Encryption type", "data.delivery_stream_encryption_configuration.key_type"),
    ]
)
Пример #30
0
                                 'alert': ['active_impaired', 'failed']
                             }),
     EnumDyField.data_source('Type',
                             'data.type',
                             default_badge={
                                 'indigo.500': ['network'],
                                 'coral.600': ['application']
                             }),
     EnumDyField.data_source('Scheme',
                             'data.scheme',
                             default_badge={
                                 'indigo.500': ['internet-facing'],
                                 'coral.600': ['internal']
                             }),
     ListDyField.data_source('Security Groups',
                             'data.security_groups',
                             default_badge={'type': 'outline'}),
     EnumDyField.data_source('IP address type',
                             'data.ip_address_type',
                             default_outline_badge=['ipv4', 'dualstack']),
     TextDyField.data_source('VPC ID', 'data.vpc_id'),
     ListDyField.data_source('Availability Zones',
                             'data.availability_zones',
                             default_badge={
                                 'type': 'outline',
                                 'sub_key': 'zone_name',
                             }),
     TextDyField.data_source('Hosted Zone',
                             'data.canonical_hosted_zone_id'),
     DateTimeDyField.data_source('Creation time', 'data.created_time'),
 ])