awspec 1.30.0 → 1.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -5
  3. data/.rubocop.yml +1 -0
  4. data/Rakefile +0 -1
  5. data/awspec.gemspec +3 -1
  6. data/doc/_resource_types/codebuild.md +14 -0
  7. data/doc/_resource_types/codedeploy.md +6 -0
  8. data/doc/_resource_types/codepipeline.md +7 -0
  9. data/doc/_resource_types/wafv2_ip_set.md +17 -0
  10. data/doc/resource_types.md +92 -32
  11. data/lib/awspec/command/generate.rb +12 -0
  12. data/lib/awspec/generator/doc/type/codepipeline.rb +19 -0
  13. data/lib/awspec/generator/doc/type/rds_db_cluster.rb +5 -5
  14. data/lib/awspec/generator/doc/type/rds_db_cluster_parameter_group.rb +2 -2
  15. data/lib/awspec/generator/doc/type/rds_db_parameter_group.rb +2 -2
  16. data/lib/awspec/generator/doc/type/rds_db_subnet_group.rb +3 -3
  17. data/lib/awspec/generator/doc/type/wafv2_ip_set.rb +19 -0
  18. data/lib/awspec/generator/spec/codepipeline.rb +29 -0
  19. data/lib/awspec/generator/spec/iam_group.rb +1 -1
  20. data/lib/awspec/generator/spec/iam_policy.rb +1 -1
  21. data/lib/awspec/generator/spec/iam_role.rb +1 -1
  22. data/lib/awspec/generator/spec/iam_user.rb +1 -1
  23. data/lib/awspec/generator/spec/rds_db_cluster.rb +1 -1
  24. data/lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb +1 -1
  25. data/lib/awspec/generator/spec/rds_db_parameter_group.rb +1 -1
  26. data/lib/awspec/generator/spec/wafv2_ip_set.rb +35 -0
  27. data/lib/awspec/generator.rb +2 -0
  28. data/lib/awspec/helper/finder/codebuild.rb +2 -4
  29. data/lib/awspec/helper/finder/codepipeline.rb +25 -0
  30. data/lib/awspec/helper/finder/vpc_endpoints.rb +3 -5
  31. data/lib/awspec/helper/finder/wafv2.rb +27 -0
  32. data/lib/awspec/helper/finder.rb +7 -1
  33. data/lib/awspec/helper/type.rb +1 -1
  34. data/lib/awspec/matcher/belong_to_subnet.rb +1 -1
  35. data/lib/awspec/shared_context.rb +6 -0
  36. data/lib/awspec/stub/cloudfront_distribution.rb +0 -2
  37. data/lib/awspec/stub/codebuild.rb +56 -0
  38. data/lib/awspec/stub/codepipeline.rb +104 -0
  39. data/lib/awspec/stub/wafv2_ip_set.rb +32 -0
  40. data/lib/awspec/type/codebuild.rb +3 -0
  41. data/lib/awspec/type/codepipeline.rb +13 -0
  42. data/lib/awspec/type/rds_db_cluster.rb +1 -1
  43. data/lib/awspec/type/rds_db_cluster_parameter_group.rb +1 -1
  44. data/lib/awspec/type/rds_db_parameter_group.rb +4 -4
  45. data/lib/awspec/type/rds_db_subnet_group.rb +1 -1
  46. data/lib/awspec/type/wafv2_ip_set.rb +23 -0
  47. data/lib/awspec/version.rb +2 -2
  48. metadata +44 -7
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Generator
4
+ module Doc
5
+ module Type
6
+ class Wafv2IpSet < Base
7
+ def initialize
8
+ super
9
+ @type_name = 'Wafv2IpSet'
10
+ @type = Awspec::Type::Wafv2IpSet.new('my-ip-set')
11
+ @ret = @type.resource_via_client
12
+ @matchers = []
13
+ @ignore_matchers = []
14
+ @describes = []
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Generator
4
+ module Spec
5
+ class Codepipeline
6
+ include Awspec::Helper::Finder
7
+ def generate_all
8
+ pipelines = select_all_codepipelines
9
+ raise 'Not Found CodePipeline' if pipelines.empty?
10
+
11
+ ERB.new(codepipeline_spec_template, nil, '-').result(binding).chomp
12
+ end
13
+
14
+ def codepipeline_spec_template
15
+ <<-'EOF'
16
+ <% pipelines.each do |pipeline| %>
17
+ describe codepipeline('<%= pipeline.name %>') do
18
+ it { should exist }
19
+ its(:name) { should eq '<%= pipeline.name %>' }
20
+ its(:version) { should eq <%= pipeline.version %> }
21
+ its(:pipeline_type) { should eq '<%= pipeline.pipeline_type %>' }
22
+ its(:execution_mode) { should eq '<%= pipeline.execution_mode %>' }
23
+ end
24
+ <% end %>
25
+ EOF
26
+ end
27
+ end
28
+ end
29
+ end
@@ -27,7 +27,7 @@ module Awspec::Generator
27
27
  describe iam_group('<%= group.group_name %>') do
28
28
  it { should exist }
29
29
  its(:arn) { should eq '<%= group.arn %>' }
30
- its(:create_date) { should eq Time.parse('<%= group.create_date %>') }
30
+ its(:create_date) { should eq Time.parse('<%= group.create_date.utc %>') }
31
31
  <% select_iam_policy_by_group_name(group.group_name).each do |policy| %> it { should have_iam_policy('<%= policy.policy_name %>') }
32
32
  <% end %>
33
33
  <%- inline_policies.each do |line| -%>
@@ -23,7 +23,7 @@ describe iam_policy('<%= policy.policy_name %>') do
23
23
  it { should_not be_attachable }
24
24
  <%- end -%>
25
25
  its(:arn) { should eq '<%= policy.arn %>' }
26
- its(:update_date) { should eq Time.parse('<%= policy.update_date %>') }
26
+ its(:update_date) { should eq Time.parse('<%= policy.update_date.utc %>') }
27
27
  its(:attachment_count) { should eq <%= policy.attachment_count %> }
28
28
  <%- users = select_attached_users(policy.arn) -%>
29
29
  <%- if users.empty? -%>
@@ -27,7 +27,7 @@ module Awspec::Generator
27
27
  describe iam_role('<%= role.role_name %>') do
28
28
  it { should exist }
29
29
  its(:arn) { should eq '<%= role.arn %>' }
30
- its(:create_date) { should eq Time.parse('<%= role.create_date %>') }
30
+ its(:create_date) { should eq Time.parse('<%= role.create_date.utc %>') }
31
31
  <% select_iam_policy_by_role_name(role.role_name).each do |policy| %> it { should have_iam_policy('<%= policy.policy_name %>') }
32
32
  <% end %>
33
33
  <%- inline_policies.each do |line| -%>
@@ -27,7 +27,7 @@ module Awspec::Generator
27
27
  describe iam_user('<%= user.user_name %>') do
28
28
  it { should exist }
29
29
  its(:arn) { should eq '<%= user.arn %>' }
30
- its(:create_date) { should eq Time.parse('<%= user.create_date %>') }
30
+ its(:create_date) { should eq Time.parse('<%= user.create_date.utc %>') }
31
31
  <% select_iam_policy_by_user_name(user.user_name).each do |policy| %> it { should have_iam_policy('<%= policy.policy_name %>') }
32
32
  <% end %>
33
33
  <%- inline_policies.each do |line| -%>
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Awspec::Generator
4
4
  module Spec
5
- class RdsDbCluster
5
+ class RdsDBCluster
6
6
  include Awspec::Helper::Finder
7
7
  def generate(db_cluster_identifier)
8
8
  cluster = find_db_cluster(db_cluster_identifier)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Awspec::Generator
4
4
  module Spec
5
- class RdsDbClusterParameterGroup
5
+ class RdsDBClusterParameterGroup
6
6
  include Awspec::Helper::Finder
7
7
  def generate_by_parameter_group(parameter_group)
8
8
  @parameter_group = parameter_group
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Awspec::Generator
4
4
  module Spec
5
- class RdsDbParameterGroup
5
+ class RdsDBParameterGroup
6
6
  include Awspec::Helper::Finder
7
7
  def generate_by_parameter_group(parameter_group)
8
8
  @parameter_group = parameter_group
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Generator
4
+ module Spec
5
+ class Wafv2IpSet
6
+ include Awspec::Helper::Finder
7
+ def generate_by_scope(scope)
8
+ ip_sets = select_all_ip_sets(scope)
9
+ raise 'Not Found WAFV2 IP sets' if ip_sets.empty?
10
+
11
+ specs = ip_sets.map do |i|
12
+ ip_set = get_ip_set(scope, i.name, i.id)
13
+ ERB.new(wafv2_ip_set_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
14
+ end
15
+ specs.join("\n")
16
+ end
17
+
18
+ def wafv2_ip_set_spec_template
19
+ <<-'EOF'
20
+ describe wafv2_ip_set('<%= ip_set.name %>'), scope: '<%= scope %>' do
21
+ it { should exist }
22
+ its(:name) { should eq '<%= ip_set.name %>' }
23
+ its(:id) { should eq '<%= ip_set.id %>' }
24
+ its(:arn) { should eq '<%= ip_set.arn %>' }
25
+ its(:description) { should eq '<%= ip_set.description %>' }
26
+ its(:ip_address_version) { should eq '<%= ip_set.ip_address_version %>' }
27
+ <% ip_set.addresses.each do |address| %>
28
+ it { should have_ip_address('<%= address %>') }
29
+ <% end %>
30
+ end
31
+ EOF
32
+ end
33
+ end
34
+ end
35
+ end
@@ -44,6 +44,8 @@ require 'awspec/generator/spec/rds_proxy'
44
44
  require 'awspec/generator/spec/rds_db_cluster'
45
45
  require 'awspec/generator/spec/rds_global_cluster'
46
46
  require 'awspec/generator/spec/managed_prefix_list'
47
+ require 'awspec/generator/spec/codepipeline'
48
+ require 'awspec/generator/spec/wafv2_ip_set'
47
49
 
48
50
  # Doc
49
51
  require 'awspec/generator/doc/type'
@@ -4,10 +4,8 @@ module Awspec::Helper
4
4
  module Finder
5
5
  module Codebuild
6
6
  def find_codebuild_project(id)
7
- projects = select_all_codebuild_projects.select do |project|
8
- project == id
9
- end
10
- projects.single_resource(id)
7
+ res = codebuild_client.batch_get_projects({ names: [id] })
8
+ res.projects.single_resource(id)
11
9
  end
12
10
 
13
11
  def select_all_codebuild_projects
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Helper
4
+ module Finder
5
+ module Codepipeline
6
+ def find_codepipeline(id)
7
+ res = codepipeline_client.get_pipeline({ name: id })
8
+ res.pipeline
9
+ end
10
+
11
+ def select_all_codepipelines
12
+ req = {}
13
+ pipelines = []
14
+ loop do
15
+ res = codepipeline_client.list_pipelines(req)
16
+ pipelines.push(*res.pipelines)
17
+ break if res.next_token.nil?
18
+
19
+ req[:next_token] = res.next_token
20
+ end
21
+ pipelines
22
+ end
23
+ end
24
+ end
25
+ end
@@ -4,17 +4,15 @@ module Awspec::Helper
4
4
  module Finder
5
5
  module VpcEndpoints
6
6
  def find_vpc_endpoint(id)
7
- res = ec2_client.describe_vpc_endpoints({
8
- filters: [{ name: 'vpc-endpoint-id', values: [id] }]
9
- })
7
+ res = ec2_client.describe_vpc_endpoints({ vpc_endpoint_ids: [id] })
10
8
 
11
9
  ret = res.vpc_endpoints.select do |vpce|
12
10
  vpce.vpc_endpoint_id == id
13
11
  end
14
12
 
15
13
  resource = ret.single_resource(id)
16
- return resource if resource
17
-
14
+ resource if resource
15
+ rescue Aws::EC2::Errors::InvalidVpcEndpointIdNotFound, Aws::EC2::Errors::InvalidVpcEndpointIdMalformed
18
16
  res = ec2_client.describe_vpc_endpoints({
19
17
  filters: [{ name: 'tag:Name', values: [id] }]
20
18
  })
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Helper
4
+ module Finder
5
+ module Wafv2
6
+ def find_ip_set(scope, name)
7
+ ip_sets = select_all_ip_sets(scope)
8
+ ip_set = ip_sets.find do |i|
9
+ i.name == name
10
+ end
11
+ return false unless ip_set
12
+
13
+ get_ip_set(scope, name, ip_set.id)
14
+ end
15
+
16
+ def select_all_ip_sets(scope)
17
+ res = wafv2_client.list_ip_sets({ scope: scope })
18
+ res.ip_sets
19
+ end
20
+
21
+ def get_ip_set(scope, name, id)
22
+ res = wafv2_client.get_ip_set({ name: name, scope: scope, id: id })
23
+ res.ip_set
24
+ end
25
+ end
26
+ end
27
+ end
@@ -55,6 +55,8 @@ require 'awspec/helper/finder/cognito_user_pool'
55
55
  require 'awspec/helper/finder/msk'
56
56
  require 'awspec/helper/finder/cognito_identity_pool'
57
57
  require 'awspec/helper/finder/transfer'
58
+ require 'awspec/helper/finder/codepipeline'
59
+ require 'awspec/helper/finder/wafv2'
58
60
 
59
61
  require 'awspec/helper/finder/account_attributes'
60
62
 
@@ -117,6 +119,8 @@ module Awspec::Helper
117
119
  include Awspec::Helper::Finder::Msk
118
120
  include Awspec::Helper::Finder::CognitoIdentityPool
119
121
  include Awspec::Helper::Finder::Transfer
122
+ include Awspec::Helper::Finder::Codepipeline
123
+ include Awspec::Helper::Finder::Wafv2
120
124
 
121
125
  CLIENTS = {
122
126
  ec2_client: Aws::EC2::Client,
@@ -165,7 +169,9 @@ module Awspec::Helper
165
169
  msk_client: Aws::Kafka::Client,
166
170
  cognito_identity_client: Aws::CognitoIdentity::Client,
167
171
  cognito_identity_provider_client: Aws::CognitoIdentityProvider::Client,
168
- transfer_client: Aws::Transfer::Client
172
+ transfer_client: Aws::Transfer::Client,
173
+ codepipeline_client: Aws::CodePipeline::Client,
174
+ wafv2_client: Aws::WAFV2::Client
169
175
  }
170
176
 
171
177
  CLIENT_OPTIONS = {
@@ -24,7 +24,7 @@ module Awspec
24
24
  internet_gateway acm cloudwatch_logs dynamodb_table eip sqs ssm_parameter cloudformation_stack
25
25
  codebuild sns_topic redshift redshift_cluster_parameter_group codedeploy codedeploy_deployment_group
26
26
  secretsmanager msk transit_gateway cognito_identity_pool cognito_user_pool vpc_endpoints
27
- transfer_server managed_prefix_list
27
+ transfer_server managed_prefix_list codepipeline wafv2_ip_set
28
28
  ]
29
29
 
30
30
  ACCOUNT_ATTRIBUTES = %w[
@@ -34,7 +34,7 @@ RSpec::Matchers.define :belong_to_subnet do |subnet_id|
34
34
  end
35
35
 
36
36
  # RDS DB Subnet Group
37
- if type.instance_of?(Awspec::Type::RdsDbSubnetGroup)
37
+ if type.instance_of?(Awspec::Type::RdsDBSubnetGroup)
38
38
  subnets = type.resource_via_client[:subnets]
39
39
  ret = subnets.find do |s|
40
40
  s[:subnet_identifier] == subnet_id
@@ -38,3 +38,9 @@ shared_context 'application_name', :application_name do
38
38
  example.metadata[:described_class].application_name = example.metadata[:application_name]
39
39
  end
40
40
  end
41
+
42
+ shared_context 'scope', :scope do
43
+ before do |example|
44
+ example.metadata[:described_class].scope = example.metadata[:scope]
45
+ end
46
+ end
@@ -17,7 +17,6 @@ Aws.config[:cloudfront] = {
17
17
  status: 'Deployed',
18
18
  last_modified_time: Time.new(2015, 1, 2, 10, 00, 00, '+00:00'),
19
19
  domain_name: 'abcdefghijklmn.cloudfront.net',
20
- staging: false,
21
20
  aliases: {
22
21
  quantity: 0,
23
22
  items: []
@@ -117,7 +116,6 @@ Aws.config[:cloudfront] = {
117
116
  status: 'Deployed',
118
117
  last_modified_time: Time.new(2016, 3, 2, 10, 00, 00, '+00:00'),
119
118
  domain_name: '123456789zyxw.cloudfront.net',
120
- staging: false,
121
119
  aliases: {
122
120
  quantity: 1,
123
121
  items: ['cf-s3-origin-hosting.dev.example.com']
@@ -2,6 +2,62 @@
2
2
 
3
3
  Aws.config[:codebuild] = {
4
4
  stub_responses: {
5
+ batch_get_projects: {
6
+ projects: [
7
+ {
8
+ name: 'my-codebuild1',
9
+ arn: 'arn:aws:codebuild:ap-northeast-1:123456789012:project/my-codebuild1',
10
+ source: {
11
+ type: 'S3',
12
+ location: 'example-bucket/test.zip',
13
+ insecure_ssl: false
14
+ },
15
+ secondary_sources: [],
16
+ secondary_source_versions: [],
17
+ artifacts: {
18
+ type: 'NO_ARTIFACTS'
19
+ },
20
+ secondary_artifacts: [],
21
+ cache: {
22
+ type: 'NO_CACHE'
23
+ },
24
+ environment: {
25
+ type: 'LINUX_CONTAINER',
26
+ image: 'aws/codebuild/amazonlinux2-x86_64-standard:5.0',
27
+ compute_type: 'BUILD_GENERAL1_SMALL',
28
+ environment_variables: [],
29
+ privileged_mode: false,
30
+ image_pull_credentials_type: 'CODEBUILD'
31
+ },
32
+ service_role: 'arn:aws:iam::123456789012:role/service-role/codebuild-my-codebuild1-service-role',
33
+ timeout_in_minutes: 60,
34
+ queued_timeout_in_minutes: 480,
35
+ encryption_key: 'arn:aws:kms:ap-northeast-1:123456789012:alias/aws/s3',
36
+ tags: [
37
+ {
38
+ key: 'env',
39
+ value: 'dev'
40
+ }
41
+ ],
42
+ created: Time.local(2024),
43
+ last_modified: Time.local(2024),
44
+ badge: {
45
+ badge_enabled: false
46
+ },
47
+ logs_config: {
48
+ cloud_watch_logs: {
49
+ status: 'ENABLED'
50
+ },
51
+ s3_logs: {
52
+ status: 'DISABLED',
53
+ encryption_disabled: false
54
+ }
55
+ },
56
+ project_visibility: 'PRIVATE'
57
+ }
58
+ ],
59
+ projects_not_found: []
60
+ },
5
61
  list_projects: {
6
62
  projects: %w[
7
63
  my-codebuild1
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ Aws.config[:codepipeline] = {
4
+ stub_responses: {
5
+ get_pipeline: {
6
+ pipeline: {
7
+ name: 'my-codepipeline',
8
+ role_arn: 'arn:aws:iam::123456789012:role/service-role/AWSCodePipelineServiceRole-my-codepipeline',
9
+ artifact_store: {
10
+ type: 'S3',
11
+ location: 'codepipeline-ap-northeast-1-12345678901'
12
+ },
13
+ stages: [
14
+ {
15
+ name: 'Source',
16
+ actions: [
17
+ {
18
+ name: 'Source',
19
+ action_type_id: {
20
+ category: 'Source',
21
+ owner: 'AWS',
22
+ provider: 'S3',
23
+ version: '1'
24
+ },
25
+ run_order: 1,
26
+ configuration: {
27
+ 'PollForSourceChanges' => 'false',
28
+ 'S3Bucket' => 'example-bucket',
29
+ 'S3ObjectKey' => 'test.zip'
30
+ },
31
+ output_artifacts: [
32
+ {
33
+ name: 'SourceArtifact'
34
+ }
35
+ ],
36
+ input_artifacts: [],
37
+ region: 'ap-northeast-1',
38
+ namespace: 'SourceVariables'
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ name: 'Build',
44
+ actions: [
45
+ {
46
+ name: 'Build',
47
+ action_type_id: {
48
+ category: 'Build',
49
+ owner: 'AWS',
50
+ provider: 'CodeBuild',
51
+ version: '1'
52
+ },
53
+ run_order: 1,
54
+ configuration: {
55
+ 'ProjectName' => 'my-codebuild1'
56
+ },
57
+ output_artifacts: [
58
+ {
59
+ name: 'BuildArtifact'
60
+ }
61
+ ],
62
+ input_artifacts: [
63
+ {
64
+ name: 'SourceArtifact'
65
+ }
66
+ ],
67
+ region: 'ap-northeast-1',
68
+ namespace: 'BuildVariables'
69
+ }
70
+ ]
71
+ }
72
+ ],
73
+ version: 1,
74
+ execution_mode: 'QUEUED',
75
+ pipeline_type: 'V2'
76
+ },
77
+ metadata: {
78
+ pipeline_arn: 'arn:aws:codepipeline:ap-northeast-1:123456789012:my-codepipeline',
79
+ created: Time.local(2024),
80
+ updated: Time.local(2024)
81
+ }
82
+ },
83
+ list_pipelines: {
84
+ pipelines: [
85
+ {
86
+ name: 'my-codepipeline1',
87
+ version: 1,
88
+ pipeline_type: 'V2',
89
+ execution_mode: 'QUEUED',
90
+ created: Time.local(2024),
91
+ updated: Time.local(2024)
92
+ },
93
+ {
94
+ name: 'my-codepipeline2',
95
+ version: 1,
96
+ pipeline_type: 'V2',
97
+ execution_mode: 'QUEUED',
98
+ created: Time.local(2024),
99
+ updated: Time.local(2024)
100
+ }
101
+ ]
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ Aws.config[:wafv2] = {
4
+ stub_responses: {
5
+ get_ip_set: {
6
+ ip_set: {
7
+ name: 'my-ip-set',
8
+ id: '01234567-89ab-cdef-0123-456789abcdef',
9
+ arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/ipset/my-ip-set/01234567-89ab-cdef-0123-456789abcdef',
10
+ description: 'dev ips',
11
+ ip_address_version: 'IPV4',
12
+ addresses: [
13
+ '10.0.0.0/32',
14
+ '10.0.0.1/32'
15
+ ]
16
+ },
17
+ lock_token: '01234567-89ab-cdef-0123456789abcdef0'
18
+ },
19
+ list_ip_sets: {
20
+ next_marker: 'my-ip-set',
21
+ ip_sets: [
22
+ {
23
+ name: 'my-ip-set',
24
+ id: '01234567-89ab-cdef-0123-456789abcdef',
25
+ description: 'dev ips',
26
+ lock_token: '01234567-89ab-cdef-0123456789abcdef0',
27
+ arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/ipset/my-ip-set/01234567-89ab-cdef-0123-456789abcdef'
28
+ }
29
+ ]
30
+ }
31
+ }
32
+ }
@@ -2,6 +2,9 @@
2
2
 
3
3
  module Awspec::Type
4
4
  class Codebuild < ResourceBase
5
+ aws_resource Aws::CodeBuild::Types::Project
6
+ tags_allowed
7
+
5
8
  def resource_via_client
6
9
  @resource_via_client ||= find_codebuild_project(@display_name)
7
10
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Type
4
+ class Codepipeline < ResourceBase
5
+ def resource_via_client
6
+ @resource_via_client ||= find_codepipeline(@display_name)
7
+ end
8
+
9
+ def id
10
+ @id ||= resource_via_client if resource_via_client.name
11
+ end
12
+ end
13
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Awspec::Type
4
- class RdsDbCluster < ResourceBase
4
+ class RdsDBCluster < ResourceBase
5
5
  aws_resource Aws::RDS::Types::DBCluster
6
6
 
7
7
  def resource_via_client
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Awspec::Type
4
- class RdsDbClusterParameterGroup < ResourceBase
4
+ class RdsDBClusterParameterGroup < ResourceBase
5
5
  def resource_via_client
6
6
  return @resource_via_client if @resource_via_client
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Awspec::Type
4
- class InvalidRdsDbParameter < StandardError
4
+ class InvalidRdsDBParameter < StandardError
5
5
  ##
6
6
  # Overrides the superclass initialize method to include more information
7
7
  # and default error message.
@@ -19,7 +19,7 @@ module Awspec::Type
19
19
  ##
20
20
  # Thanks to AWS for creating parameters names like
21
21
  # 'rds.accepted_password_auth_method', which would be caught as method 'rds'
22
- # by method_missing in RdsDbParameterGroup class, this class was created
22
+ # by method_missing in RdsDBParameterGroup class, this class was created
23
23
  # See https://github.com/k1LoW/awspec/issues/527 for more details
24
24
  def initialize(params)
25
25
  @params = params
@@ -33,11 +33,11 @@ module Awspec::Type
33
33
  param_name = name.to_sym
34
34
  return @params[param_name] if @params.include?(param_name)
35
35
 
36
- raise InvalidRdsDbParameter, name
36
+ raise InvalidRdsDBParameter, name
37
37
  end
38
38
  end
39
39
 
40
- class RdsDbParameterGroup < ResourceBase
40
+ class RdsDBParameterGroup < ResourceBase
41
41
  def resource_via_client
42
42
  return @resource_via_client if @resource_via_client
43
43
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Awspec::Type
4
- class RdsDbSubnetGroup < ResourceBase
4
+ class RdsDBSubnetGroup < ResourceBase
5
5
  aws_resource Aws::RDS::Types::DBSubnetGroup
6
6
 
7
7
  def resource_via_client
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Type
4
+ class Wafv2IpSet < ResourceBase
5
+ attr_accessor :scope
6
+
7
+ def resource_via_client
8
+ @resource_via_client ||= find_ip_set(scope, @display_name)
9
+ end
10
+
11
+ def id
12
+ @id ||= resource_via_client.id if resource_via_client
13
+ end
14
+
15
+ def scope
16
+ @scope || 'REGIONAL'
17
+ end
18
+
19
+ def has_ip_address?(ip_address)
20
+ resource_via_client.addresses.include?(ip_address)
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Awspec
4
- VERSION = '1.30.0'
5
- end
4
+ VERSION = '1.32.0'
5
+ end