awspec 0.55.0 → 0.56.0

Sign up to get free protection for your applications and to get access to all the features.
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