awspec 1.34.0 → 1.35.0

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.tagpr +2 -0
  3. data/CHANGELOG.md +6 -0
  4. data/doc/resource_types.md +4 -4
  5. data/lib/awspec/generator/doc/type/account.rb +1 -1
  6. data/lib/awspec/generator/doc/type/account_attribute.rb +2 -1
  7. data/lib/awspec/generator/doc/type/base.rb +1 -1
  8. data/lib/awspec/generator/doc/type.rb +1 -1
  9. data/lib/awspec/generator/spec/acm.rb +1 -1
  10. data/lib/awspec/generator/spec/alb.rb +1 -1
  11. data/lib/awspec/generator/spec/alb_listener.rb +1 -1
  12. data/lib/awspec/generator/spec/autoscaling_group.rb +1 -1
  13. data/lib/awspec/generator/spec/cloudwatch_alarm.rb +1 -1
  14. data/lib/awspec/generator/spec/cloudwatch_event.rb +1 -1
  15. data/lib/awspec/generator/spec/cloudwatch_logs.rb +1 -1
  16. data/lib/awspec/generator/spec/codebuild.rb +1 -1
  17. data/lib/awspec/generator/spec/codepipeline.rb +1 -1
  18. data/lib/awspec/generator/spec/directconnect.rb +1 -1
  19. data/lib/awspec/generator/spec/ebs.rb +2 -2
  20. data/lib/awspec/generator/spec/ec2.rb +1 -1
  21. data/lib/awspec/generator/spec/efs.rb +1 -1
  22. data/lib/awspec/generator/spec/eip.rb +1 -1
  23. data/lib/awspec/generator/spec/elasticache.rb +1 -1
  24. data/lib/awspec/generator/spec/elasticsearch.rb +1 -1
  25. data/lib/awspec/generator/spec/elb.rb +1 -1
  26. data/lib/awspec/generator/spec/iam_group.rb +1 -1
  27. data/lib/awspec/generator/spec/iam_policy.rb +1 -1
  28. data/lib/awspec/generator/spec/iam_role.rb +1 -1
  29. data/lib/awspec/generator/spec/iam_user.rb +1 -1
  30. data/lib/awspec/generator/spec/internet_gateway.rb +1 -1
  31. data/lib/awspec/generator/spec/kms.rb +1 -1
  32. data/lib/awspec/generator/spec/lambda.rb +1 -1
  33. data/lib/awspec/generator/spec/managed_prefix_list.rb +1 -1
  34. data/lib/awspec/generator/spec/nat_gateway.rb +1 -1
  35. data/lib/awspec/generator/spec/network_acl.rb +1 -1
  36. data/lib/awspec/generator/spec/network_interface.rb +1 -1
  37. data/lib/awspec/generator/spec/nlb.rb +1 -1
  38. data/lib/awspec/generator/spec/nlb_listener.rb +1 -1
  39. data/lib/awspec/generator/spec/rds.rb +1 -1
  40. data/lib/awspec/generator/spec/rds_db_cluster.rb +1 -1
  41. data/lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb +1 -1
  42. data/lib/awspec/generator/spec/rds_db_parameter_group.rb +1 -1
  43. data/lib/awspec/generator/spec/rds_global_cluster.rb +1 -1
  44. data/lib/awspec/generator/spec/rds_proxy.rb +1 -1
  45. data/lib/awspec/generator/spec/redshift.rb +1 -1
  46. data/lib/awspec/generator/spec/redshift_cluster_parameter_group.rb +1 -1
  47. data/lib/awspec/generator/spec/route53_hosted_zone.rb +2 -2
  48. data/lib/awspec/generator/spec/route_table.rb +10 -6
  49. data/lib/awspec/generator/spec/s3_bucket.rb +3 -3
  50. data/lib/awspec/generator/spec/security_group.rb +3 -3
  51. data/lib/awspec/generator/spec/subnet.rb +1 -1
  52. data/lib/awspec/generator/spec/vpc.rb +1 -1
  53. data/lib/awspec/generator/spec/wafv2_ip_set.rb +1 -1
  54. data/lib/awspec/generator/spec/wafv2_web_acl.rb +1 -1
  55. data/lib/awspec/helper/finder/iam.rb +17 -1
  56. data/lib/awspec/matcher/have_plan_rule.rb +18 -27
  57. data/lib/awspec/stub/iam_policy.rb +15 -1
  58. data/lib/awspec/stub/iam_role.rb +11 -1
  59. data/lib/awspec/version.rb +1 -1
  60. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d65a2f5aea6df138e2c8ddef3a36092fc2760f40086c4129ca4f639281b83e52
4
- data.tar.gz: d9c213638e77e674dd5fd8b08648ec52956855285253330db732877cd40350ff
3
+ metadata.gz: db3c043ecfd88d5ba4d3172eacd752be77fced5cfc8437e8eff6309f08d2cf1d
4
+ data.tar.gz: f2681be63ef0ebe27769fa955c44a8fea5bc40b46ac68fc5d2d84c5dc56b2454
5
5
  SHA512:
6
- metadata.gz: e7972b92325855e58d1c950192b49d477c2d913251c4577371b9f0a2ff593c56a839472cd42c44295562aaef5d9b74445392de9c8fe06ddd4c676962b425ca0f
7
- data.tar.gz: 99d9f6df0b85b122550f4c07dfcfd2544a1ddb2a8bf17fc09588f53653a086d6caf851ca78663149a130da766e11afdf2ae6e3210987b0443608f09003122457
6
+ metadata.gz: 97c866e601968425dc87fc154a3a24894bb0361a8a1a0af891a4e06a86d799f8a2778059c234cd09de7d4c6f44de405c6dc481f85de30c916624533b586662a4
7
+ data.tar.gz: ea9f60784223a778a2bc4a2fbda77b6fac713a27863eed4deb716211e81693e122623279641089bfedda0058bd70caa00a25f15f787123f00afc92929999be45
data/.tagpr CHANGED
@@ -33,3 +33,5 @@
33
33
  vPrefix = true
34
34
  releaseBranch = main
35
35
  versionFile = lib/awspec/version.rb
36
+ majorLabels = "tagpr:major"
37
+ minorLabels = "tagpr:minor"
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [v1.35.0](https://github.com/k1LoW/awspec/compare/v1.34.0...v1.35.0) - 2025-11-10
4
+ - Improve backup plan rules output by @endemics in https://github.com/k1LoW/awspec/pull/611
5
+ - Add missing details for IAM roles and policies by @endemics in https://github.com/k1LoW/awspec/pull/609
6
+ - chore: remove ERB trim fix warnings by @endemics in https://github.com/k1LoW/awspec/pull/610
7
+ - chore: setup tagpr labels by @k1LoW in https://github.com/k1LoW/awspec/pull/608
8
+
3
9
  ## [v1.34.0](https://github.com/k1LoW/awspec/compare/v1.33.0...v1.34.0) - 2025-10-18
4
10
  - Add support for aws backup rules (under backup plan) by @endemics in https://github.com/k1LoW/awspec/pull/605
5
11
  - feat: setup tagpr by @k1LoW in https://github.com/k1LoW/awspec/pull/606
@@ -414,7 +414,7 @@ end
414
414
  ```
415
415
 
416
416
 
417
- ### its(:backup_vault_name), its(:backup_vault_arn), its(:vault_type), its(:vault_state), its(:creation_date), its(:encryption_key_arn), its(:creator_request_id), its(:number_of_recovery_points), its(:locked), its(:min_retention_days), its(:max_retention_days), its(:lock_date)
417
+ ### its(:backup_vault_name), its(:backup_vault_arn), its(:vault_type), its(:vault_state), its(:creation_date), its(:encryption_key_arn), its(:creator_request_id), its(:number_of_recovery_points), its(:locked), its(:min_retention_days), its(:max_retention_days), its(:lock_date), its(:encryption_key_type)
418
418
  ## <a name="batch_compute_environment">batch_compute_environment</a>
419
419
 
420
420
  BatchComputeEnvironment resource type.
@@ -2284,7 +2284,7 @@ describe kinesis('my-kinesis') do
2284
2284
  end
2285
2285
  ```
2286
2286
 
2287
- ### its(:stream_name), its(:stream_arn), its(:stream_status), its(:stream_mode_details), its(:retention_period_hours), its(:stream_creation_timestamp), its(:encryption_type), its(:key_id), its(:open_shard_count), its(:consumer_count)
2287
+ ### its(:stream_name), its(:stream_arn), its(:stream_status), its(:stream_mode_details), its(:retention_period_hours), its(:stream_creation_timestamp), its(:encryption_type), its(:key_id), its(:open_shard_count), its(:consumer_count), its(:warm_throughput), its(:max_record_size_in_ki_b)
2288
2288
  ## <a name="kms">kms</a>
2289
2289
 
2290
2290
  Kms resource type.
@@ -2532,7 +2532,7 @@ end
2532
2532
  ```
2533
2533
 
2534
2534
 
2535
- ### its(:prefix_list_id), its(:address_family), its(:state), its(:state_message), its(:prefix_list_arn), its(:prefix_list_name), its(:max_entries), its(:version), its(:owner_id)
2535
+ ### its(:prefix_list_id), its(:address_family), its(:state), its(:state_message), its(:prefix_list_arn), its(:prefix_list_name), its(:max_entries), its(:version), its(:owner_id), its(:ipam_prefix_list_resolver_target_id), its(:ipam_prefix_list_resolver_sync_enabled)
2536
2536
  ## <a name="mq">mq</a>
2537
2537
 
2538
2538
  MQ resource type.
@@ -2795,7 +2795,7 @@ describe network_interface('eni-12ab3cde') do
2795
2795
  end
2796
2796
  ```
2797
2797
 
2798
- ### its(:association), its(:availability_zone), its(:connection_tracking_configuration), its(:description), its(:interface_type), its(:ipv_6_addresses), its(:mac_address), its(:network_interface_id), its(:outpost_arn), its(:owner_id), its(:private_dns_name), its(:public_dns_name), its(:public_ip_dns_name_options), its(:private_ip_address), its(:ipv_4_prefixes), its(:ipv_6_prefixes), its(:requester_id), its(:requester_managed), its(:source_dest_check), its(:status), its(:subnet_id), its(:vpc_id), its(:deny_all_igw_traffic), its(:ipv_6_native), its(:ipv_6_address), its(:operator), its(:associated_subnets)
2798
+ ### its(:association), its(:availability_zone), its(:connection_tracking_configuration), its(:description), its(:interface_type), its(:ipv_6_addresses), its(:mac_address), its(:network_interface_id), its(:outpost_arn), its(:owner_id), its(:private_dns_name), its(:public_dns_name), its(:public_ip_dns_name_options), its(:private_ip_address), its(:ipv_4_prefixes), its(:ipv_6_prefixes), its(:requester_id), its(:requester_managed), its(:source_dest_check), its(:status), its(:subnet_id), its(:vpc_id), its(:deny_all_igw_traffic), its(:ipv_6_native), its(:ipv_6_address), its(:operator), its(:associated_subnets), its(:availability_zone_id)
2799
2799
  ## <a name="nlb">nlb</a>
2800
2800
 
2801
2801
  NLB resource type.
@@ -15,7 +15,7 @@ module Awspec::Generator
15
15
  end
16
16
 
17
17
  def generate_doc
18
- @account_spec = ERB.new(account_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
18
+ @account_spec = ERB.new(account_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
19
19
  super
20
20
  end
21
21
 
@@ -14,8 +14,9 @@ module Awspec::Generator
14
14
  @describes = []
15
15
  end
16
16
 
17
+ # rubocop:disable Layout/LineLength
17
18
  def generate_doc
18
- @account_attribute_spec = ERB.new(account_attribute_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
19
+ @account_attribute_spec = ERB.new(account_attribute_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
19
20
  super
20
21
  end
21
22
 
@@ -48,7 +48,7 @@ module Awspec::Generator
48
48
  @descriptions[matcher] += line
49
49
  end
50
50
  end
51
- ERB.new(doc_template, nil, '-').result(binding)
51
+ ERB.new(doc_template, trim_mode: '-').result(binding)
52
52
  end
53
53
 
54
54
  def collect_matchers
@@ -18,7 +18,7 @@ module Awspec::Generator
18
18
  <%= links.join("\n| ") %>
19
19
 
20
20
  EOF
21
- doc = ERB.new(header, nil, '-').result(binding)
21
+ doc = ERB.new(header, trim_mode: '-').result(binding)
22
22
 
23
23
  types.sort.map do |type|
24
24
  doc += eval "Awspec::Generator::Doc::Type::#{type.camelize}.new.generate_doc"
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  certificates = select_all_certificates
9
9
  raise 'Not Found Certificates' if certificates.empty?
10
10
 
11
- ERB.new(acm_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(acm_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def acm_spec_template
@@ -16,7 +16,7 @@ module Awspec::Generator
16
16
  albs = select_alb_by_vpc_id(@vpc_id)
17
17
 
18
18
  specs = albs.map do |alb|
19
- content = ERB.new(alb_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
19
+ content = ERB.new(alb_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
20
20
  end
21
21
  specs.join("\n")
22
22
  end
@@ -20,7 +20,7 @@ module Awspec::Generator
20
20
  alb_listeners.map do |listener|
21
21
  rules = select_rule_by_alb_listener_id(listener.listener_arn).map(&:to_h)
22
22
  rules.map do |rule|
23
- content = ERB.new(alb_listener_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
23
+ content = ERB.new(alb_listener_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
24
24
  end
25
25
  end
26
26
  end
@@ -17,7 +17,7 @@ module Awspec::Generator
17
17
  @vpc_tag_name = vpc.tag_name
18
18
  autoscaling_groups = select_autoscaling_group_by_vpc_id(@vpc_id)
19
19
  specs = autoscaling_groups.map do |autoscaling_group|
20
- content = ERB.new(autoscaling_group_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
20
+ content = ERB.new(autoscaling_group_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
21
21
  end
22
22
  specs.join("\n")
23
23
  end
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  alarms = select_all_cloudwatch_alarms
9
9
  raise 'Not Found alarm' if alarms.empty?
10
10
 
11
- ERB.new(alarm_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(alarm_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def alarm_spec_template
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  events = select_all_cloudwatch_events
9
9
  raise 'Not Found event' if events.empty?
10
10
 
11
- ERB.new(event_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(event_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def event_spec_template
@@ -12,7 +12,7 @@ module Awspec::Generator
12
12
  log_stream_line = generate_log_stream_spec(log_group.log_group_name)
13
13
  metric_filter_lines = generate_log_metric_filters_specs(log_group.log_group_name)
14
14
  subscription_filter_lines = generate_log_subscription_filters_specs(log_group.log_group_name)
15
- content = ERB.new(cloudwatch_logs_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
15
+ content = ERB.new(cloudwatch_logs_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
16
16
  end
17
17
  specs.join("\n")
18
18
  end
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  projects = select_all_codebuild_projects
9
9
  raise 'Not Found CodeBuild Project' if projects.empty?
10
10
 
11
- ERB.new(codebuild_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(codebuild_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def codebuild_spec_template
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  pipelines = select_all_codepipelines
9
9
  raise 'Not Found CodePipeline' if pipelines.empty?
10
10
 
11
- ERB.new(codepipeline_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(codepipeline_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def codepipeline_spec_template
@@ -12,7 +12,7 @@ module Awspec::Generator
12
12
  virtual_interfaces = select_virtual_interfaces
13
13
  raise 'Not Found virtual_interfaces' if virtual_interfaces.empty?
14
14
 
15
- ERB.new(virtual_interface_spec_template, nil, '-').result(binding).chomp
15
+ ERB.new(virtual_interface_spec_template, trim_mode: '-').result(binding).chomp
16
16
  end
17
17
 
18
18
  def virtual_interface_spec_template
@@ -10,7 +10,7 @@ module Awspec::Generator
10
10
 
11
11
  specs = volumes.map do |volume|
12
12
  attachment_specs = generate_attachment_specs(volume)
13
- content = ERB.new(ebs_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
13
+ content = ERB.new(ebs_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
14
14
  end
15
15
  specs.join("\n")
16
16
  end
@@ -19,7 +19,7 @@ module Awspec::Generator
19
19
  linespecs = []
20
20
  volume.attachments.each do |attachment|
21
21
  instance = find_ec2(attachment.instance_id)
22
- linespecs.push(ERB.new(attachment_linetemplate, nil, '-').result(binding)) if attachment.instance_id
22
+ linespecs.push(ERB.new(attachment_linetemplate, trim_mode: '-').result(binding)) if attachment.instance_id
23
23
  end
24
24
  linespecs
25
25
  end
@@ -23,7 +23,7 @@ module Awspec::Generator
23
23
  volumes = select_ebs_by_instance_id(instance_id)
24
24
  network_interfaces = select_network_interface_by_instance_id(instance_id)
25
25
  credit_specification = find_ec2_credit_specifications(instance_id)
26
- content = ERB.new(ec2_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
26
+ content = ERB.new(ec2_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
27
27
  end
28
28
  specs.join("\n")
29
29
  end
@@ -10,7 +10,7 @@ module Awspec::Generator
10
10
 
11
11
  specs = file_systems.map do |file_system|
12
12
  file_system.name = get_name_by_id(file_system.file_system_id)
13
- content = ERB.new(file_system_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
13
+ content = ERB.new(file_system_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
14
14
  end
15
15
  specs.join("\n")
16
16
  end
@@ -13,7 +13,7 @@ module Awspec::Generator
13
13
  eips = select_all_addresses
14
14
  raise 'Not Found Elastic IP addresses.' if eips.empty?
15
15
 
16
- ERB.new(eip_spec_template, nil, '-').result(binding).chomp
16
+ ERB.new(eip_spec_template, trim_mode: '-').result(binding).chomp
17
17
  end
18
18
 
19
19
  def eip_spec_template
@@ -16,7 +16,7 @@ module Awspec::Generator
16
16
  end
17
17
  raise 'Not Found Cache Clusters' if clusters.empty?
18
18
 
19
- ERB.new(cache_clusters_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
19
+ ERB.new(cache_clusters_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
20
20
  end
21
21
 
22
22
  def cache_clusters_spec_template
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  domains = select_all_elasticsearch_domains
9
9
  raise 'Not Found Domain' if domains.empty?
10
10
 
11
- ERB.new(domain_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
11
+ ERB.new(domain_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
12
12
  end
13
13
 
14
14
  def domain_spec_template
@@ -20,7 +20,7 @@ module Awspec::Generator
20
20
  lbs = select_elb_by_vpc_id(@vpc_id)
21
21
 
22
22
  specs = lbs.map do |lb|
23
- content = ERB.new(elb_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
23
+ content = ERB.new(elb_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
24
24
  end
25
25
  specs.join("\n")
26
26
  end
@@ -17,7 +17,7 @@ module Awspec::Generator
17
17
  document = JSON.generate(JSON.parse(URI.decode_www_form_component(res.policy_document)))
18
18
  "it { should have_inline_policy('#{policy_name}').policy_document('#{document}') }"
19
19
  end
20
- content = ERB.new(iam_group_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
20
+ content = ERB.new(iam_group_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
21
21
  end
22
22
  specs.join("\n")
23
23
  end
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  policies = select_all_attached_policies
9
9
  raise 'Not Found policy' if policies.empty?
10
10
 
11
- ERB.new(policy_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(policy_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  # rubocop:disable all
@@ -17,7 +17,7 @@ module Awspec::Generator
17
17
  document = JSON.generate(JSON.parse(URI.decode_www_form_component(res.policy_document)))
18
18
  "it { should have_inline_policy('#{policy_name}').policy_document('#{document}') }"
19
19
  end
20
- content = ERB.new(iam_role_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
20
+ content = ERB.new(iam_role_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
21
21
  end
22
22
  specs.join("\n")
23
23
  end
@@ -17,7 +17,7 @@ module Awspec::Generator
17
17
  document = JSON.generate(JSON.parse(URI.decode_www_form_component(res.policy_document)))
18
18
  "it { should have_inline_policy('#{policy_name}').policy_document('#{document}') }"
19
19
  end
20
- content = ERB.new(iam_user_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
20
+ content = ERB.new(iam_user_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
21
21
  end
22
22
  specs.join("\n")
23
23
  end
@@ -15,7 +15,7 @@ module Awspec::Generator
15
15
  internet_gateways = select_internet_gateway_by_vpc_id(@vpc_id)
16
16
  specs = internet_gateways.map do |internet_gateway|
17
17
  internet_gateway_id = internet_gateway[:internet_gateway_id]
18
- content = ERB.new(internet_gateway_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
18
+ content = ERB.new(internet_gateway_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
19
19
  end
20
20
  specs.join("\n")
21
21
  end
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  aliases = select_all_kms_aliases.select { |kms_alias| customer_managed_key?(kms_alias) }
9
9
  raise 'Not Found alias' if aliases.empty?
10
10
 
11
- ERB.new(keys_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(keys_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def keys_spec_template
@@ -8,7 +8,7 @@ module Awspec::Generator
8
8
  lambda_functions = select_all_lambda_functions
9
9
  raise 'Not Found lambda' if lambda_functions.empty?
10
10
 
11
- ERB.new(lambda_spec_template, nil, '-').result(binding).chomp
11
+ ERB.new(lambda_spec_template, trim_mode: '-').result(binding).chomp
12
12
  end
13
13
 
14
14
  def lambda_spec_template
@@ -15,7 +15,7 @@ module Awspec::Generator
15
15
 
16
16
  specs = prefix_lists.map do |prefix_list|
17
17
  entries = select_managed_prefix_list_entries(prefix_list.prefix_list_id)
18
- content = ERB.new(managed_prefix_list_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
18
+ content = ERB.new(managed_prefix_list_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
19
19
  end
20
20
  specs.join("\n")
21
21
  end
@@ -15,7 +15,7 @@ module Awspec::Generator
15
15
  nat_gateways = select_nat_gateway_by_vpc_id(@vpc_id)
16
16
  specs = nat_gateways.map do |nat_gateway|
17
17
  nat_gateway_id = nat_gateway[:nat_gateway_id]
18
- content = ERB.new(nat_gateway_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
18
+ content = ERB.new(nat_gateway_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
19
19
  end
20
20
  specs.join("\n")
21
21
  end
@@ -24,7 +24,7 @@ module Awspec::Generator
24
24
  outbound_entries_count = acl.entries.count do |entry|
25
25
  entry.egress == true
26
26
  end
27
- content = ERB.new(network_acl_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
27
+ content = ERB.new(network_acl_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
28
28
  end
29
29
  specs.join("\n")
30
30
  end
@@ -19,7 +19,7 @@ module Awspec::Generator
19
19
  network_interface_id = interface[:network_interface_id]
20
20
  linespecs = generate_linespecs(interface)
21
21
  private_ip_addresses_count = interface.private_ip_addresses.count
22
- content = ERB.new(network_interface_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
22
+ content = ERB.new(network_interface_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
23
23
  end
24
24
  specs.join("\n")
25
25
  end
@@ -16,7 +16,7 @@ module Awspec::Generator
16
16
  nlbs = select_nlb_by_vpc_id(@vpc_id)
17
17
 
18
18
  specs = nlbs.map do |nlb|
19
- content = ERB.new(nlb_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
19
+ content = ERB.new(nlb_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
20
20
  end
21
21
  specs.join("\n")
22
22
  end
@@ -20,7 +20,7 @@ module Awspec::Generator
20
20
  nlb_listeners.map do |listener|
21
21
  rules = select_rule_by_nlb_listener_id(listener.listener_arn).map(&:to_h)
22
22
  rules.map do |rule|
23
- content = ERB.new(nlb_listener_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
23
+ content = ERB.new(nlb_listener_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
24
24
  end
25
25
  end
26
26
  end
@@ -21,7 +21,7 @@ module Awspec::Generator
21
21
  ret = find_security_group(sg_id)
22
22
  ret[:group_name]
23
23
  end
24
- content = ERB.new(rds_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
24
+ content = ERB.new(rds_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
25
25
  end
26
26
  specs.join("\n")
27
27
  end
@@ -39,7 +39,7 @@ EOF
39
39
  private
40
40
 
41
41
  def content(cluster)
42
- ERB.new(rds_db_cluster_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
42
+ ERB.new(rds_db_cluster_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
43
43
  end
44
44
  end
45
45
  end
@@ -7,7 +7,7 @@ module Awspec::Generator
7
7
  def generate_by_parameter_group(parameter_group)
8
8
  @parameter_group = parameter_group
9
9
  res = select_all_rds_db_cluster_parameters(@parameter_group)
10
- ERB.new(db_cluster_parameter_group_template, nil, '-').result(binding).gsub(/^\n/, '')
10
+ ERB.new(db_cluster_parameter_group_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
11
11
  end
12
12
 
13
13
  def db_cluster_parameter_group_template
@@ -7,7 +7,7 @@ module Awspec::Generator
7
7
  def generate_by_parameter_group(parameter_group)
8
8
  @parameter_group = parameter_group
9
9
  res = select_all_rds_db_parameters(@parameter_group)
10
- ERB.new(db_parameter_group_template, nil, '-').result(binding).gsub(/^\n/, '')
10
+ ERB.new(db_parameter_group_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
11
11
  end
12
12
 
13
13
  def db_parameter_group_template
@@ -33,7 +33,7 @@ EOF
33
33
  private
34
34
 
35
35
  def content(cluster)
36
- ERB.new(rds_global_cluster_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
36
+ ERB.new(rds_global_cluster_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
37
37
  end
38
38
  end
39
39
  end
@@ -11,7 +11,7 @@ module Awspec::Generator
11
11
  @vpc_id = vpc[:vpc_id]
12
12
  db_proxies = select_rds_proxy_by_vpc_id(@vpc_id)
13
13
  specs = db_proxies.map do |db_proxy|
14
- content = ERB.new(rds_proxy_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
14
+ content = ERB.new(rds_proxy_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
15
15
  end
16
16
  specs.join("\n")
17
17
  end
@@ -24,7 +24,7 @@ module Awspec::Generator
24
24
  ret = find_security_group(sg_id)
25
25
  ret[:group_name]
26
26
  end
27
- content = ERB.new(redshift_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
27
+ content = ERB.new(redshift_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
28
28
  end
29
29
  specs.join("\n")
30
30
  end
@@ -7,7 +7,7 @@ module Awspec::Generator
7
7
  def generate_by_parameter_group(parameter_group)
8
8
  @parameter_group = parameter_group
9
9
  res = select_all_redshift_cluster_parameters(@parameter_group)
10
- ERB.new(redshift_cluster_parameters_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
10
+ ERB.new(redshift_cluster_parameters_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
11
11
  end
12
12
 
13
13
  def redshift_cluster_parameters_spec_template
@@ -28,7 +28,7 @@ module Awspec::Generator
28
28
  generate_linespec(record_set)
29
29
  end
30
30
 
31
- content = ERB.new(route53_hosted_zone_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
31
+ content = ERB.new(route53_hosted_zone_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
32
32
  end
33
33
 
34
34
  def generate_linespec(record_set)
@@ -55,7 +55,7 @@ it { should have_record_set('<%= name %>').alias('<%= dns_name %>', '<%= hosted_
55
55
  <% end -%>
56
56
  EOF
57
57
  end
58
- ERB.new(template, nil, '-').result(binding)
58
+ ERB.new(template, trim_mode: '-').result(binding)
59
59
  end
60
60
 
61
61
  def route53_hosted_zone_spec_template
@@ -18,7 +18,7 @@ module Awspec::Generator
18
18
  subnet_linespecs = generate_subnet_linespecs(route_table)
19
19
  route_table_id = route_table[:route_table_id]
20
20
  route_table_tag_name = route_table.tag_name
21
- content = ERB.new(route_table_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
21
+ content = ERB.new(route_table_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
22
22
  end
23
23
  specs.join("\n")
24
24
  end
@@ -29,18 +29,22 @@ module Awspec::Generator
29
29
  if route.gateway_id
30
30
  destination = route.destination_cidr_block
31
31
  destination ||= route.destination_prefix_list_id
32
- linespecs.push(ERB.new(route_table_spec_gateway_linetemplate, nil, '-').result(binding))
32
+ linespecs.push(ERB.new(route_table_spec_gateway_linetemplate, trim_mode: '-').result(binding))
33
33
  end
34
34
  if route.instance_id
35
35
  instance = find_ec2(route.instance_id)
36
- linespecs.push(ERB.new(route_table_spec_instance_linetemplate, nil, '-').result(binding)) if instance
36
+ if instance
37
+ linespecs.push(ERB.new(route_table_spec_instance_linetemplate, trim_mode: '-').result(binding))
38
+ end
37
39
  end
38
40
  if route.vpc_peering_connection_id
39
41
  connection = find_vpc_peering_connection(route.vpc_peering_connection_id)
40
- linespecs.push(ERB.new(route_table_spec_connection_linetemplate, nil, '-').result(binding)) if connection
42
+ if connection
43
+ linespecs.push(ERB.new(route_table_spec_connection_linetemplate, trim_mode: '-').result(binding))
44
+ end
41
45
  end
42
46
  if route.nat_gateway_id
43
- linespecs.push(ERB.new(route_table_spec_nat_linetemplate, nil, '-').result(binding))
47
+ linespecs.push(ERB.new(route_table_spec_nat_linetemplate, trim_mode: '-').result(binding))
44
48
  end
45
49
  end
46
50
  linespecs
@@ -52,7 +56,7 @@ module Awspec::Generator
52
56
  next if a.subnet_id.nil?
53
57
 
54
58
  subnet = find_subnet(a.subnet_id)
55
- linespecs.push(ERB.new(route_table_spec_subnet_linetemplate, nil, '-').result(binding)) if subnet
59
+ linespecs.push(ERB.new(route_table_spec_subnet_linetemplate, trim_mode: '-').result(binding)) if subnet
56
60
  end
57
61
  linespecs
58
62
  end
@@ -24,7 +24,7 @@ module Awspec::Generator
24
24
 
25
25
  linespecs = []
26
26
  acl.grants.each do |grant|
27
- linespecs.push(ERB.new(grant_linetemplate, nil, '-').result(binding))
27
+ linespecs.push(ERB.new(grant_linetemplate, trim_mode: '-').result(binding))
28
28
  end
29
29
  linespecs
30
30
  end
@@ -79,7 +79,7 @@ it do
79
79
  )
80
80
  end
81
81
  EOF
82
- linespecs.push(ERB.new(template, nil, '-').result(binding))
82
+ linespecs.push(ERB.new(template, trim_mode: '-').result(binding))
83
83
  end
84
84
  linespecs
85
85
  end
@@ -124,7 +124,7 @@ EOF
124
124
  lifecycle_rule = find_bucket_lifecycle_configuration(bucket.name)
125
125
  lifecycle_specs = generate_lifecycle_rule_specs(lifecycle_rule) if lifecycle_rule
126
126
  location = find_bucket_location(bucket.name)
127
- ERB.new(bucket_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
127
+ ERB.new(bucket_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
128
128
  end
129
129
  end
130
130
  end
@@ -23,7 +23,7 @@ module Awspec::Generator
23
23
  outbound_rule_count = sg[:ip_permissions_egress].reduce(0) do |sum, permission|
24
24
  sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
25
25
  end
26
- content = ERB.new(security_group_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
26
+ content = ERB.new(security_group_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
27
27
  end
28
28
  specs.join("\n")
29
29
  end
@@ -49,12 +49,12 @@ module Awspec::Generator
49
49
 
50
50
  permission.ip_ranges.each do |ip_range|
51
51
  target = ip_range.cidr_ip
52
- linespecs.push(ERB.new(security_group_spec_linetemplate, nil, '-').result(binding))
52
+ linespecs.push(ERB.new(security_group_spec_linetemplate, trim_mode: '-').result(binding))
53
53
  end
54
54
  permission.user_id_group_pairs.each do |group|
55
55
  target = group.group_name
56
56
  target = group.group_id unless group.group_name
57
- linespecs.push(ERB.new(security_group_spec_linetemplate, nil, '-').result(binding))
57
+ linespecs.push(ERB.new(security_group_spec_linetemplate, trim_mode: '-').result(binding))
58
58
  end
59
59
  end
60
60
  end
@@ -17,7 +17,7 @@ module Awspec::Generator
17
17
  specs = subnets.map do |subnet|
18
18
  subnet_id = subnet[:subnet_id]
19
19
  subnet_tag_name = subnet.tag_name
20
- content = ERB.new(subnet_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
20
+ content = ERB.new(subnet_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
21
21
  end
22
22
  specs.join("\n")
23
23
  end
@@ -16,7 +16,7 @@ module Awspec::Generator
16
16
  route_tables = select_route_table_by_vpc_id(@vpc_id)
17
17
  network_acls = select_network_acl_by_vpc_id(@vpc_id)
18
18
  vpc_attributes = select_vpc_attribute(@vpc_id)
19
- spec = ERB.new(vpc_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
19
+ spec = ERB.new(vpc_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
20
20
  end
21
21
 
22
22
  # rubocop:disable all
@@ -10,7 +10,7 @@ module Awspec::Generator
10
10
 
11
11
  specs = ip_sets.map do |i|
12
12
  ip_set = get_ip_set(scope, i.name, i.id)
13
- ERB.new(wafv2_ip_set_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
13
+ ERB.new(wafv2_ip_set_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
14
14
  end
15
15
  specs.join("\n")
16
16
  end
@@ -10,7 +10,7 @@ module Awspec::Generator
10
10
 
11
11
  specs = web_acls.map do |acl|
12
12
  web_acl = get_web_acl(scope, acl.name, acl.id)
13
- ERB.new(wafv2_web_acl_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
13
+ ERB.new(wafv2_web_acl_spec_template, trim_mode: '-').result(binding).gsub(/^\n/, '')
14
14
  end
15
15
  specs.join("\n")
16
16
  end
@@ -23,7 +23,23 @@ module Awspec::Helper
23
23
  )
24
24
  end
25
25
 
26
- selected.single_resource(id)
26
+ res = selected.single_resource(id)
27
+
28
+ unless res.nil?
29
+ # Enrich the resource with all the fields returned by get_user, get_group, get_role, get_policy
30
+ params = type == 'policy' ? { :policy_arn => res['arn'] } : { "#{type}_name".to_sym => res["#{type}_name"] }
31
+ r = iam_client.send(
32
+ "get_#{type}",
33
+ params
34
+ )
35
+ object = r[type.to_sym]
36
+ unless object.nil?
37
+ object.to_h.each_key do |k|
38
+ res[k] = object[k] if res[k].nil?
39
+ end
40
+ end
41
+ end
42
+ res
27
43
  end
28
44
  end
29
45
 
@@ -1,6 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec::Matchers.define :have_plan_rule do |rule_id|
4
+ attr_list = %w[
5
+ rule_name target_backup_vault_name schedule_expression
6
+ start_window_minutes completion_window_minutes lifecycle
7
+ enable_continuous_backup schedule_expression_timezone
8
+ ]
9
+
4
10
  match do |plan|
5
11
  plan.has_plan_rule?(rule_id,
6
12
  rule_name: @rule_name,
@@ -13,35 +19,20 @@ RSpec::Matchers.define :have_plan_rule do |rule_id|
13
19
  schedule_expression_timezone: @schedule_expression_timezone)
14
20
  end
15
21
 
16
- chain :rule_name do |rule_name|
17
- @rule_name = rule_name
18
- end
19
-
20
- chain :target_backup_vault_name do |target_backup_vault_name|
21
- @target_backup_vault_name = target_backup_vault_name
22
- end
23
-
24
- chain :schedule_expression do |schedule_expression|
25
- @schedule_expression = schedule_expression
26
- end
27
-
28
- chain :start_window_minutes do |start_window_minutes|
29
- @start_window_minutes = start_window_minutes
30
- end
31
-
32
- chain :completion_window_minutes do |completion_window_minutes|
33
- @completion_window_minutes = completion_window_minutes
22
+ attr_list.each do |a|
23
+ define_method a.to_sym do |*args|
24
+ instance_variable_set("@#{a}", args[0])
25
+ self
26
+ end
34
27
  end
35
28
 
36
- chain :lifecycle do |lifecycle|
37
- @lifecycle = lifecycle
38
- end
39
-
40
- chain :enable_continuous_backup do |enable_continuous_backup|
41
- @enable_continuous_backup = enable_continuous_backup
42
- end
29
+ description do
30
+ attr = ''
31
+ attr_list.each do |a|
32
+ attr += "#{a} #{instance_variable_get("@#{a}")}" unless instance_variable_get("@#{a}").nil?
33
+ end
43
34
 
44
- chain :schedule_expression_timezone do |schedule_expression_timezone|
45
- @schedule_expression_timezone = schedule_expression_timezone
35
+ attr = " with #{attr}" if attr != ''
36
+ "have plan rule #{rule_id}#{attr}"
46
37
  end
47
38
  end
@@ -33,7 +33,7 @@ Aws.config[:iam] = {
33
33
  policies: [
34
34
  {
35
35
  attachment_count: 1,
36
- arn: 'arn:aws:iam::aws:policy/my-iam-policy',
36
+ arn: 'arn:aws:iam::123456789012:policy/my-iam-policy',
37
37
  default_version_id: 'v1',
38
38
  is_attachable: true,
39
39
  policy_id: 'PABCDEFGHI123455689',
@@ -81,6 +81,20 @@ Aws.config[:iam] = {
81
81
  is_default_version: true,
82
82
  create_date: Time.new(2022, 11, 12, 01, 23, 45, '+00:00')
83
83
  }
84
+ },
85
+ get_policy: {
86
+ policy: {
87
+ policy_name: 'my-iam-policy',
88
+ create_date: Time.new(2014, 1, 2, 10, 00, 00, '+00:00'),
89
+ description: 'my-description',
90
+ attachment_count: 1,
91
+ is_attachable: true,
92
+ policy_id: 'PABCDEFGHI123455689',
93
+ default_version_id: 'v1',
94
+ path: '/',
95
+ arn: 'arn:aws:iam::123456789012:policy/my-iam-policy',
96
+ update_date: Time.new(2015, 1, 2, 10, 00, 00, '+00:00')
97
+ }
84
98
  }
85
99
  }
86
100
  }
@@ -8,6 +8,7 @@ Aws.config[:iam] = {
8
8
  role_name: 'my-iam-role',
9
9
  role_id: 'RABCDEFGHI123455689',
10
10
  arn: 'arn:aws:iam::123456789012:role/my-iam-role',
11
+ description: 'my-description',
11
12
  create_date: Time.new(2015, 1, 2, 9, 00, 00, '+00:00')
12
13
  ]
13
14
  },
@@ -34,7 +35,16 @@ Aws.config[:iam] = {
34
35
  role_name: 'my-iam-role',
35
36
  role_id: 'RABCDEFGHI123455689',
36
37
  arn: 'arn:aws:iam::123456789012:role/my-iam-role',
37
- create_date: Time.new(2015, 1, 2, 9, 00, 00, '+00:00')
38
+ description: 'my-description',
39
+ create_date: Time.new(2015, 1, 2, 9, 00, 00, '+00:00'),
40
+ permissions_boundary: {
41
+ permissions_boundary_type: 'Policy',
42
+ permissions_boundary_arn: 'arn:aws:iam::123456789012:policy/my-permission-boundary'
43
+ },
44
+ role_last_used: {
45
+ region: 'us-east-1',
46
+ last_used_date: Time.new(2019, 11, 13, 17, 14, 00, '+00:00')
47
+ }
38
48
  }
39
49
  },
40
50
  get_role_policy: {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Awspec
4
- VERSION = '1.34.0'
4
+ VERSION = '1.35.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.34.0
4
+ version: 1.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW