awspec 1.27.0 → 1.28.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/_resource_types/cloudformation_stack.md +8 -0
- data/doc/_resource_types/eip.md +1 -1
- data/doc/_resource_types/rds_db_cluster.md +47 -0
- data/doc/_resource_types/rds_db_subnet_group.md +25 -0
- data/doc/_resource_types/rds_global_cluster.md +37 -0
- data/doc/_resource_types/vpc_endpoints.md +11 -7
- data/doc/resource_types.md +168 -19
- data/lib/awspec/command/generate.rb +12 -0
- data/lib/awspec/generator/doc/type/rds_db_cluster.rb +21 -0
- data/lib/awspec/generator/doc/type/rds_db_subnet_group.rb +19 -0
- data/lib/awspec/generator/doc/type/rds_global_cluster.rb +21 -0
- data/lib/awspec/generator/doc/type/vpc_endpoints.rb +5 -2
- data/lib/awspec/generator/spec/rds_db_cluster.rb +46 -0
- data/lib/awspec/generator/spec/rds_global_cluster.rb +40 -0
- data/lib/awspec/generator/template.rb +1 -1
- data/lib/awspec/generator.rb +2 -0
- data/lib/awspec/helper/finder/ec2.rb +0 -14
- data/lib/awspec/helper/finder/eip.rb +26 -0
- data/lib/awspec/helper/finder/rds.rb +21 -0
- data/lib/awspec/helper/finder.rb +2 -0
- data/lib/awspec/helper/type.rb +3 -2
- data/lib/awspec/matcher/belong_to_subnet.rb +21 -0
- data/lib/awspec/matcher/have_cluster_member.rb +11 -0
- data/lib/awspec/matcher.rb +1 -0
- data/lib/awspec/stub/eip.rb +7 -1
- data/lib/awspec/stub/rds_db_cluster.rb +119 -0
- data/lib/awspec/stub/rds_db_subnet_group.rb +81 -0
- data/lib/awspec/stub/rds_global_cluster.rb +39 -0
- data/lib/awspec/type/cloudformation_stack.rb +3 -0
- data/lib/awspec/type/eip.rb +1 -1
- data/lib/awspec/type/rds_db_cluster.rb +75 -0
- data/lib/awspec/type/rds_db_subnet_group.rb +19 -0
- data/lib/awspec/type/rds_global_cluster.rb +36 -0
- data/lib/awspec/version.rb +1 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c039a40af7b57d9dff480f291fc73b2320c61a34e155ccf962b5bd77b92ade9
|
4
|
+
data.tar.gz: cc1b06bb52308839f57b0216497d762ba29e75be9586b781e488cfbb92b905d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c23f6c2fc84093a7fed2a96117036227a7d6006d225d094ad91487fceec2e6cf224fd0c3ae19a5ea695b1eaedbe070c829bf2d9275c390ab6d1a257e17bd399
|
7
|
+
data.tar.gz: f8e0ef447b854ed2ae4c935aa0d2c463a2145c65ced5533006da2dc4f39806b1eb81d234311ebf1d619acc8747811f47299a4703895795d5d287759878c9665b
|
@@ -6,3 +6,11 @@ describe cloudformation_stack('my-cloudformation-stack') do
|
|
6
6
|
its(:stack_status) { should eq 'UPDATE_COMPLETE' }
|
7
7
|
end
|
8
8
|
```
|
9
|
+
|
10
|
+
### have_tag
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
describe cloudformation_stack('my-cloudformation-stack') do
|
14
|
+
it { should have_tag('env').value('dev') }
|
15
|
+
end
|
16
|
+
```
|
data/doc/_resource_types/eip.md
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
### first
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
5
|
+
its(:db_cluster_parameter_group) { should eq 'default.aurora-mysql5.7' }
|
6
|
+
its(:engine) { should eq 'aurora-mysql' }
|
7
|
+
its(:engine_version) { should eq '5.7.mysql_aurora.2.10.2' }
|
8
|
+
its(:database_name) { should eq 'example_db' }
|
9
|
+
its(:storage_encrypted) { should eq false }
|
10
|
+
its(:deletion_protection) { should eq false }
|
11
|
+
end
|
12
|
+
```
|
13
|
+
|
14
|
+
### exist
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
18
|
+
it { should exist }
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
### be_available, be_creating, be_deleting
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
26
|
+
it { should be_available }
|
27
|
+
end
|
28
|
+
```
|
29
|
+
|
30
|
+
### have_cluster_member
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
34
|
+
it { should have_cluster_member('my-rds-db-cluster-instance-1') }
|
35
|
+
it { should have_cluster_member('my-rds-db-cluster-instance-1').is_writer(true) }
|
36
|
+
it { should have_cluster_member('my-rds-db-cluster-instance-2').is_writer(false) }
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
### have_security_group
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
44
|
+
it { should have_security_group('sg-5a6b7cd8') }
|
45
|
+
it { should have_security_group('my-db-sg') }
|
46
|
+
end
|
47
|
+
```
|
@@ -0,0 +1,25 @@
|
|
1
|
+
### exist
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
describe rds_db_subnet_group('my-rds-db-subnet-group') do
|
5
|
+
it { should exist }
|
6
|
+
end
|
7
|
+
```
|
8
|
+
|
9
|
+
### belong_to_subnet
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
describe rds_db_subnet_group('my-rds-db-subnet-group') do
|
13
|
+
it { should belong_to_subnet('subnet-1234a567') }
|
14
|
+
it { should belong_to_subnet('db-subnet-a') }
|
15
|
+
end
|
16
|
+
```
|
17
|
+
|
18
|
+
### belong_to_vpc
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
describe rds_db_subnet_group('my-rds-db-subnet-group') do
|
22
|
+
it { should belong_to_vpc('vpc-ab123cde') }
|
23
|
+
it { should belong_to_vpc('my-vpc') }
|
24
|
+
end
|
25
|
+
```
|
@@ -0,0 +1,37 @@
|
|
1
|
+
### first
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
5
|
+
its(:engine) { should eq 'aurora-mysql' }
|
6
|
+
its(:engine_version) { should eq '5.7.mysql_aurora.2.10.2' }
|
7
|
+
its(:database_name) { should eq 'example_db' }
|
8
|
+
its(:storage_encrypted) { should eq false }
|
9
|
+
its(:deletion_protection) { should eq false }
|
10
|
+
end
|
11
|
+
```
|
12
|
+
|
13
|
+
### exist
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
17
|
+
it { should exist }
|
18
|
+
end
|
19
|
+
```
|
20
|
+
|
21
|
+
### be_available, be_creating, be_deleting
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
25
|
+
it { should be_available }
|
26
|
+
end
|
27
|
+
```
|
28
|
+
|
29
|
+
### have_cluster_member
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
33
|
+
it { should have_cluster_member('arn:aws:rds:ap-northeast-1:123456789012:cluster:my-primary-cluster') }
|
34
|
+
it { should have_cluster_member('arn:aws:rds:ap-northeast-1:123456789012:cluster:my-primary-cluster').is_writer(true) }
|
35
|
+
it { should have_cluster_member('arn:aws:rds:ap-northeast-3:123456789012:cluster:my-secondary-cluster').is_writer(false) }
|
36
|
+
end
|
37
|
+
```
|
@@ -1,11 +1,6 @@
|
|
1
|
-
###
|
1
|
+
### first
|
2
2
|
|
3
3
|
```ruby
|
4
|
-
describe vpc_endpoints('my-vpc-endpoint') do
|
5
|
-
it { should exist }
|
6
|
-
end
|
7
|
-
```
|
8
|
-
|
9
4
|
describe vpc_endpoints('vpce-05907f23265b25f20'), region: $tfvars["region"]["value"] do
|
10
5
|
it { should exist }
|
11
6
|
it { should be_available }
|
@@ -15,11 +10,20 @@ describe vpc_endpoints('vpce-05907f23265b25f20'), region: $tfvars["region"]["val
|
|
15
10
|
its(:vpc_endpoint_type) { should eq 'Interface' }
|
16
11
|
its(:service_name) { should eq 'com.amazonaws.eu-west-1.codebuild' }
|
17
12
|
end
|
13
|
+
```
|
14
|
+
|
15
|
+
### exist
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
describe vpc_endpoints('my-vpc-endpoint') do
|
19
|
+
it { should exist }
|
20
|
+
end
|
21
|
+
```
|
18
22
|
|
19
23
|
### be_pendingacceptance, be_pending, be_available, be_deleting, be_deleted, be_rejected, be_failed, be_expired
|
20
24
|
|
21
25
|
```ruby
|
22
|
-
describe
|
26
|
+
describe vpc_endpoints('my-vpc-endpoint') do
|
23
27
|
it { should be_available }
|
24
28
|
end
|
25
29
|
```
|
data/doc/resource_types.md
CHANGED
@@ -61,8 +61,11 @@
|
|
61
61
|
| [nlb_listener](#nlb_listener)
|
62
62
|
| [nlb_target_group](#nlb_target_group)
|
63
63
|
| [rds](#rds)
|
64
|
+
| [rds_db_cluster](#rds_db_cluster)
|
64
65
|
| [rds_db_cluster_parameter_group](#rds_db_cluster_parameter_group)
|
65
66
|
| [rds_db_parameter_group](#rds_db_parameter_group)
|
67
|
+
| [rds_db_subnet_group](#rds_db_subnet_group)
|
68
|
+
| [rds_global_cluster](#rds_global_cluster)
|
66
69
|
| [rds_proxy](#rds_proxy)
|
67
70
|
| [redshift](#redshift)
|
68
71
|
| [redshift_cluster_parameter_group](#redshift_cluster_parameter_group)
|
@@ -454,6 +457,15 @@ describe cloudformation_stack('my-cloudformation-stack') do
|
|
454
457
|
end
|
455
458
|
```
|
456
459
|
|
460
|
+
|
461
|
+
### have_tag
|
462
|
+
|
463
|
+
```ruby
|
464
|
+
describe cloudformation_stack('my-cloudformation-stack') do
|
465
|
+
it { should have_tag('env').value('dev') }
|
466
|
+
end
|
467
|
+
```
|
468
|
+
|
457
469
|
### its(:stack_id), its(:stack_name), its(:change_set_id), its(:description), its(:parameters), its(:creation_time), its(:deletion_time), its(:last_updated_time), its(:rollback_configuration), its(:stack_status), its(:stack_status_reason), its(:disable_rollback), its(:notification_arns), its(:timeout_in_minutes), its(:capabilities), its(:role_arn), its(:enable_termination_protection), its(:parent_id), its(:root_id), its(:drift_information)
|
458
470
|
## <a name="cloudfront_distribution">cloudfront_distribution</a>
|
459
471
|
|
@@ -1324,7 +1336,7 @@ Elastic IP resource type.
|
|
1324
1336
|
### exist
|
1325
1337
|
|
1326
1338
|
```ruby
|
1327
|
-
describe eip('
|
1339
|
+
describe eip('my-eip') do
|
1328
1340
|
it { should exist }
|
1329
1341
|
end
|
1330
1342
|
```
|
@@ -2856,7 +2868,7 @@ end
|
|
2856
2868
|
```
|
2857
2869
|
|
2858
2870
|
|
2859
|
-
### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:automatic_restart_time), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:db_security_groups), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:replica_mode), its(:license_model), its(:iops), its(:character_set_name), its(:nchar_character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone), its(:iam_database_authentication_enabled), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:enabled_cloudwatch_logs_exports), its(:processor_features), its(:deletion_protection), its(:associated_roles), its(:listener_endpoint), its(:max_allocated_storage), its(:tag_list), its(:db_instance_automated_backups_replications), its(:customer_owned_ip_enabled), its(:aws_backup_recovery_point_arn), its(:activity_stream_status), its(:activity_stream_kms_key_id), its(:activity_stream_kinesis_stream_name), its(:activity_stream_mode), its(:activity_stream_engine_native_audit_fields_included), its(:automation_mode), its(:resume_full_automation_mode_time), its(:custom_iam_instance_profile), its(:backup_target), its(:network_type)
|
2871
|
+
### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:automatic_restart_time), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:db_security_groups), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:replica_mode), its(:license_model), its(:iops), its(:character_set_name), its(:nchar_character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone), its(:iam_database_authentication_enabled), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:enabled_cloudwatch_logs_exports), its(:processor_features), its(:deletion_protection), its(:associated_roles), its(:listener_endpoint), its(:max_allocated_storage), its(:tag_list), its(:db_instance_automated_backups_replications), its(:customer_owned_ip_enabled), its(:aws_backup_recovery_point_arn), its(:activity_stream_status), its(:activity_stream_kms_key_id), its(:activity_stream_kinesis_stream_name), its(:activity_stream_mode), its(:activity_stream_engine_native_audit_fields_included), its(:automation_mode), its(:resume_full_automation_mode_time), its(:custom_iam_instance_profile), its(:backup_target), its(:network_type), its(:activity_stream_policy_status)
|
2860
2872
|
### :unlock: Advanced use
|
2861
2873
|
|
2862
2874
|
`rds` can use `Aws::RDS::DBInstance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/RDS/DBInstance.html).
|
@@ -2875,6 +2887,61 @@ describe rds('my-rds') do
|
|
2875
2887
|
end
|
2876
2888
|
```
|
2877
2889
|
|
2890
|
+
## <a name="rds_db_cluster">rds_db_cluster</a>
|
2891
|
+
|
2892
|
+
RdsDbCluster resource type.
|
2893
|
+
|
2894
|
+
```ruby
|
2895
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
2896
|
+
its(:db_cluster_parameter_group) { should eq 'default.aurora-mysql5.7' }
|
2897
|
+
its(:engine) { should eq 'aurora-mysql' }
|
2898
|
+
its(:engine_version) { should eq '5.7.mysql_aurora.2.10.2' }
|
2899
|
+
its(:database_name) { should eq 'example_db' }
|
2900
|
+
its(:storage_encrypted) { should eq false }
|
2901
|
+
its(:deletion_protection) { should eq false }
|
2902
|
+
end
|
2903
|
+
```
|
2904
|
+
|
2905
|
+
|
2906
|
+
### exist
|
2907
|
+
|
2908
|
+
```ruby
|
2909
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
2910
|
+
it { should exist }
|
2911
|
+
end
|
2912
|
+
```
|
2913
|
+
|
2914
|
+
|
2915
|
+
### be_available, be_creating, be_deleting
|
2916
|
+
|
2917
|
+
```ruby
|
2918
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
2919
|
+
it { should be_available }
|
2920
|
+
end
|
2921
|
+
```
|
2922
|
+
|
2923
|
+
|
2924
|
+
### have_cluster_member
|
2925
|
+
|
2926
|
+
```ruby
|
2927
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
2928
|
+
it { should have_cluster_member('my-rds-db-cluster-instance-1') }
|
2929
|
+
it { should have_cluster_member('my-rds-db-cluster-instance-1').is_writer(true) }
|
2930
|
+
it { should have_cluster_member('my-rds-db-cluster-instance-2').is_writer(false) }
|
2931
|
+
end
|
2932
|
+
```
|
2933
|
+
|
2934
|
+
|
2935
|
+
### have_security_group
|
2936
|
+
|
2937
|
+
```ruby
|
2938
|
+
describe rds_db_cluster('my-rds-db-cluster') do
|
2939
|
+
it { should have_security_group('sg-5a6b7cd8') }
|
2940
|
+
it { should have_security_group('my-db-sg') }
|
2941
|
+
end
|
2942
|
+
```
|
2943
|
+
|
2944
|
+
### its(:allocated_storage), its(:availability_zones), its(:backup_retention_period), its(:character_set_name), its(:database_name), its(:db_cluster_identifier), its(:db_cluster_parameter_group), its(:db_subnet_group), its(:status), its(:automatic_restart_time), its(:percent_progress), its(:earliest_restorable_time), its(:endpoint), its(:reader_endpoint), its(:custom_endpoints), its(:multi_az), its(:engine), its(:engine_version), its(:latest_restorable_time), its(:port), its(:master_username), its(:db_cluster_option_group_memberships), its(:preferred_backup_window), its(:preferred_maintenance_window), its(:replication_source_identifier), its(:read_replica_identifiers), its(:hosted_zone_id), its(:storage_encrypted), its(:kms_key_id), its(:db_cluster_resource_id), its(:db_cluster_arn), its(:associated_roles), its(:iam_database_authentication_enabled), its(:clone_group_id), its(:cluster_create_time), its(:earliest_backtrack_time), its(:backtrack_window), its(:backtrack_consumed_change_records), its(:enabled_cloudwatch_logs_exports), its(:capacity), its(:engine_mode), its(:scaling_configuration_info), its(:deletion_protection), its(:http_endpoint_enabled), its(:activity_stream_mode), its(:activity_stream_status), its(:activity_stream_kms_key_id), its(:activity_stream_kinesis_stream_name), its(:copy_tags_to_snapshot), its(:cross_account_clone), its(:domain_memberships), its(:tag_list), its(:global_write_forwarding_status), its(:global_write_forwarding_requested), its(:pending_modified_values), its(:db_cluster_instance_class), its(:storage_type), its(:iops), its(:publicly_accessible), its(:auto_minor_version_upgrade), its(:monitoring_interval), its(:monitoring_role_arn), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:serverless_v2_scaling_configuration), its(:network_type)
|
2878
2945
|
## <a name="rds_db_cluster_parameter_group">rds_db_cluster_parameter_group</a>
|
2879
2946
|
|
2880
2947
|
RdsDbClusterParameterGroup resource type.
|
@@ -2916,6 +2983,83 @@ end
|
|
2916
2983
|
```
|
2917
2984
|
|
2918
2985
|
|
2986
|
+
## <a name="rds_db_subnet_group">rds_db_subnet_group</a>
|
2987
|
+
|
2988
|
+
RdsDbSubnetGroup resource type.
|
2989
|
+
|
2990
|
+
### exist
|
2991
|
+
|
2992
|
+
```ruby
|
2993
|
+
describe rds_db_subnet_group('my-rds-db-subnet-group') do
|
2994
|
+
it { should exist }
|
2995
|
+
end
|
2996
|
+
```
|
2997
|
+
|
2998
|
+
|
2999
|
+
### belong_to_subnet
|
3000
|
+
|
3001
|
+
```ruby
|
3002
|
+
describe rds_db_subnet_group('my-rds-db-subnet-group') do
|
3003
|
+
it { should belong_to_subnet('subnet-1234a567') }
|
3004
|
+
it { should belong_to_subnet('db-subnet-a') }
|
3005
|
+
end
|
3006
|
+
```
|
3007
|
+
|
3008
|
+
|
3009
|
+
### belong_to_vpc
|
3010
|
+
|
3011
|
+
```ruby
|
3012
|
+
describe rds_db_subnet_group('my-rds-db-subnet-group') do
|
3013
|
+
it { should belong_to_vpc('vpc-ab123cde') }
|
3014
|
+
it { should belong_to_vpc('my-vpc') }
|
3015
|
+
end
|
3016
|
+
```
|
3017
|
+
|
3018
|
+
### its(:vpc_id), its(:db_subnet_group_name), its(:db_subnet_group_description), its(:vpc_id), its(:subnet_group_status), its(:db_subnet_group_arn), its(:supported_network_types)
|
3019
|
+
## <a name="rds_global_cluster">rds_global_cluster</a>
|
3020
|
+
|
3021
|
+
RdsGlobalCluster resource type.
|
3022
|
+
|
3023
|
+
```ruby
|
3024
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
3025
|
+
its(:engine) { should eq 'aurora-mysql' }
|
3026
|
+
its(:engine_version) { should eq '5.7.mysql_aurora.2.10.2' }
|
3027
|
+
its(:database_name) { should eq 'example_db' }
|
3028
|
+
its(:storage_encrypted) { should eq false }
|
3029
|
+
its(:deletion_protection) { should eq false }
|
3030
|
+
end
|
3031
|
+
```
|
3032
|
+
|
3033
|
+
|
3034
|
+
### exist
|
3035
|
+
|
3036
|
+
```ruby
|
3037
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
3038
|
+
it { should exist }
|
3039
|
+
end
|
3040
|
+
```
|
3041
|
+
|
3042
|
+
|
3043
|
+
### be_available, be_creating, be_deleting
|
3044
|
+
|
3045
|
+
```ruby
|
3046
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
3047
|
+
it { should be_available }
|
3048
|
+
end
|
3049
|
+
```
|
3050
|
+
|
3051
|
+
|
3052
|
+
### have_cluster_member
|
3053
|
+
|
3054
|
+
```ruby
|
3055
|
+
describe rds_global_cluster('my-rds-global-cluster') do
|
3056
|
+
it { should have_cluster_member('arn:aws:rds:ap-northeast-1:123456789012:cluster:my-primary-cluster') }
|
3057
|
+
it { should have_cluster_member('arn:aws:rds:ap-northeast-1:123456789012:cluster:my-primary-cluster').is_writer(true) }
|
3058
|
+
it { should have_cluster_member('arn:aws:rds:ap-northeast-3:123456789012:cluster:my-secondary-cluster').is_writer(false) }
|
3059
|
+
end
|
3060
|
+
```
|
3061
|
+
|
3062
|
+
### its(:global_cluster_identifier), its(:global_cluster_resource_id), its(:global_cluster_arn), its(:status), its(:engine), its(:engine_version), its(:database_name), its(:storage_encrypted), its(:deletion_protection), its(:failover_state)
|
2919
3063
|
## <a name="rds_proxy">rds_proxy</a>
|
2920
3064
|
|
2921
3065
|
RdsProxy resource type.
|
@@ -3812,14 +3956,7 @@ end
|
|
3812
3956
|
|
3813
3957
|
VpcEndpoints resource type.
|
3814
3958
|
|
3815
|
-
### exist
|
3816
|
-
|
3817
3959
|
```ruby
|
3818
|
-
describe vpc_endpoints('my-vpc-endpoint') do
|
3819
|
-
it { should exist }
|
3820
|
-
end
|
3821
|
-
```
|
3822
|
-
|
3823
3960
|
describe vpc_endpoints('vpce-05907f23265b25f20'), region: $tfvars["region"]["value"] do
|
3824
3961
|
it { should exist }
|
3825
3962
|
it { should be_available }
|
@@ -3829,23 +3966,26 @@ describe vpc_endpoints('vpce-05907f23265b25f20'), region: $tfvars["region"]["val
|
|
3829
3966
|
its(:vpc_endpoint_type) { should eq 'Interface' }
|
3830
3967
|
its(:service_name) { should eq 'com.amazonaws.eu-west-1.codebuild' }
|
3831
3968
|
end
|
3969
|
+
```
|
3832
3970
|
|
3833
3971
|
|
3834
|
-
###
|
3835
|
-
|
3836
|
-
### be_deleted
|
3837
|
-
|
3838
|
-
### be_deleting
|
3972
|
+
### exist
|
3839
3973
|
|
3840
|
-
|
3974
|
+
```ruby
|
3975
|
+
describe vpc_endpoints('my-vpc-endpoint') do
|
3976
|
+
it { should exist }
|
3977
|
+
end
|
3978
|
+
```
|
3841
3979
|
|
3842
|
-
### be_failed
|
3843
3980
|
|
3844
|
-
### be_pending
|
3981
|
+
### be_pendingacceptance, be_pending, be_available, be_deleting, be_deleted, be_rejected, be_failed, be_expired
|
3845
3982
|
|
3846
|
-
|
3983
|
+
```ruby
|
3984
|
+
describe vpc_endpoints('my-vpc-endpoint') do
|
3985
|
+
it { should be_available }
|
3986
|
+
end
|
3987
|
+
```
|
3847
3988
|
|
3848
|
-
### be_rejected
|
3849
3989
|
|
3850
3990
|
### have_route_table
|
3851
3991
|
|
@@ -3874,6 +4014,15 @@ end
|
|
3874
4014
|
```
|
3875
4015
|
|
3876
4016
|
|
4017
|
+
### belong_to_vpc
|
4018
|
+
|
4019
|
+
```ruby
|
4020
|
+
describe vpc_endpoints('my-vpc-endpoint') do
|
4021
|
+
it { should belong_to_vpc('my-vpc') }
|
4022
|
+
end
|
4023
|
+
```
|
4024
|
+
|
4025
|
+
|
3877
4026
|
|
3878
4027
|
### :unlock: Advanced use
|
3879
4028
|
|
@@ -50,6 +50,18 @@ module Awspec
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
types = %w[
|
54
|
+
rds_db_cluster rds_global_cluster
|
55
|
+
]
|
56
|
+
|
57
|
+
types.each do |type|
|
58
|
+
desc "#{type} [cluster_identifier]", "Generate #{type} spec from cluster identifier."
|
59
|
+
define_method type do |_cluster_identifier|
|
60
|
+
Awsecrets.load(profile: options[:profile], region: options[:region], secrets_path: options[:secrets_path])
|
61
|
+
eval "puts Awspec::Generator::Spec::#{type.camelize}.new.generate(_cluster_identifier)"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
53
65
|
types_for_generate_all = %w[
|
54
66
|
cloudwatch_alarm cloudwatch_event directconnect ebs efs
|
55
67
|
elasticsearch iam_group iam_policy iam_role iam_user kms lambda
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Awspec::Generator
|
4
|
+
module Doc
|
5
|
+
module Type
|
6
|
+
class RdsDbCluster < Base
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
@type_name = 'RdsDbCluster'
|
10
|
+
@type = Awspec::Type::RdsDbCluster.new('my-rds-db-cluster')
|
11
|
+
@ret = @type.resource_via_client
|
12
|
+
@matchers = [
|
13
|
+
Awspec::Type::RdsDbCluster::STATES.map { |state| "be_#{state.tr('-', '_')}" }.join(', ')
|
14
|
+
]
|
15
|
+
@ignore_matchers = Awspec::Type::RdsDbCluster::STATES.map { |state| "be_#{state.tr('-', '_')}" }
|
16
|
+
@describes = []
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Awspec::Generator
|
4
|
+
module Doc
|
5
|
+
module Type
|
6
|
+
class RdsDbSubnetGroup < Base
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
@type_name = 'RdsDbSubnetGroup'
|
10
|
+
@type = Awspec::Type::RdsDbSubnetGroup.new('my-rds-db-subnet-group')
|
11
|
+
@ret = @type.resource_via_client
|
12
|
+
@matchers = %w[belong_to_vpc belong_to_subnet]
|
13
|
+
@ignore_matchers = []
|
14
|
+
@describes = %w[vpc_id]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Awspec::Generator
|
4
|
+
module Doc
|
5
|
+
module Type
|
6
|
+
class RdsGlobalCluster < Base
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
@type_name = 'RdsGlobalCluster'
|
10
|
+
@type = Awspec::Type::RdsGlobalCluster.new('my-rds-global-cluster')
|
11
|
+
@ret = @type.resource_via_client
|
12
|
+
@matchers = [
|
13
|
+
Awspec::Type::RdsGlobalCluster::STATES.map { |state| "be_#{state.tr('-', '_')}" }.join(', ')
|
14
|
+
]
|
15
|
+
@ignore_matchers = Awspec::Type::RdsGlobalCluster::STATES.map { |state| "be_#{state.tr('-', '_')}" }
|
16
|
+
@describes = []
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -9,8 +9,11 @@ module Awspec::Generator
|
|
9
9
|
@type_name = 'VpcEndpoints'
|
10
10
|
@type = Awspec::Type::VpcEndpoints.new('my-vpc-endpoint')
|
11
11
|
@ret = @type.resource_via_client
|
12
|
-
@matchers = [
|
13
|
-
|
12
|
+
@matchers = [
|
13
|
+
Awspec::Type::VpcEndpoints::STATES.map { |state| "be_#{state.tr('-', '_')}" }.join(', '),
|
14
|
+
'belong_to_vpc'
|
15
|
+
]
|
16
|
+
@ignore_matchers = Awspec::Type::VpcEndpoints::STATES.map { |state| "be_#{state.tr('-', '_')}" }
|
14
17
|
@describes = []
|
15
18
|
end
|
16
19
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Awspec::Generator
|
4
|
+
module Spec
|
5
|
+
class RdsDbCluster
|
6
|
+
include Awspec::Helper::Finder
|
7
|
+
def generate(db_cluster_identifier)
|
8
|
+
cluster = find_db_cluster(db_cluster_identifier)
|
9
|
+
raise 'Not Found RDS DB Cluster' unless cluster
|
10
|
+
|
11
|
+
content(cluster)
|
12
|
+
end
|
13
|
+
|
14
|
+
# rubocop:disable all
|
15
|
+
def rds_db_cluster_spec_template
|
16
|
+
template = <<-'EOF'
|
17
|
+
describe rds_db_cluster('<%= cluster.db_cluster_identifier %>') do
|
18
|
+
it { should exist }
|
19
|
+
it { should be_<%= cluster.status %> }
|
20
|
+
<% cluster.vpc_security_groups.each do |sg| %>
|
21
|
+
it { should have_security_group('<%= sg.vpc_security_group_id %>') }
|
22
|
+
<% end %>
|
23
|
+
<% cluster.db_cluster_members.each do |member| %>
|
24
|
+
it { should have_cluster_member('<%= member.db_instance_identifier %>').is_writer(<%= member.is_cluster_writer %>) }
|
25
|
+
<% end %>
|
26
|
+
its(:db_cluster_parameter_group) { should eq '<%= cluster.db_cluster_parameter_group %>' }
|
27
|
+
its(:engine) { should eq '<%= cluster.engine %>' }
|
28
|
+
its(:engine_version) { should eq '<%= cluster.engine_version %>' }
|
29
|
+
its(:database_name) { should eq '<%= cluster.database_name %>' }
|
30
|
+
its(:storage_encrypted) { should eq <%= cluster.storage_encrypted %> }
|
31
|
+
its(:deletion_protection) { should eq <%= cluster.deletion_protection %> }
|
32
|
+
its(:port) { should eq <%= cluster.port %> }
|
33
|
+
its(:master_username) { should eq '<%= cluster.master_username %>' }
|
34
|
+
end
|
35
|
+
EOF
|
36
|
+
template
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def content(cluster)
|
42
|
+
ERB.new(rds_db_cluster_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Awspec::Generator
|
4
|
+
module Spec
|
5
|
+
class RdsGlobalCluster
|
6
|
+
include Awspec::Helper::Finder
|
7
|
+
def generate(global_cluster_identifier)
|
8
|
+
cluster = find_global_cluster(global_cluster_identifier)
|
9
|
+
raise 'Not Found RDS Global Cluster' unless cluster
|
10
|
+
|
11
|
+
content(cluster)
|
12
|
+
end
|
13
|
+
|
14
|
+
# rubocop:disable all
|
15
|
+
def rds_global_cluster_spec_template
|
16
|
+
template = <<-'EOF'
|
17
|
+
describe rds_global_cluster('<%= cluster.global_cluster_identifier %>') do
|
18
|
+
it { should exist }
|
19
|
+
it { should be_<%= cluster.status %> }
|
20
|
+
<% cluster.global_cluster_members.each do |member| %>
|
21
|
+
it { should have_cluster_member('<%= member.db_cluster_arn %>').is_writer(<%= member.is_writer %>) }
|
22
|
+
<% end %>
|
23
|
+
its(:engine) { should eq '<%= cluster.engine %>' }
|
24
|
+
its(:engine_version) { should eq '<%= cluster.engine_version %>' }
|
25
|
+
its(:database_name) { should eq '<%= cluster.database_name %>' }
|
26
|
+
its(:storage_encrypted) { should eq <%= cluster.storage_encrypted %> }
|
27
|
+
its(:deletion_protection) { should eq <%= cluster.deletion_protection %> }
|
28
|
+
end
|
29
|
+
EOF
|
30
|
+
template
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def content(cluster)
|
36
|
+
ERB.new(rds_global_cluster_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/awspec/generator.rb
CHANGED
@@ -41,6 +41,8 @@ require 'awspec/generator/spec/nlb_listener'
|
|
41
41
|
require 'awspec/generator/spec/redshift'
|
42
42
|
require 'awspec/generator/spec/redshift_cluster_parameter_group'
|
43
43
|
require 'awspec/generator/spec/rds_proxy'
|
44
|
+
require 'awspec/generator/spec/rds_db_cluster'
|
45
|
+
require 'awspec/generator/spec/rds_global_cluster'
|
44
46
|
|
45
47
|
# Doc
|
46
48
|
require 'awspec/generator/doc/type'
|
@@ -163,20 +163,6 @@ module Awspec::Helper
|
|
163
163
|
instances
|
164
164
|
end
|
165
165
|
|
166
|
-
def select_eip_by_instance_id(id)
|
167
|
-
res = ec2_client.describe_addresses({
|
168
|
-
filters: [{ name: 'instance-id', values: [id] }]
|
169
|
-
})
|
170
|
-
res.addresses
|
171
|
-
end
|
172
|
-
|
173
|
-
def select_eip_by_public_ip(id)
|
174
|
-
res = ec2_client.describe_addresses({
|
175
|
-
filters: [{ name: 'public-ip', values: [id] }]
|
176
|
-
})
|
177
|
-
res.addresses
|
178
|
-
end
|
179
|
-
|
180
166
|
def select_network_interface_by_instance_id(id)
|
181
167
|
res = ec2_client.describe_network_interfaces({
|
182
168
|
filters: [{ name: 'attachment.instance-id', values: [id] }]
|