awspec 0.55.0 → 0.56.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/awspec.rb +1 -0
  3. data/lib/awspec/generator/template.rb +6 -3
  4. data/lib/awspec/shared_context.rb +11 -0
  5. data/lib/awspec/type/ami.rb +7 -5
  6. data/lib/awspec/type/autoscaling_group.rb +8 -6
  7. data/lib/awspec/type/base.rb +15 -7
  8. data/lib/awspec/type/cloudfront_distribution.rb +8 -6
  9. data/lib/awspec/type/cloudtrail.rb +10 -8
  10. data/lib/awspec/type/cloudwatch_alarm.rb +9 -7
  11. data/lib/awspec/type/cloudwatch_event.rb +8 -6
  12. data/lib/awspec/type/directconnect_virtual_interface.rb +11 -4
  13. data/lib/awspec/type/ebs.rb +14 -7
  14. data/lib/awspec/type/ec2.rb +20 -13
  15. data/lib/awspec/type/elasticache.rb +13 -6
  16. data/lib/awspec/type/elasticache_cache_parameter_group.rb +15 -8
  17. data/lib/awspec/type/elasticsearch.rb +9 -7
  18. data/lib/awspec/type/elastictranscoder_pipeline.rb +7 -5
  19. data/lib/awspec/type/elb.rb +11 -9
  20. data/lib/awspec/type/iam_group.rb +8 -6
  21. data/lib/awspec/type/iam_policy.rb +8 -6
  22. data/lib/awspec/type/iam_role.rb +8 -6
  23. data/lib/awspec/type/iam_user.rb +8 -6
  24. data/lib/awspec/type/kms.rb +8 -6
  25. data/lib/awspec/type/lambda.rb +8 -6
  26. data/lib/awspec/type/launch_configuration.rb +7 -5
  27. data/lib/awspec/type/nat_gateway.rb +8 -6
  28. data/lib/awspec/type/network_acl.rb +10 -8
  29. data/lib/awspec/type/network_interface.rb +14 -12
  30. data/lib/awspec/type/rds.rb +14 -12
  31. data/lib/awspec/type/rds_db_cluster_parameter_group.rb +13 -9
  32. data/lib/awspec/type/rds_db_parameter_group.rb +13 -9
  33. data/lib/awspec/type/route53_hosted_zone.rb +11 -7
  34. data/lib/awspec/type/route_table.rb +8 -6
  35. data/lib/awspec/type/s3_bucket.rb +15 -13
  36. data/lib/awspec/type/security_group.rb +14 -13
  37. data/lib/awspec/type/ses_identity.rb +15 -13
  38. data/lib/awspec/type/subnet.rb +7 -5
  39. data/lib/awspec/type/vpc.rb +13 -11
  40. data/lib/awspec/type/waf_web_acl.rb +8 -6
  41. data/lib/awspec/version.rb +1 -1
  42. metadata +3 -2
@@ -1,9 +1,11 @@
1
1
  module Awspec::Type
2
2
  class NetworkInterface < Base
3
- def initialize(id)
4
- super
5
- @resource_via_client = find_network_interface(id)
6
- @id = @resource_via_client.network_interface_id if @resource_via_client
3
+ def resource_via_client
4
+ @resource_via_client ||= find_network_interface(@display_name)
5
+ end
6
+
7
+ def id
8
+ @id ||= resource_via_client.network_interface_id if resource_via_client
7
9
  end
8
10
 
9
11
  STATES = %w(
@@ -12,28 +14,28 @@ module Awspec::Type
12
14
 
13
15
  STATES.each do |state|
14
16
  define_method state.tr('-', '_') + '?' do
15
- @resource_via_client.status == state
17
+ resource_via_client.status == state
16
18
  end
17
19
  end
18
20
 
19
21
  def attached_to?(instance_id, device_index = 0)
20
22
  instance = find_ec2(instance_id)
21
23
  return false unless instance
22
- return false unless @resource_via_client.attachment
23
- @resource_via_client.attachment.instance_id == instance.instance_id && \
24
- @resource_via_client.attachment.status == 'attached' && \
25
- @resource_via_client.attachment.device_index == device_index
24
+ return false unless resource_via_client.attachment
25
+ resource_via_client.attachment.instance_id == instance.instance_id && \
26
+ resource_via_client.attachment.status == 'attached' && \
27
+ resource_via_client.attachment.device_index == device_index
26
28
  end
27
29
 
28
30
  def has_private_ip_address?(ip_address, primary = nil)
29
- @resource_via_client.private_ip_addresses.find do |i|
31
+ resource_via_client.private_ip_addresses.find do |i|
30
32
  next false if !primary.nil? && i.primary != primary
31
33
  i.private_ip_address == ip_address
32
34
  end
33
35
  end
34
36
 
35
37
  def has_security_group?(sg_id)
36
- sgs = @resource_via_client.groups
38
+ sgs = resource_via_client.groups
37
39
  ret = sgs.find do |sg|
38
40
  sg.group_id == sg_id || sg.group_name == sg_id
39
41
  end
@@ -46,7 +48,7 @@ module Awspec::Type
46
48
  end
47
49
 
48
50
  def private_ip_addresses_count
49
- @resource_via_client.private_ip_addresses.count
51
+ resource_via_client.private_ip_addresses.count
50
52
  end
51
53
  end
52
54
  end
@@ -2,10 +2,12 @@ module Awspec::Type
2
2
  class Rds < Base
3
3
  aws_resource Aws::RDS::DBInstance
4
4
 
5
- def initialize(id)
6
- super
7
- @resource_via_client = find_rds(id)
8
- @id = @resource_via_client.db_instance_identifier if @resource_via_client
5
+ def resource_via_client
6
+ @resource_via_client ||= find_rds(@display_name)
7
+ end
8
+
9
+ def id
10
+ @id ||= resource_via_client.db_instance_identifier if resource_via_client
9
11
  end
10
12
 
11
13
  STATES = %w(
@@ -20,12 +22,12 @@ module Awspec::Type
20
22
 
21
23
  STATES.each do |state|
22
24
  define_method state.tr('-', '_') + '?' do
23
- @resource_via_client.db_instance_status == state
25
+ resource_via_client.db_instance_status == state
24
26
  end
25
27
  end
26
28
 
27
29
  def vpc_id
28
- @resource_via_client.db_subnet_group.vpc_id
30
+ resource_via_client.db_subnet_group.vpc_id
29
31
  end
30
32
 
31
33
  def has_security_group?(sg_id)
@@ -36,14 +38,14 @@ module Awspec::Type
36
38
  end
37
39
 
38
40
  def has_db_parameter_group?(name)
39
- pgs = @resource_via_client.db_parameter_groups
41
+ pgs = resource_via_client.db_parameter_groups
40
42
  pgs.find do |pg|
41
43
  pg.db_parameter_group_name == name
42
44
  end
43
45
  end
44
46
 
45
47
  def has_option_group?(name)
46
- ogs = @resource_via_client.option_group_memberships
48
+ ogs = resource_via_client.option_group_memberships
47
49
  ogs.find do |og|
48
50
  og.option_group_name == name
49
51
  end
@@ -52,14 +54,14 @@ module Awspec::Type
52
54
  private
53
55
 
54
56
  def has_vpc_security_group_id?(sg_id)
55
- sgs = @resource_via_client.vpc_security_groups
57
+ sgs = resource_via_client.vpc_security_groups
56
58
  sgs.find do |sg|
57
59
  sg.vpc_security_group_id == sg_id
58
60
  end
59
61
  end
60
62
 
61
63
  def has_vpc_security_group_name?(sg_id)
62
- sgs = @resource_via_client.vpc_security_groups
64
+ sgs = resource_via_client.vpc_security_groups
63
65
  res = ec2_client.describe_security_groups({
64
66
  filters: [{ name: 'group-name', values: [sg_id] }]
65
67
  })
@@ -70,7 +72,7 @@ module Awspec::Type
70
72
  end
71
73
 
72
74
  def has_vpc_security_group_tag_name?(sg_id)
73
- sgs = @resource_via_client.vpc_security_groups
75
+ sgs = resource_via_client.vpc_security_groups
74
76
  res = ec2_client.describe_security_groups({
75
77
  filters: [{ name: 'tag:Name', values: [sg_id] }]
76
78
  })
@@ -81,7 +83,7 @@ module Awspec::Type
81
83
  end
82
84
 
83
85
  def has_db_security_group_name?(sg_id)
84
- sgs = @resource_via_client.db_security_groups
86
+ sgs = resource_via_client.db_security_groups
85
87
  sgs.find do |sg|
86
88
  sg.db_security_group_name == sg_id
87
89
  end
@@ -1,27 +1,31 @@
1
1
  module Awspec::Type
2
2
  class RdsDbClusterParameterGroup < Base
3
- def initialize(name)
4
- super
5
- @parameters = {}
3
+ def resource_via_client
4
+ return @resource_via_client if @resource_via_client
5
+
6
+ parameters = {}
6
7
  res = rds_client.describe_db_cluster_parameters({
7
- db_cluster_parameter_group_name: name
8
+ db_cluster_parameter_group_name: @display_name
8
9
  })
9
10
 
10
11
  loop do
11
12
  res.parameters.each do |param|
12
- @parameters[param.parameter_name] = param.parameter_value
13
+ parameters[param.parameter_name] = param.parameter_value
13
14
  end
14
15
  (res.respond_to?(:next_page?) && res.next_page? && res = res.next_page) || break
15
16
  end
16
17
 
17
- @id = name unless @parameters.empty?
18
- @resource_via_client = @parameters
18
+ @resource_via_client ||= parameters
19
+ end
20
+
21
+ def id
22
+ @id ||= @display_name unless resource_via_client.empty?
19
23
  end
20
24
 
21
25
  def method_missing(name)
22
26
  param_name = name.to_s
23
- if @parameters.include?(param_name)
24
- @parameters[param_name].to_s
27
+ if resource_via_client.include?(param_name)
28
+ resource_via_client[param_name].to_s
25
29
  else
26
30
  super
27
31
  end
@@ -1,27 +1,31 @@
1
1
  module Awspec::Type
2
2
  class RdsDbParameterGroup < Base
3
- def initialize(name)
4
- super
5
- @parameters = {}
3
+ def resource_via_client
4
+ return @resource_via_client if @resource_via_client
5
+
6
+ parameters = {}
6
7
  res = rds_client.describe_db_parameters({
7
- db_parameter_group_name: name
8
+ db_parameter_group_name: @display_name
8
9
  })
9
10
 
10
11
  loop do
11
12
  res.parameters.each do |param|
12
- @parameters[param.parameter_name] = param.parameter_value
13
+ parameters[param.parameter_name] = param.parameter_value
13
14
  end
14
15
  (res.next_page? && res = res.next_page) || break
15
16
  end
16
17
 
17
- @id = name unless @parameters.empty?
18
- @resource_via_client = @parameters
18
+ @resource_via_client ||= parameters
19
+ end
20
+
21
+ def id
22
+ @id ||= @display_name unless resource_via_client.empty?
19
23
  end
20
24
 
21
25
  def method_missing(name)
22
26
  param_name = name.to_s
23
- if @parameters.include?(param_name)
24
- @parameters[param_name].to_s
27
+ if resource_via_client.include?(param_name)
28
+ resource_via_client[param_name].to_s
25
29
  else
26
30
  super
27
31
  end
@@ -1,16 +1,20 @@
1
1
  module Awspec::Type
2
2
  class Route53HostedZone < Base
3
- def initialize(id)
4
- super
5
- @resource_via_client = find_hosted_zone(id)
6
- @id = @resource_via_client.id if @resource_via_client
7
- return unless @id
8
- @resource_via_client_record_sets = select_record_sets_by_hosted_zone_id(@id)
3
+ def resource_via_client
4
+ @resource_via_client ||= find_hosted_zone(@display_name)
5
+ end
6
+
7
+ def id
8
+ @id ||= resource_via_client.id if resource_via_client
9
+ end
10
+
11
+ def resource_via_client_record_sets
12
+ @resource_via_client_record_sets ||= select_record_sets_by_hosted_zone_id(id)
9
13
  end
10
14
 
11
15
  def has_record_set?(name, type, value, options = {})
12
16
  name.gsub!(/\*/, '\\\052') # wildcard support
13
- ret = @resource_via_client_record_sets.find do |record_set|
17
+ ret = resource_via_client_record_sets.find do |record_set|
14
18
  # next if record_set.type != type.upcase
15
19
  next unless record_set.type.casecmp(type) == 0
16
20
  options[:ttl] = record_set[:ttl] unless options[:ttl]
@@ -3,10 +3,12 @@ module Awspec::Type
3
3
  aws_resource Aws::EC2::RouteTable
4
4
  tags_allowed
5
5
 
6
- def initialize(id)
7
- super
8
- @resource_via_client = find_route_table(id)
9
- @id = @resource_via_client.route_table_id if @resource_via_client
6
+ def resource_via_client
7
+ @resource_via_client ||= find_route_table(@display_name)
8
+ end
9
+
10
+ def id
11
+ @id ||= resource_via_client.route_table_id if resource_via_client
10
12
  end
11
13
 
12
14
  def has_route?(destination,
@@ -14,7 +16,7 @@ module Awspec::Type
14
16
  instance_id = nil,
15
17
  vpc_peering_connection_id = nil,
16
18
  nat_gateway_id = nil)
17
- @resource_via_client.routes.find do |route|
19
+ resource_via_client.routes.find do |route|
18
20
  if destination
19
21
  next false unless route.destination_cidr_block == destination
20
22
  end
@@ -28,7 +30,7 @@ module Awspec::Type
28
30
  def has_subnet?(subnet_id)
29
31
  subnet = find_subnet(subnet_id)
30
32
  return false unless subnet
31
- @resource_via_client.associations.find do |a|
33
+ resource_via_client.associations.find do |a|
32
34
  a.subnet_id == subnet.subnet_id
33
35
  end
34
36
  end
@@ -2,15 +2,17 @@ module Awspec::Type
2
2
  class S3Bucket < Base
3
3
  aws_resource Aws::S3::Bucket
4
4
 
5
- def initialize(id)
6
- super
7
- @resource_via_client = find_bucket(id)
8
- @id = id if @resource_via_client
5
+ def resource_via_client
6
+ @resource_via_client ||= find_bucket(@display_name)
7
+ end
8
+
9
+ def id
10
+ @id ||= @display_name if resource_via_client
9
11
  end
10
12
 
11
13
  def has_object?(key)
12
14
  res = s3_client.head_object({
13
- bucket: @id,
15
+ bucket: id,
14
16
  key: key.sub(%r(\A/), '')
15
17
  })
16
18
  res
@@ -19,7 +21,7 @@ module Awspec::Type
19
21
  end
20
22
 
21
23
  def has_acl_grant?(grantee:, permission:)
22
- @acl = find_bucket_acl(@id)
24
+ @acl = find_bucket_acl(id)
23
25
  @acl.grants.find do |grant|
24
26
  grant.permission == permission &&
25
27
  (grant.grantee.display_name == grantee || grant.grantee.uri == grantee || grant.grantee.id == grantee)
@@ -27,12 +29,12 @@ module Awspec::Type
27
29
  end
28
30
 
29
31
  def acl_owner
30
- @acl = find_bucket_acl(@id)
32
+ @acl = find_bucket_acl(id)
31
33
  @acl.owner.display_name
32
34
  end
33
35
 
34
36
  def acl_grants_count
35
- @acl = find_bucket_acl(@id)
37
+ @acl = find_bucket_acl(id)
36
38
  @acl.grants.count
37
39
  end
38
40
 
@@ -55,7 +57,7 @@ module Awspec::Type
55
57
  end
56
58
 
57
59
  def has_policy?(policy)
58
- bp = find_bucket_policy(@id)
60
+ bp = find_bucket_policy(id)
59
61
  if bp
60
62
  JSON.parse(bp.policy.read, array_class: Set) == JSON.parse(policy, array_class: Set)
61
63
  else
@@ -64,7 +66,7 @@ module Awspec::Type
64
66
  end
65
67
 
66
68
  def has_logging_enabled?(target_bucket: nil, target_prefix: nil)
67
- bl = find_bucket_logging(@id)
69
+ bl = find_bucket_logging(id)
68
70
  le = bl ? bl.logging_enabled : nil
69
71
 
70
72
  return false if le.nil?
@@ -74,19 +76,19 @@ module Awspec::Type
74
76
  end
75
77
 
76
78
  def has_versioning_enabled?
77
- bv = find_bucket_versioning(@id)
79
+ bv = find_bucket_versioning(id)
78
80
  bv ? (bv.status == 'Enabled') : false
79
81
  end
80
82
 
81
83
  def has_mfa_delete_enabled?
82
- bv = find_bucket_versioning(@id)
84
+ bv = find_bucket_versioning(id)
83
85
  bv ? (bv.mfa_delete == 'Enabled') : false
84
86
  end
85
87
 
86
88
  private
87
89
 
88
90
  def cors_rules
89
- cors = find_bucket_cors(@id)
91
+ cors = find_bucket_cors(id)
90
92
  cors ? cors.cors_rules : []
91
93
  end
92
94
  end
@@ -3,11 +3,12 @@ module Awspec::Type
3
3
  aws_resource Aws::EC2::SecurityGroup
4
4
  tags_allowed
5
5
 
6
- def initialize(id)
7
- super
8
- @inbound = true
9
- @resource_via_client = find_security_group(id)
10
- @id = @resource_via_client.group_id if @resource_via_client
6
+ def resource_via_client
7
+ @resource_via_client ||= find_security_group(@display_name)
8
+ end
9
+
10
+ def id
11
+ @id ||= resource_via_client.group_id if resource_via_client
11
12
  end
12
13
 
13
14
  def opened?(port = nil, protocol = nil, cidr = nil)
@@ -21,13 +22,13 @@ module Awspec::Type
21
22
  end
22
23
 
23
24
  def inbound_opened?(port = nil, protocol = nil, cidr = nil)
24
- @resource_via_client.ip_permissions.find do |permission|
25
+ resource_via_client.ip_permissions.find do |permission|
25
26
  cidr_opened?(permission, cidr) && protocol_opened?(permission, protocol) && port_opened?(permission, port)
26
27
  end
27
28
  end
28
29
 
29
30
  def inbound_opened_only?(port = nil, protocol = nil, cidr = nil)
30
- permissions = @resource_via_client.ip_permissions.select do |permission|
31
+ permissions = resource_via_client.ip_permissions.select do |permission|
31
32
  protocol_opened?(permission, protocol) && port_opened?(permission, port)
32
33
  end
33
34
  cidrs = []
@@ -38,13 +39,13 @@ module Awspec::Type
38
39
  end
39
40
 
40
41
  def outbound_opened?(port = nil, protocol = nil, cidr = nil)
41
- @resource_via_client.ip_permissions_egress.find do |permission|
42
+ resource_via_client.ip_permissions_egress.find do |permission|
42
43
  cidr_opened?(permission, cidr) && protocol_opened?(permission, protocol) && port_opened?(permission, port)
43
44
  end
44
45
  end
45
46
 
46
47
  def outbound_opened_only?(port = nil, protocol = nil, cidr = nil)
47
- permissions = @resource_via_client.ip_permissions_egress.select do |permission|
48
+ permissions = resource_via_client.ip_permissions_egress.select do |permission|
48
49
  protocol_opened?(permission, protocol) && port_opened?(permission, port)
49
50
  end
50
51
  cidrs = []
@@ -65,23 +66,23 @@ module Awspec::Type
65
66
  end
66
67
 
67
68
  def ip_permissions_count
68
- @resource_via_client.ip_permissions.count
69
+ resource_via_client.ip_permissions.count
69
70
  end
70
71
  alias_method :inbound_permissions_count, :ip_permissions_count
71
72
 
72
73
  def ip_permissions_egress_count
73
- @resource_via_client.ip_permissions_egress.count
74
+ resource_via_client.ip_permissions_egress.count
74
75
  end
75
76
  alias_method :outbound_permissions_count, :ip_permissions_egress_count
76
77
 
77
78
  def inbound_rule_count
78
- @resource_via_client.ip_permissions.reduce(0) do |sum, permission|
79
+ resource_via_client.ip_permissions.reduce(0) do |sum, permission|
79
80
  sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
80
81
  end
81
82
  end
82
83
 
83
84
  def outbound_rule_count
84
- @resource_via_client.ip_permissions_egress.reduce(0) do |sum, permission|
85
+ resource_via_client.ip_permissions_egress.reduce(0) do |sum, permission|
85
86
  sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
86
87
  end
87
88
  end