awspec 1.27.0 → 1.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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] }]
|