'data.approximate_number_of_messages_delayed'),
        TextDyField.data_source(
            'Approximate Number Of Messages Not Visible',
            'data.approximate_number_of_messages_not_visible'),
        TextDyField.data_source('Delay Seconds', 'data.delay_seconds'),
        TextDyField.data_source('Maximum Message Size',
                                'data.maximum_message_size'),
        TextDyField.data_source('Message Retention Period',
                                'data.message_retention_period'),
        TextDyField.data_source('Receive Message Wait Time Seconds',
                                'data.receive_message_wait_time_seconds'),
        TextDyField.data_source('Visibility Timeout',
                                'data.visibility_timeout'),
        DateTimeDyField.data_source('Created Time',
                                    'data.created_timestamp',
                                    options={
                                        'source_type': 'timestamp',
                                        'source_format': 'seconds'
                                    }),
        DateTimeDyField.data_source('Last Modified Time',
                                    'data.last_modified_timestamp',
                                    options={
                                        'source_type': 'timestamp',
                                        'source_format': 'seconds'
                                    }),
    ])

metadata = CloudServiceMeta.set_layouts(layouts=[sqs])


class SQSResource(CloudServiceResource):
    cloud_service_group = StringType(default='SQS')
Beispiel #2
0
        TextDyField.data_source('Snapshot Identifier', 'snapshot_identifier'),
        BadgeDyField.data_source('Snapshot Type', 'snapshot_type'),
        EnumDyField.data_source('Status',
                                'status',
                                default_state={'safe': ['active']}),
        TextDyField.data_source('Size(MB)', 'total_backup_size_in_mega_bytes'),
        TextDyField.data_source(
            'Actual Incremental Size(MB)',
            'actual_incremental_backup_size_in_mega_bytes'),
        EnumDyField.data_source('Encrypted',
                                'encrypted',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        DateTimeDyField.data_source('Creation Time', 'snapshot_create_time'),
    ])

snpashot_schedule = TableDynamicLayout.set_fields(
    'Snapshot Schedules',
    'data.snapshot_schedules',
    fields=[
        TextDyField.data_source('Schedule Identifier', 'schedule_identifier'),
        TextDyField.data_source('Schedule Description',
                                'schedule_description'),
        TextDyField.data_source('Schedule Definition', 'schedule_definitions'),
        EnumDyField.data_source('State',
                                'associated_state',
                                default_state={'safe': ['active']}),
    ])
Beispiel #3
0
                                    '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')
    ])

alias_icp_recordals = SimpleTableDynamicLayout.set_fields(
    'Alias ICP Recordals',
    'data.alias_icp_recordals',
    fields=[
        TextDyField.data_source('CNAME', 'cname'),
        EnumDyField.data_source('Status',
                                'icp_recordal_status',
                                default_state={
                                    'safe': ['APPROVED'],
                                    'alert': ['SUSPENDED'],
                                    'warning': ['PENDING']
                                }),
    ])
Beispiel #4
0
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
        }),
        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>',
Beispiel #5
0
            }),
        TextDyField.data_source('Master username',
                                'data.instance.master_username'),
        EnumDyField.data_source('Multi AZ',
                                'data.instance.multi_az',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        EnumDyField.data_source('Performance Insights enabled',
                                'data.instance.performance_insights_enabled',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        DateTimeDyField.data_source('Created Time',
                                    'data.instance.instance_create_time'),
    ])

instance_storage = ItemDynamicLayout.set_fields(
    'Storage',
    fields=[
        EnumDyField.data_source('Storage Encryption',
                                'data.instance.storage_encrypted',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        EnumDyField.data_source(
            'Storage Type',
            'data.instance.storage_type',
            default_outline_badge=['standard', 'io1', 'gp2', 'st1', 'sc1']),
Beispiel #6
0
cst_secret = CloudServiceTypeResource()
cst_secret.name = 'Secret'
cst_secret.provider = 'aws'
cst_secret.group = 'SecretsManager'
cst_secret.labels = ['Security']
cst_secret.is_primary = True
cst_secret.service_code = 'AWSSecretsManager'
cst_secret.tags = {
    'spaceone:icon': 'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/AWS-Secrets-Manager.svg',
}

cst_secret._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Name', 'data.name'),
        TextDyField.data_source('Description', 'data.description'),
        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>',
"""
# 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("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
Beispiel #8
0
    }),
    EnumDyField.data_source('Enabled', 'enabled', default_badge={
        'indigo.500': ['true'], 'coral.600': ['false']
    }),
])

cluster_update = TableDynamicLayout.set_fields('Updates', 'data.updates', fields=[
    TextDyField.data_source('Update ID', 'id'),
    EnumDyField.data_source('Status', 'status', default_state={
        'safe': ['Successful'],
        'warning': ['InProgress'],
        'alert': ['Failed'],
        'disable': ['Cancelled']
    }),
    TextDyField.data_source('Type', 'type'),
    DateTimeDyField.data_source('Submission Time', 'created_at'),
    ListDyField.data_source('Error', 'errors.error_code', options={
        'delimiter': '<br>'
    })
])

cluster_tags = SimpleTableDynamicLayout.set_tags()
cluster_metadata = CloudServiceMeta.set_layouts(
    layouts=[cluster_base, cluster_node_groups, cluster_logging, cluster_tags])

node_group_base = ItemDynamicLayout.set_fields('Node Group', fields=[
    TextDyField.data_source('Node Group Name', 'data.nodegroup_name'),
    TextDyField.data_source('Node Group ARN', 'data.nodegroup_arn'),
    EnumDyField.data_source('Status', 'data.status', default_state={
        'safe': ['ACTIVE'],
        'warning': ['CREATING', 'UPDATING', 'DELETING'],
Beispiel #9
0
# TAB - Enhanced fan-out
kds_meta_consumers_using_enhanced_fan_out = TableDynamicLayout.set_fields(
    "Consumers using enhanced fan-out",
    "data.consumers_vo.consumers",
    fields=[
        TextDyField.data_source("Consumer name", "consumer_name"),
        EnumDyField.data_source(
            "Registration status",
            "consumer_status_display",
            default_state={
                "safe": ["Active"],
                "warning": ["Creating", "Deleting"]
            },
        ),
        DateTimeDyField.data_source("Registration date",
                                    "consumer_creation_timestamp"),
    ],
)

kds_meta_enhanced_fan_out = ListDynamicLayout.set_layouts(
    "Enhanced fan-out", layouts=[kds_meta_consumers_using_enhanced_fan_out])

# TAB - Tags
kds_meta_tags = TableDynamicLayout.set_fields(
    "Tags",
    "data.tags",
    fields=[
        TextDyField.data_source("Key", "key"),
        TextDyField.data_source("Value", "value"),
    ],
)
'''
# TAB - Status
acm_meta_status = ItemDynamicLayout.set_fields(
    'Status',
    fields=[
        EnumDyField.data_source('Status',
                                'data.status',
                                default_state={
                                    'safe': ['ISSUED'],
                                    'warning': [
                                        'PENDING_VALIDATION', 'INACTIVE',
                                        'VALIDATION_TIMED_OUT', 'REVOKED'
                                    ],
                                    'alert': ['EXPIRED', 'FAILED']
                                }),
        DateTimeDyField.data_source('Issue Date', 'data.issued_at'),
    ])

acm_meta_domain_validation_table = \
    TableDynamicLayout.set_fields('Domain Validation Status','data.domain_validation_options',
                                  fields=[
                                      TextDyField.data_source('Domain', 'domain_name'),
                                      EnumDyField.data_source('Validation status', 'validation_status',
                                                              default_state={
                                                                  'safe': ['SUCCESS'],
                                                                  'warning': ['PENDING_VALIDATION'],
                                                                  'alert': ['FAILED']}),
                                  ])

certificate_status = ListDynamicLayout.set_layouts(
    'Status', layouts=[acm_meta_status, acm_meta_domain_validation_table])
                         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', 'launched_at'),
 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={
        TextDyField.data_source('Timeout', 'data.time_out'),
        TextDyField.data_source('Memory Size', 'data.memory_size'),
        TextDyField.data_source('Code SHA 256', 'data.code_sha256'),
        TextDyField.data_source('KMS Key ARN', 'data.kms_key_arn'),
        TextDyField.data_source('Master ARN', 'data.master_arn'),
        TextDyField.data_source('Revision ID', 'data.revision_id'),
        EnumDyField.data_source('Last Update Status',
                                'data.last_update.type',
                                default_state={
                                    'safe': ['Successful'],
                                    'alert': ['Failed'],
                                    'warning': ['InProgress']
                                }),
        TextDyField.data_source('Last Update State Reason',
                                'data.last_update.reason'),
        DateTimeDyField.data_source('Last Modified', 'data.last_modified'),
    ])

function_vpc = ItemDynamicLayout.set_fields(
    'VPC',
    fields=[
        TextDyField.data_source('VPC Id', 'data.vpc_config.vpc_id'),
        ListDyField.data_source('Subnet IDs',
                                'data.vpc_config.subnet_ids',
                                options={'delimiter': '<br>'}),
        ListDyField.data_source('Security Group IDs',
                                'data.vpc_config.security_group_ids',
                                options={
                                    'delimiter': '<br>',
                                })
    ])
Beispiel #13
0
GROUP
"""
cst_group = CloudServiceTypeResource()
cst_group.name = 'Group'
cst_group.provider = 'aws'
cst_group.group = 'IAM'
cst_group.labels = ['Security']
cst_group.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/AWS-Identity-and-Access-Management_IAM.svg',
}

cst_group._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('User Count', 'data.user_count'),
        DateTimeDyField.data_source('Creation Time', 'data.create_date'),
        TextDyField.data_source('ARN',
                                'data.arn',
                                options={'is_optional': True}),
        TextDyField.data_source('Group ID',
                                'data.group_id',
                                options={'is_optional': True}),
        ListDyField.data_source('Attached Policies name',
                                'data.attached_permission',
                                options={
                                    'sub_key': 'policy_name',
                                    'delimiter': '<br>',
                                    'is_optional': True
                                }),
        ListDyField.data_source('Attached Policies Id',
                                'data.attached_permission',
from schematics.types import DictType, ListType, ModelType, PolyModelType, StringType
from spaceone.inventory.connector.aws_secrets_manager_connector.schema.data import Secret
from spaceone.inventory.libs.schema.resource import CloudServiceMeta, CloudServiceResource, CloudServiceResponse
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, DateTimeDyField, EnumDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, SimpleTableDynamicLayout

secrets = ItemDynamicLayout.set_fields(
    'Secrets',
    fields=[
        TextDyField.data_source('Name', 'data.name'),
        TextDyField.data_source('ARN', 'data.arn'),
        TextDyField.data_source('Description', 'data.description'),
        TextDyField.data_source('Encryption Key ID', 'data.kms_key_id'),
        TextDyField.data_source('Own Service', 'data.owning_service'),
        DateTimeDyField.data_source('Last Changed Date',
                                    'data.last_changed_date'),
        DateTimeDyField.data_source('Last Accessed Date',
                                    'data.last_accessed_date'),
    ])

rotation = ItemDynamicLayout.set_fields(
    'Rotation Configuration',
    fields=[
        EnumDyField.data_source('Rotation Status',
                                'data.rotation_enabled',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        TextDyField.data_source('Rotation Interval', 'data.rotation_rules'),
        TextDyField.data_source('AWS Lambda Function',
                             '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('AZ', 'data.availability_zone'),
     EnumDyField.data_source('Encryption',
                             'data.encrypted',
                             default_badge={
                                 'indigo.500': ['true'],
                                 'coral.600': ['false']
                             }),
     DateTimeDyField.data_source('Snapshot Creation Time',
                                 'data.snapshot_create_time'),
 ],
 search=[
     SearchField.set(name='Snapshot Identifier',
                     key='data.db_snapshot_identifier'),
     SearchField.set(name='ARN', key='data.db_snapshot_arn'),
     SearchField.set(name='DB Instance Identifier',
                     key='data.db_instance_identifier'),
     SearchField.set(name='Engine', key='data.engine'),
     SearchField.set(name='Allocated Storage',
                     key='data.allocated_storage',
                     data_type='integer'),
     SearchField.set(name='Status', key='data.status'),
     SearchField.set(name='Availability Zone',
                     key='data.availability_zone'),
     SearchField.set(name='VPC ID', key='data.vpc_id'),
Beispiel #16
0
    TextDyField.data_source('ARN', 'data.auto_scaling_group_arn'),
    TextDyField.data_source('Desired Capacity', 'data.desired_capacity'),
    TextDyField.data_source('Min Size', 'data.min_size'),
    TextDyField.data_source('Max Size', 'data.max_size'),
    TextDyField.data_source('Default CoolDown', 'data.default_cooldown'),
    ListDyField.data_source('Availability Zones', 'data.availability_zones',
                            default_badge={'type': 'outline', 'delimiter': '<br>'}),
    EnumDyField.data_source('Health Check Type', 'data.health_check_type', default_outline_badge=['EC2', 'ELB']),
    TextDyField.data_source('Health Check Grace Period', 'data.health_check_grace_period'),
    TextDyField.data_source('Service Linked Role ARN', 'data.service_linked_role_arn'),
    ListDyField.data_source('Target Group ARNs', 'data.target_group_arns',
                            default_badge={'delimiter': '<br>'}),
    ListDyField.data_source('Load Balancer ARNs', 'data.load_balancer_arns',
                            default_badge={'delimiter': '<br>'}),
    BadgeDyField.data_source('Termination Policies', 'data.termination_policies'),
    DateTimeDyField.data_source('Creation Time', 'data.created_time'),
])

# TAB - Launch Configuration
asg_meta_lc = ItemDynamicLayout.set_fields('Launch Configuration', fields=[
    TextDyField.data_source('Name', 'data.launch_configuration.launch_configuration_name'),
    TextDyField.data_source('ARN', 'data.launch_configuration.launch_configuration_arn'),
    TextDyField.data_source('AMI', 'data.launch_configuration.image_id'),
    TextDyField.data_source('Instance Type', 'data.launch_configuration.instance_type'),
    EnumDyField.data_source('Monitoring', 'data.launch_configuration.instance_monitoring.enabled', default_badge={
        'indigo.500': ['true'], 'coral.600': ['false']
    }),
    TextDyField.data_source('IAM Instance Profile', 'data.launch_configuration.iam_instance_profile'),
    TextDyField.data_source('Kernel ID', 'data.launch_configuration.kernel_id'),
    ListDyField.data_source('Security Groups', 'data.launch_configuration.security_groups',
                            default_badge={'delimiter': '<br>'}),
                             'data.kms_key_id',
                             options={'is_optional': True}),
     TextDyField.data_source('Deletion Protection',
                             'data.deletion_protection',
                             options={'is_optional': True}),
     TextDyField.data_source('Preferred Maintenance Window',
                             'data.preferred_maintenance_window',
                             options={'is_optional': True}),
     TextDyField.data_source('Preferred Backup Window',
                             'data.preferred_backup_window',
                             options={'is_optional': True}),
     TextDyField.data_source('Backup Retention Period',
                             'data.backup_retention_period',
                             options={'is_optional': True}),
     DateTimeDyField.data_source('Latest Restorable Time',
                                 'data.latest_restorable_time',
                                 options={'is_optional': True}),
     TextDyField.data_source('Hosted Zone ID',
                             'data.hosted_zone_id',
                             options={'is_optional': True}),
     ListDyField.data_source('Security Groups',
                             'data.vpc_security_groups',
                             options={
                                 'delimiter': '<br>',
                                 'sub_key': 'vpc_security_group_id',
                                 'is_optional': True
                             })
 ],
 search=[
     SearchField.set(name='Cluster Identifier',
                     key='data.db_cluster_identifier'),
Beispiel #18
0
 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', 'data.size'),
 TextDyField.data_source('Volume Type', 'data.volume_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}),
 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={
Beispiel #19
0
                'safe': ['ENABLED'],
                'disable': ['DISABLED']
            }),
        EnumDyField.data_source(
            'CloudWatch Contributor Insights',
            'data.contributor_insight.contributor_insights_status',
            default_state={
                'safe': ['ENABLED'],
                'warninig': ['ENABLING', 'DISABLING'],
                'alert': ['FAILED'],
                'disable': ['DISABLED']
            }),
        SizeField.data_source('Storage Size', 'data.table_size_bytes'),
        TextDyField.data_source('Item count', 'data.item_count'),
        TextDyField.data_source('Region', 'data.region_name'),
        DateTimeDyField.data_source('Creation date',
                                    'data.creation_date_time'),
    ])

capacity = ItemDynamicLayout.set_fields(
    'Capacity',
    fields=[
        EnumDyField.data_source('Read/write capacity mode',
                                'data.billing_mode_summary.billing_mode',
                                default_badge={
                                    'indigo.500': ['PROVISIONED'],
                                    'coral.600': ['PAY_PER_REQUEST']
                                }),
        DateTimeDyField.data_source(
            'Last change to on-demand mode',
            'data.billing_mode_summary.last_update_to_pay_per_request_date_time'
        ),
        TextDyField.data_source('Subnet Group',
                                'data.cache_subnet_group_name'),
        ListDyField.data_source('Security Group',
                                'data.security_groups',
                                options={
                                    'delimiter': '<br>',
                                    'sub_key': 'security_group_id'
                                }),
        TextDyField.data_source('Notification ARN',
                                'data.notification_configuration.topic_arn'),
        TextDyField.data_source('Maintenance Window',
                                'data.preferred_maintenance_window'),
        TextDyField.data_source('Backup Retension Period',
                                'data.snapshot_retention_limit'),
        TextDyField.data_source('Backup Window', 'data.snapshot_window'),
        DateTimeDyField.data_source('Creation Time',
                                    'data.cache_cluster_create_time')
    ])

memcached_node = TableDynamicLayout.set_fields(
    'Nodes',
    'data.nodes',
    fields=[
        TextDyField.data_source('Node Name', 'node_name'),
        EnumDyField.data_source('Status',
                                'status',
                                default_state={
                                    'safe': ['available'],
                                }),
        TextDyField.data_source('Port', 'port'),
        TextDyField.data_source('Endpoint', 'endpoint'),
        EnumDyField.data_source('Parameter Group Status',
Beispiel #21
0
from spaceone.inventory.connector.aws_iam_connector.schema.data import Group, User, Role, Policy, IdentityProvider
from spaceone.inventory.libs.schema.resource import CloudServiceResource, CloudServiceResponse, CloudServiceMeta
from spaceone.inventory.libs.schema.dynamic_field import TextDyField, DateTimeDyField, ListDyField, \
    BadgeDyField, EnumDyField
from spaceone.inventory.libs.schema.dynamic_layout import ItemDynamicLayout, TableDynamicLayout, \
    SimpleTableDynamicLayout, ListDynamicLayout

# 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={
'''
# Cluster
cluster_base = ItemDynamicLayout.set_fields('Cluster', fields=[
    TextDyField.data_source('ARN', 'data.cluster_arn'),
    TextDyField.data_source('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('Current Version', 'data.current_version'),
    TextDyField.data_source('Enhanced Monitoring', 'data.enhanced_monitoring'),
    TextDyField.data_source('Number of Broker Nodes', 'data.number_of_broker_nodes'),
    TextDyField.data_source('Zookeeper Connect String', 'data.zookeeper_connect_string'),
    DateTimeDyField.data_source('Created Time', 'data.creation_time'),
])

# Broker  Summary Info
cluster_broker_node_summary = \
    ItemDynamicLayout.set_fields('Broker Summary Info',
                                 root_path='data.broker_node_group_info',
                                 fields=[
                                    TextDyField.data_source('Broker AZ Distribution',
                                                            'broker_az_distribution'),
                                    ListDyField.data_source('Client Subnet',
                                                            'client_subnets',
                                                            options={
                                                                'delimiter': '<br>'
                                                            }),
                                    ListDyField.data_source('Security Group',
 'AMI',
 fields=[
     TextDyField.data_source('AMI ID', 'data.image_id'),
     TextDyField.data_source('AMI Name', 'data.name'),
     TextDyField.data_source('Owner', 'data.owner_id'),
     TextDyField.data_source('Source', 'data.image_location'),
     EnumDyField.data_source(
         'Status',
         'data.state',
         default_state={
             'safe': ['available'],
             'warning': ['pending', 'transient', 'deregistered', 'invalid'],
             'alert': ['error', 'failed']
         }),
     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',
Beispiel #24
0
    'data.images',
    fields=[
        ListDyField.data_source('Image Tag',
                                'image_tags_display',
                                options={'delimiter': ', '}),
        TextDyField.data_source('Image URI', 'image_uri'),
        SizeField.data_source('Image Size', 'image_size_in_bytes'),
        TextDyField.data_source('Digest', 'image_digest'),
        EnumDyField.data_source('Scan status',
                                'image_scan_status.status',
                                default_state={
                                    'safe': ['COMPLETE'],
                                    'warning': ['IN_PROGRESS'],
                                    'alert': ['FAILED']
                                }),
        DateTimeDyField.data_source('Pushed at', 'image_pushed_at'),
    ])

metadata = CloudServiceMeta.set_layouts(layouts=[base, images])


class ECRResource(CloudServiceResource):
    cloud_service_group = StringType(default='ECR')


class ECRRepositoryResource(ECRResource):
    cloud_service_type = StringType(default='Repository')
    data = ModelType(Repository)
    _metadata = ModelType(CloudServiceMeta,
                          default=metadata,
                          serialized_name='metadata')
                         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}),
 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={
Beispiel #26
0
                                }),
        ListDyField.data_source('Private IP',
                                'data.nat_gateway_addresses',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'private_ip',
                                }),
        ListDyField.data_source('Network Interface',
                                'data.nat_gateway_addresses',
                                default_badge={
                                    'type': 'outline',
                                    'sub_key': 'network_interface_id',
                                }),
        TextDyField.data_source('VPC ID', 'data.vpc_id'),
        TextDyField.data_source('Subnet', 'data.subnet_id'),
        DateTimeDyField.data_source('Created', 'data.create_time'),
    ])

natgw_tags = SimpleTableDynamicLayout.set_tags()
natgw_metadata = CloudServiceMeta.set_layouts(layouts=[natgw, natgw_tags])

# PEERING CONNECTION
peercon = ItemDynamicLayout.set_fields(
    'Peering Connection',
    fields=[
        TextDyField.data_source('Peering Connection ID',
                                'data.vpc_peering_connection_id'),
        EnumDyField.data_source('Status',
                                'data.status.code',
                                default_state={
                                    'safe': ['active'],
                         'data.endpoint.Port',
                         options={'is_optional': True}),
 TextDyField.data_source('VPC ID',
                         'data.vpc_id',
                         options={'is_optional': True}),
 TextDyField.data_source('Availability Zone',
                         'data.availability_zone',
                         options={'is_optional': True}),
 TextDyField.data_source('Cluster Revision Number',
                         'data.cluster_revision_number',
                         options={'is_optional': True}),
 TextDyField.data_source('Preferred Maintenance Window',
                         'data.preferred_maintenance_window',
                         options={'is_optional': True}),
 DateTimeDyField.data_source('Next maintenance window start time',
                             'data.next_maintenance_window_start_time',
                             options={'is_optional': True}),
 TextDyField.data_source('DB Name',
                         'data.db_name',
                         options={'is_optional': True}),
 TextDyField.data_source('Allow Version Upgrade',
                         'data.allow_version_upgrade',
                         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('Publicly Accessible',
                         'data.publicly_accessible',
Beispiel #28
0
cst_ecr_repo.name = 'Repository'
cst_ecr_repo.provider = 'aws'
cst_ecr_repo.group = 'ECR'
cst_ecr_repo.labels = ['Container', 'Compute']
cst_ecr_repo.is_primary = True
cst_ecr_repo.service_code = 'AmazonECR'
cst_ecr_repo.tags = {
    'spaceone:icon':
    'https://spaceone-custom-assets.s3.ap-northeast-2.amazonaws.com/console-assets/icons/cloud-services/aws/Amazon-EC2-Container-Registry.svg',
}

cst_ecr_repo._metadata = CloudServiceTypeMeta.set_meta(
    fields=[
        TextDyField.data_source('Repository name', 'data.repository_name'),
        TextDyField.data_source('URI', 'data.repository_uri'),
        DateTimeDyField.data_source('Created', 'data.created_at'),
        TextDyField.data_source('Registry ARN ',
                                'data.repository_arn',
                                options={'is_optional': True}),
        TextDyField.data_source('Image Tag Mutability ',
                                'data.image_tag_mutability',
                                options={'is_optional': True}),
        TextDyField.data_source(
            'Image Scanning on Push ',
            'data.image_scanning_configuration.scan_on_push',
            options={'is_optional': True}),
        TextDyField.data_source('AWS Account ID',
                                'data.account_id',
                                options={'is_optional': True}),
    ],
    search=[
# 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(
    "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"),

class LightsailResource(CloudServiceResource):
    cloud_service_group = StringType(default='Lightsail')


'''
Instance
'''
instance = ItemDynamicLayout.set_fields(
    'Instance',
    fields=[
        TextDyField.data_source('ARN', 'data.arn'),
        TextDyField.data_source('Name', 'data.name'),
        TextDyField.data_source('Support Code', 'data.support_code'),
        DateTimeDyField.data_source('Created At', 'data.created_at'),
        TextDyField.data_source('Availability Zone',
                                'data.location.availability_zone'),
        TextDyField.data_source('Region', 'data.location.region_name'),
        TextDyField.data_source('Blue Print ID', 'data.blueprint_id'),
        TextDyField.data_source('Blue Print Name', 'data.blueprint_name'),
        TextDyField.data_source('Bundle ID', 'data.bundle_id'),
        EnumDyField.data_source('Static IP',
                                'data.is_static_ip',
                                default_badge={
                                    'indigo.500': ['true'],
                                    'coral.600': ['false']
                                }),
        TextDyField.data_source('Private IP', 'data.private_ip_address'),
        TextDyField.data_source('Public IP', 'data.public_ip_address'),
        ListDyField.data_source('IPv6',