fix: aws_rds_cluster deep mode

main
sundowndev 2021-10-20 10:34:33 +02:00
parent 7c653d0500
commit 6718cfb3e4
6 changed files with 134 additions and 56 deletions

View File

@ -32,6 +32,12 @@ func (e *RDSClusterEnumerator) Enumerate() ([]*resource.Resource, error) {
results := make([]*resource.Resource, len(clusters)) results := make([]*resource.Resource, len(clusters))
for _, cluster := range clusters { for _, cluster := range clusters {
var databaseName string
if v := cluster.DatabaseName; v != nil {
databaseName = *cluster.DatabaseName
}
results = append( results = append(
results, results,
e.factory.CreateAbstractResource( e.factory.CreateAbstractResource(
@ -39,6 +45,7 @@ func (e *RDSClusterEnumerator) Enumerate() ([]*resource.Resource, error) {
*cluster.DBClusterIdentifier, *cluster.DBClusterIdentifier,
map[string]interface{}{ map[string]interface{}{
"cluster_identifier": *cluster.DBClusterIdentifier, "cluster_identifier": *cluster.DBClusterIdentifier,
"database_name": databaseName,
}, },
), ),
) )

View File

@ -249,7 +249,13 @@ func TestRDSCluster(t *testing.T) {
dirName: "aws_rds_clusters_results", dirName: "aws_rds_clusters_results",
mocks: func(repository *repository.MockRDSRepository, alerter *mocks.AlerterInterface) { mocks: func(repository *repository.MockRDSRepository, alerter *mocks.AlerterInterface) {
repository.On("ListAllDBClusters").Return([]*rds.DBCluster{ repository.On("ListAllDBClusters").Return([]*rds.DBCluster{
{DBClusterIdentifier: awssdk.String("aurora-cluster-demo")}, {
DBClusterIdentifier: awssdk.String("aurora-cluster-demo"),
DatabaseName: awssdk.String("mydb"),
},
{
DBClusterIdentifier: awssdk.String("aurora-cluster-demo-2"),
},
}, nil) }, nil)
}, },
}, },

View File

@ -0,0 +1,5 @@
{
"Typ": "WyJvYmplY3QiLHsiYWxsb3dfbWFqb3JfdmVyc2lvbl91cGdyYWRlIjoiYm9vbCIsImFwcGx5X2ltbWVkaWF0ZWx5IjoiYm9vbCIsImFybiI6InN0cmluZyIsImF2YWlsYWJpbGl0eV96b25lcyI6WyJzZXQiLCJzdHJpbmciXSwiYmFja3RyYWNrX3dpbmRvdyI6Im51bWJlciIsImJhY2t1cF9yZXRlbnRpb25fcGVyaW9kIjoibnVtYmVyIiwiY2x1c3Rlcl9pZGVudGlmaWVyIjoic3RyaW5nIiwiY2x1c3Rlcl9pZGVudGlmaWVyX3ByZWZpeCI6InN0cmluZyIsImNsdXN0ZXJfbWVtYmVycyI6WyJzZXQiLCJzdHJpbmciXSwiY2x1c3Rlcl9yZXNvdXJjZV9pZCI6InN0cmluZyIsImNvcHlfdGFnc190b19zbmFwc2hvdCI6ImJvb2wiLCJkYXRhYmFzZV9uYW1lIjoic3RyaW5nIiwiZGJfY2x1c3Rlcl9wYXJhbWV0ZXJfZ3JvdXBfbmFtZSI6InN0cmluZyIsImRiX3N1Ym5ldF9ncm91cF9uYW1lIjoic3RyaW5nIiwiZGVsZXRpb25fcHJvdGVjdGlvbiI6ImJvb2wiLCJlbmFibGVfaHR0cF9lbmRwb2ludCI6ImJvb2wiLCJlbmFibGVkX2Nsb3Vkd2F0Y2hfbG9nc19leHBvcnRzIjpbInNldCIsInN0cmluZyJdLCJlbmRwb2ludCI6InN0cmluZyIsImVuZ2luZSI6InN0cmluZyIsImVuZ2luZV9tb2RlIjoic3RyaW5nIiwiZW5naW5lX3ZlcnNpb24iOiJzdHJpbmciLCJmaW5hbF9zbmFwc2hvdF9pZGVudGlmaWVyIjoic3RyaW5nIiwiZ2xvYmFsX2NsdXN0ZXJfaWRlbnRpZmllciI6InN0cmluZyIsImhvc3RlZF96b25lX2lkIjoic3RyaW5nIiwiaWFtX2RhdGFiYXNlX2F1dGhlbnRpY2F0aW9uX2VuYWJsZWQiOiJib29sIiwiaWFtX3JvbGVzIjpbInNldCIsInN0cmluZyJdLCJpZCI6InN0cmluZyIsImttc19rZXlfaWQiOiJzdHJpbmciLCJtYXN0ZXJfcGFzc3dvcmQiOiJzdHJpbmciLCJtYXN0ZXJfdXNlcm5hbWUiOiJzdHJpbmciLCJwb3J0IjoibnVtYmVyIiwicHJlZmVycmVkX2JhY2t1cF93aW5kb3ciOiJzdHJpbmciLCJwcmVmZXJyZWRfbWFpbnRlbmFuY2Vfd2luZG93Ijoic3RyaW5nIiwicmVhZGVyX2VuZHBvaW50Ijoic3RyaW5nIiwicmVwbGljYXRpb25fc291cmNlX2lkZW50aWZpZXIiOiJzdHJpbmciLCJyZXN0b3JlX3RvX3BvaW50X2luX3RpbWUiOlsibGlzdCIsWyJvYmplY3QiLHsicmVzdG9yZV90b190aW1lIjoic3RyaW5nIiwicmVzdG9yZV90eXBlIjoic3RyaW5nIiwic291cmNlX2NsdXN0ZXJfaWRlbnRpZmllciI6InN0cmluZyIsInVzZV9sYXRlc3RfcmVzdG9yYWJsZV90aW1lIjoiYm9vbCJ9XV0sInMzX2ltcG9ydCI6WyJsaXN0IixbIm9iamVjdCIseyJidWNrZXRfbmFtZSI6InN0cmluZyIsImJ1Y2tldF9wcmVmaXgiOiJzdHJpbmciLCJpbmdlc3Rpb25fcm9sZSI6InN0cmluZyIsInNvdXJjZV9lbmdpbmUiOiJzdHJpbmciLCJzb3VyY2VfZW5naW5lX3ZlcnNpb24iOiJzdHJpbmcifV1dLCJzY2FsaW5nX2NvbmZpZ3VyYXRpb24iOlsibGlzdCIsWyJvYmplY3QiLHsiYXV0b19wYXVzZSI6ImJvb2wiLCJtYXhfY2FwYWNpdHkiOiJudW1iZXIiLCJtaW5fY2FwYWNpdHkiOiJudW1iZXIiLCJzZWNvbmRzX3VudGlsX2F1dG9fcGF1c2UiOiJudW1iZXIiLCJ0aW1lb3V0X2FjdGlvbiI6InN0cmluZyJ9XV0sInNraXBfZmluYWxfc25hcHNob3QiOiJib29sIiwic25hcHNob3RfaWRlbnRpZmllciI6InN0cmluZyIsInNvdXJjZV9yZWdpb24iOiJzdHJpbmciLCJzdG9yYWdlX2VuY3J5cHRlZCI6ImJvb2wiLCJ0YWdzIjpbIm1hcCIsInN0cmluZyJdLCJ0aW1lb3V0cyI6WyJvYmplY3QiLHsiY3JlYXRlIjoic3RyaW5nIiwiZGVsZXRlIjoic3RyaW5nIiwidXBkYXRlIjoic3RyaW5nIn1dLCJ2cGNfc2VjdXJpdHlfZ3JvdXBfaWRzIjpbInNldCIsInN0cmluZyJdfV0=",
"Val": "eyJhbGxvd19tYWpvcl92ZXJzaW9uX3VwZ3JhZGUiOm51bGwsImFwcGx5X2ltbWVkaWF0ZWx5IjpudWxsLCJhcm4iOiJhcm46YXdzOnJkczp1cy1lYXN0LTE6NTMzOTQ4MTI0ODc5OmNsdXN0ZXI6YXVyb3JhLWNsdXN0ZXItZGVtbyIsImF2YWlsYWJpbGl0eV96b25lcyI6WyJ1cy1lYXN0LTFhIiwidXMtZWFzdC0xYiIsInVzLWVhc3QtMWQiXSwiYmFja3RyYWNrX3dpbmRvdyI6MCwiYmFja3VwX3JldGVudGlvbl9wZXJpb2QiOjUsImNsdXN0ZXJfaWRlbnRpZmllciI6ImF1cm9yYS1jbHVzdGVyLWRlbW8tMiIsImNsdXN0ZXJfaWRlbnRpZmllcl9wcmVmaXgiOm51bGwsImNsdXN0ZXJfbWVtYmVycyI6WyJhdXJvcmEtY2x1c3Rlci1kZW1vLTAiXSwiY2x1c3Rlcl9yZXNvdXJjZV9pZCI6ImNsdXN0ZXItVElTWURTU1g0SjVSNlpHVVRWNkxMSlc3M0UiLCJjb3B5X3RhZ3NfdG9fc25hcHNob3QiOmZhbHNlLCJkYXRhYmFzZV9uYW1lIjoiIiwiZGJfY2x1c3Rlcl9wYXJhbWV0ZXJfZ3JvdXBfbmFtZSI6ImRlZmF1bHQuYXVyb3JhLXBvc3RncmVzcWwxMSIsImRiX3N1Ym5ldF9ncm91cF9uYW1lIjoiZGVmYXVsdCIsImRlbGV0aW9uX3Byb3RlY3Rpb24iOmZhbHNlLCJlbmFibGVfaHR0cF9lbmRwb2ludCI6ZmFsc2UsImVuYWJsZWRfY2xvdWR3YXRjaF9sb2dzX2V4cG9ydHMiOltdLCJlbmRwb2ludCI6ImF1cm9yYS1jbHVzdGVyLWRlbW8uY2x1c3Rlci1jZDUzOXI2cXVpdXgudXMtZWFzdC0xLnJkcy5hbWF6b25hd3MuY29tIiwiZW5naW5lIjoiYXVyb3JhLXBvc3RncmVzcWwiLCJlbmdpbmVfbW9kZSI6InByb3Zpc2lvbmVkIiwiZW5naW5lX3ZlcnNpb24iOiIxMS45IiwiZmluYWxfc25hcHNob3RfaWRlbnRpZmllciI6bnVsbCwiZ2xvYmFsX2NsdXN0ZXJfaWRlbnRpZmllciI6IiIsImhvc3RlZF96b25lX2lkIjoiWjJSMklUVUdQTTYxQU0iLCJpYW1fZGF0YWJhc2VfYXV0aGVudGljYXRpb25fZW5hYmxlZCI6ZmFsc2UsImlhbV9yb2xlcyI6W10sImlkIjoiYXVyb3JhLWNsdXN0ZXItZGVtbyIsImttc19rZXlfaWQiOiIiLCJtYXN0ZXJfcGFzc3dvcmQiOm51bGwsIm1hc3Rlcl91c2VybmFtZSI6ImZvbyIsInBvcnQiOjU0MzIsInByZWZlcnJlZF9iYWNrdXBfd2luZG93IjoiMDc6MDAtMDk6MDAiLCJwcmVmZXJyZWRfbWFpbnRlbmFuY2Vfd2luZG93IjoiZnJpOjAzOjAzLWZyaTowMzozMyIsInJlYWRlcl9lbmRwb2ludCI6ImF1cm9yYS1jbHVzdGVyLWRlbW8uY2x1c3Rlci1yby1jZDUzOXI2cXVpdXgudXMtZWFzdC0xLnJkcy5hbWF6b25hd3MuY29tIiwicmVwbGljYXRpb25fc291cmNlX2lkZW50aWZpZXIiOiIiLCJyZXN0b3JlX3RvX3BvaW50X2luX3RpbWUiOm51bGwsInMzX2ltcG9ydCI6bnVsbCwic2NhbGluZ19jb25maWd1cmF0aW9uIjpbXSwic2tpcF9maW5hbF9zbmFwc2hvdCI6bnVsbCwic25hcHNob3RfaWRlbnRpZmllciI6bnVsbCwic291cmNlX3JlZ2lvbiI6bnVsbCwic3RvcmFnZV9lbmNyeXB0ZWQiOmZhbHNlLCJ0YWdzIjp7fSwidGltZW91dHMiOnsiY3JlYXRlIjpudWxsLCJkZWxldGUiOm51bGwsInVwZGF0ZSI6bnVsbH0sInZwY19zZWN1cml0eV9ncm91cF9pZHMiOlsic2ctNDllMzg2NDYiXX0=",
"Err": null
}

View File

@ -1,57 +1,112 @@
[ [
{ {
"allow_major_version_upgrade": null, "allow_major_version_upgrade": null,
"apply_immediately": null, "apply_immediately": null,
"arn": "arn:aws:rds:us-east-1:533948124879:cluster:aurora-cluster-demo", "arn": "arn:aws:rds:us-east-1:533948124879:cluster:aurora-cluster-demo",
"availability_zones": [ "availability_zones": [
"us-east-1a", "us-east-1a",
"us-east-1b", "us-east-1b",
"us-east-1d" "us-east-1d"
], ],
"backtrack_window": 0, "backtrack_window": 0,
"backup_retention_period": 5, "backup_retention_period": 5,
"cluster_identifier": "aurora-cluster-demo", "cluster_identifier": "aurora-cluster-demo",
"cluster_identifier_prefix": null, "cluster_identifier_prefix": null,
"cluster_members": [ "cluster_members": [
"aurora-cluster-demo-0" "aurora-cluster-demo-0"
], ],
"cluster_resource_id": "cluster-TISYDSSX4J5R6ZGUTV6LLJW73E", "cluster_resource_id": "cluster-TISYDSSX4J5R6ZGUTV6LLJW73E",
"copy_tags_to_snapshot": false, "copy_tags_to_snapshot": false,
"database_name": "mydb", "database_name": "mydb",
"db_cluster_parameter_group_name": "default.aurora-postgresql11", "db_cluster_parameter_group_name": "default.aurora-postgresql11",
"db_subnet_group_name": "default", "db_subnet_group_name": "default",
"deletion_protection": false, "deletion_protection": false,
"enable_http_endpoint": false, "enable_http_endpoint": false,
"enabled_cloudwatch_logs_exports": null, "enabled_cloudwatch_logs_exports": null,
"endpoint": "aurora-cluster-demo.cluster-cd539r6quiux.us-east-1.rds.amazonaws.com", "endpoint": "aurora-cluster-demo.cluster-cd539r6quiux.us-east-1.rds.amazonaws.com",
"engine": "aurora-postgresql", "engine": "aurora-postgresql",
"engine_mode": "provisioned", "engine_mode": "provisioned",
"engine_version": "11.9", "engine_version": "11.9",
"final_snapshot_identifier": null, "final_snapshot_identifier": null,
"global_cluster_identifier": "", "global_cluster_identifier": "",
"hosted_zone_id": "Z2R2ITUGPM61AM", "hosted_zone_id": "Z2R2ITUGPM61AM",
"iam_database_authentication_enabled": false, "iam_database_authentication_enabled": false,
"iam_roles": null, "iam_roles": null,
"id": "aurora-cluster-demo", "id": "aurora-cluster-demo",
"kms_key_id": "", "kms_key_id": "",
"master_password": null, "master_password": null,
"master_username": "foo", "master_username": "foo",
"port": 5432, "port": 5432,
"preferred_backup_window": "07:00-09:00", "preferred_backup_window": "07:00-09:00",
"preferred_maintenance_window": "fri:03:03-fri:03:33", "preferred_maintenance_window": "fri:03:03-fri:03:33",
"reader_endpoint": "aurora-cluster-demo.cluster-ro-cd539r6quiux.us-east-1.rds.amazonaws.com", "reader_endpoint": "aurora-cluster-demo.cluster-ro-cd539r6quiux.us-east-1.rds.amazonaws.com",
"replication_source_identifier": "", "replication_source_identifier": "",
"restore_to_point_in_time": null, "restore_to_point_in_time": null,
"s3_import": null, "s3_import": null,
"scaling_configuration": null, "scaling_configuration": null,
"skip_final_snapshot": false, "skip_final_snapshot": false,
"snapshot_identifier": null, "snapshot_identifier": null,
"source_region": null, "source_region": null,
"storage_encrypted": false, "storage_encrypted": false,
"tags": null, "tags": null,
"timeouts": null, "timeouts": null,
"vpc_security_group_ids": [ "vpc_security_group_ids": [
"sg-49e38646" "sg-49e38646"
] ]
} },
{
"allow_major_version_upgrade": null,
"apply_immediately": null,
"arn": "arn:aws:rds:us-east-1:533948124879:cluster:aurora-cluster-demo",
"availability_zones": [
"us-east-1a",
"us-east-1b",
"us-east-1d"
],
"backtrack_window": 0,
"backup_retention_period": 5,
"cluster_identifier": "aurora-cluster-demo-2",
"cluster_identifier_prefix": null,
"cluster_members": [
"aurora-cluster-demo-0"
],
"cluster_resource_id": "cluster-TISYDSSX4J5R6ZGUTV6LLJW73E",
"copy_tags_to_snapshot": false,
"database_name": "",
"db_cluster_parameter_group_name": "default.aurora-postgresql11",
"db_subnet_group_name": "default",
"deletion_protection": false,
"enable_http_endpoint": false,
"enabled_cloudwatch_logs_exports": null,
"endpoint": "aurora-cluster-demo.cluster-cd539r6quiux.us-east-1.rds.amazonaws.com",
"engine": "aurora-postgresql",
"engine_mode": "provisioned",
"engine_version": "11.9",
"final_snapshot_identifier": null,
"global_cluster_identifier": "",
"hosted_zone_id": "Z2R2ITUGPM61AM",
"iam_database_authentication_enabled": false,
"iam_roles": null,
"id": "aurora-cluster-demo",
"kms_key_id": "",
"master_password": null,
"master_username": "foo",
"port": 5432,
"preferred_backup_window": "07:00-09:00",
"preferred_maintenance_window": "fri:03:03-fri:03:33",
"reader_endpoint": "aurora-cluster-demo.cluster-ro-cd539r6quiux.us-east-1.rds.amazonaws.com",
"replication_source_identifier": "",
"restore_to_point_in_time": null,
"s3_import": null,
"scaling_configuration": null,
"skip_final_snapshot": false,
"snapshot_identifier": null,
"source_region": null,
"storage_encrypted": false,
"tags": null,
"timeouts": null,
"vpc_security_group_ids": [
"sg-49e38646"
]
}
] ]

View File

@ -10,6 +10,7 @@ func initAwsRDSClusterMetaData(resourceSchemaRepository resource.SchemaRepositor
resourceSchemaRepository.SetResolveReadAttributesFunc(AwsRDSClusterResourceType, func(res *resource.Resource) map[string]string { resourceSchemaRepository.SetResolveReadAttributesFunc(AwsRDSClusterResourceType, func(res *resource.Resource) map[string]string {
return map[string]string{ return map[string]string{
"cluster_identifier": *res.Attributes().GetString("cluster_identifier"), "cluster_identifier": *res.Attributes().GetString("cluster_identifier"),
"database_name": *res.Attributes().GetString("database_name"),
} }
}) })
resourceSchemaRepository.SetNormalizeFunc(AwsRDSClusterResourceType, func(res *resource.Resource) { resourceSchemaRepository.SetNormalizeFunc(AwsRDSClusterResourceType, func(res *resource.Resource) {
@ -18,6 +19,10 @@ func initAwsRDSClusterMetaData(resourceSchemaRepository resource.SchemaRepositor
val.SafeDelete([]string{"master_password"}) val.SafeDelete([]string{"master_password"})
val.SafeDelete([]string{"cluster_members"}) val.SafeDelete([]string{"cluster_members"})
val.SafeDelete([]string{"skip_final_snapshot"}) val.SafeDelete([]string{"skip_final_snapshot"})
val.SafeDelete([]string{"allow_major_version_upgrade"})
val.SafeDelete([]string{"apply_immediately"})
val.SafeDelete([]string{"final_snapshot_identifier"})
val.SafeDelete([]string{"source_region"})
}) })
resourceSchemaRepository.SetFlags(AwsRDSClusterResourceType, resource.FlagDeepMode) resourceSchemaRepository.SetFlags(AwsRDSClusterResourceType, resource.FlagDeepMode)
} }