awspec 1.2.0 → 1.3.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.
@@ -0,0 +1,187 @@
1
+ # rubocop:disable Metrics/LineLength
2
+ Aws.config[:elasticloadbalancingv2] = {
3
+ stub_responses: {
4
+ describe_load_balancers: {
5
+ load_balancers: [
6
+ {
7
+ load_balancer_arn:
8
+ 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:loadbalancer/app/my-nlb/1aa1bb1cc1ddee11',
9
+ dns_name:
10
+ 'internal-my-nlb-1551266724.ap-northeast-1.elb.amazonaws.com',
11
+ canonical_hosted_zone_id: 'A12BCDEDCBA34BC',
12
+ created_time: Time.new(2017, 4, 4, 9, 00, 00, '+00:00'),
13
+ load_balancer_name: 'my-nlb',
14
+ # scheme: 'internal',
15
+ scheme: 'internet-facing',
16
+ vpc_id: 'vpc-ab123cde',
17
+ state:
18
+ {
19
+ code: 'active',
20
+ reason: nil
21
+ },
22
+ type: 'network',
23
+ availability_zones:
24
+ [
25
+ {
26
+ zone_name: 'ap-northeast-1a',
27
+ subnet_id: 'subnet-1234a567'
28
+ },
29
+ {
30
+ zone_name: 'ap-northeast-1c',
31
+ subnet_id: 'subnet-abcd7890'
32
+ }
33
+ ],
34
+ ip_address_type: 'ipv4'
35
+ }
36
+ ],
37
+ next_marker: nil
38
+ },
39
+ describe_listeners: {
40
+ listeners: [
41
+ {
42
+ default_actions: [
43
+ {
44
+ target_group_arn: 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:targetgroup/my-targets/73e2d6bc24d8a067',
45
+ type: 'forward'
46
+ }
47
+ ],
48
+ listener_arn: 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:listener/app/my-nlb/1aa1bb1cc1ddee11/f2f7dc8efc522ab2',
49
+ load_balancer_arn: 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:loadbalancer/app/my-nlb/1aa1bb1cc1ddee11',
50
+ port: 80,
51
+ protocol: 'HTTP'
52
+ }
53
+ ]
54
+ },
55
+ describe_target_groups: {
56
+ target_groups: [
57
+ {
58
+ health_check_interval_seconds: 30,
59
+ health_check_path: '/',
60
+ health_check_port: 'traffic-port',
61
+ health_check_protocol: 'HTTP',
62
+ health_check_timeout_seconds: 5,
63
+ healthy_threshold_count: 5,
64
+ load_balancer_arns: [
65
+ 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:loadbalancer/app/my-nlb/1aa1bb1cc1ddee11'
66
+ ],
67
+ matcher: {
68
+ http_code: '200'
69
+ },
70
+ port: 80,
71
+ protocol: 'HTTP',
72
+ target_group_arn: 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:targetgroup/my-nlb-target-group/73e2d6bc24d8a067',
73
+ target_group_name: 'my-nlb-target-group',
74
+ unhealthy_threshold_count: 2,
75
+ vpc_id: 'vpc-ab123cde'
76
+ }
77
+ ]
78
+ },
79
+ describe_target_health: {
80
+ target_health_descriptions: [
81
+ {
82
+ target: {
83
+ id: 'i-0f76fade',
84
+ port: 80
85
+ },
86
+ target_health: {
87
+ description: 'Given target group is not configured to receive traffic from ELB',
88
+ reason: 'Target.NotInUse',
89
+ state: 'unused'
90
+ }
91
+ },
92
+ {
93
+ health_check_port: '80',
94
+ target: {
95
+ id: 'i-ec12345a',
96
+ port: 80
97
+ },
98
+ target_health: {
99
+ state: 'healthy'
100
+ }
101
+ }
102
+ ]
103
+ }
104
+ }
105
+ }
106
+
107
+ Aws.config[:ec2] = {
108
+ stub_responses: {
109
+ describe_instances: {
110
+ reservations: [
111
+ {
112
+ instances: [
113
+ {
114
+ instance_id: 'i-ec12345a',
115
+ image_id: 'ami-abc12def',
116
+ vpc_id: 'vpc-ab123cde',
117
+ subnet_id: 'subnet-1234a567',
118
+ public_ip_address: '123.0.456.789',
119
+ private_ip_address: '10.0.1.1',
120
+ instance_type: 't2.small',
121
+ state: {
122
+ name: 'running'
123
+ },
124
+ iam_instance_profile: {
125
+ arn: 'arn:aws:iam::123456789012:instance-profile/Ec2IamProfileName',
126
+ id: 'ABCDEFGHIJKLMNOPQRSTU'
127
+ },
128
+ block_device_mappings: [
129
+ {
130
+ device_name: '/dev/sda',
131
+ ebs: {
132
+ volume_id: 'vol-123a123b'
133
+ }
134
+ }
135
+ ],
136
+ network_interfaces: [
137
+ {
138
+ network_interface_id: 'eni-12ab3cde',
139
+ subnet_id: 'subnet-1234a567',
140
+ vpc_id: 'vpc-ab123cde',
141
+ attachment: {
142
+ device_index: 1
143
+ }
144
+ }
145
+ ],
146
+ tags: [
147
+ {
148
+ key: 'Name',
149
+ value: 'my-ec2'
150
+ }
151
+ ]
152
+ }
153
+ ]
154
+ }
155
+ ]
156
+ },
157
+ describe_subnets: {
158
+ subnets: [
159
+ {
160
+ state: 'available',
161
+ vpc_id: 'vpc-ab123cde',
162
+ subnet_id: 'subnet-1234a567',
163
+ cidr_block: '10.0.1.0/24',
164
+ tags: [
165
+ {
166
+ key: 'Name',
167
+ value: 'my-subnet'
168
+ }
169
+ ]
170
+ }
171
+ ]
172
+ },
173
+ describe_vpcs: {
174
+ vpcs: [
175
+ {
176
+ vpc_id: 'vpc-ab123cde',
177
+ tags: [
178
+ {
179
+ key: 'Name',
180
+ value: 'my-vpc'
181
+ }
182
+ ]
183
+ }
184
+ ]
185
+ }
186
+ }
187
+ }
@@ -42,5 +42,13 @@ module Awspec::Type
42
42
  tg.load_balancer_target_group_arn == target_group.target_group_arn
43
43
  end
44
44
  end
45
+
46
+ def has_nlb_target_group?(id)
47
+ target_group = find_nlb_target_group(id)
48
+ target_groups = select_lb_target_group_by_autoscaling_group_name(@resource_via_client.auto_scaling_group_name)
49
+ target_groups.one? do |tg|
50
+ tg.load_balancer_target_group_arn == target_group.target_group_arn
51
+ end
52
+ end
45
53
  end
46
54
  end
@@ -0,0 +1,35 @@
1
+ module Awspec::Type
2
+ class Nlb < ResourceBase
3
+ def resource_via_client
4
+ @resource_via_client ||= find_nlb(@display_name)
5
+ end
6
+
7
+ def id
8
+ @id ||= resource_via_client.load_balancer_name if resource_via_client
9
+ end
10
+
11
+ STATES = %w(
12
+ active provisioning failed
13
+ )
14
+
15
+ STATES.each do |state|
16
+ define_method state + '?' do
17
+ resource_via_client.state.code == state
18
+ end
19
+ end
20
+
21
+ def has_security_group?(_sg_id)
22
+ false
23
+ end
24
+
25
+ def has_subnet?(subnet_id)
26
+ azs = resource_via_client.availability_zones
27
+ ret = azs.find do |az|
28
+ az.subnet_id == subnet_id
29
+ end
30
+ return true if ret
31
+ subnet2 = find_subnet(subnet_id)
32
+ subnet2.subnet_id = subnet_id
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ module Awspec::Type
2
+ class NlbListener < ResourceBase
3
+ def resource_via_client
4
+ @resource_via_client ||= find_nlb_listener(@display_name)
5
+ end
6
+
7
+ def id
8
+ @id ||= resource_via_client.listener_arn if resource_via_client
9
+ end
10
+
11
+ def has_rule?(rule_id = nil, priority = nil, conditions = nil, actions = nil)
12
+ rules = select_rule_by_nlb_listener_id(id)
13
+ ret = rules.select do |rule|
14
+ conditions = [conditions] if conditions.is_a?(Hash)
15
+ actions = [actions] if actions.is_a?(Hash)
16
+ next false if !rule_id.nil? && rule.rule_arn != rule_id
17
+ next false if !priority.nil? && rule.priority != priority
18
+ next false if !conditions.nil? && rule.conditions.map(&:to_h).sort_by(&:to_s) != conditions.sort_by(&:to_s)
19
+ unless actions.nil?
20
+ actions = actions.map do |action|
21
+ if action.key?(:target_group_name)
22
+ target_group = find_nlb_target_group(action[:target_group_name])
23
+ action[:target_group_arn] = target_group.target_group_arn
24
+ action.delete(:target_group_name)
25
+ end
26
+ action
27
+ end
28
+ next false if rule.actions.map(&:to_h).sort_by(&:to_s) != actions.sort_by(&:to_s)
29
+ end
30
+ true
31
+ end
32
+ ret.single_resource("rule_id = #{rule_id}, priority = #{priority}, \
33
+ conditions = #{conditions}, actions = #{actions}")
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,22 @@
1
+ module Awspec::Type
2
+ class NlbTargetGroup < ResourceBase
3
+ def resource_via_client
4
+ @resource_via_client ||= find_nlb_target_group(@display_name)
5
+ end
6
+
7
+ def id
8
+ @id ||= resource_via_client.target_group_name if resource_via_client
9
+ end
10
+
11
+ def has_ec2?(id)
12
+ ec2 = find_ec2(id)
13
+ return nil unless ec2
14
+ descriptions = elbv2_client.describe_target_health(
15
+ target_group_arn: resource_via_client.target_group_arn
16
+ ).target_health_descriptions
17
+ descriptions.find do |description|
18
+ description.target.id == ec2.instance_id
19
+ end
20
+ end
21
+ end
22
+ end
@@ -2,20 +2,7 @@ module Awspec::Type
2
2
  class RdsDbClusterParameterGroup < ResourceBase
3
3
  def resource_via_client
4
4
  return @resource_via_client if @resource_via_client
5
-
6
- parameters = {}
7
- res = rds_client.describe_db_cluster_parameters({
8
- db_cluster_parameter_group_name: @display_name
9
- })
10
-
11
- loop do
12
- res.parameters.each do |param|
13
- parameters[param.parameter_name] = param.parameter_value
14
- end
15
- (res.respond_to?(:next_page?) && res.next_page? && res = res.next_page) || break
16
- end
17
-
18
- @resource_via_client ||= parameters
5
+ @resource_via_client ||= select_all_rds_db_cluster_parameters(@display_name)
19
6
  end
20
7
 
21
8
  def id
@@ -2,20 +2,7 @@ module Awspec::Type
2
2
  class RdsDbParameterGroup < ResourceBase
3
3
  def resource_via_client
4
4
  return @resource_via_client if @resource_via_client
5
-
6
- parameters = {}
7
- res = rds_client.describe_db_parameters({
8
- db_parameter_group_name: @display_name
9
- })
10
-
11
- loop do
12
- res.parameters.each do |param|
13
- parameters[param.parameter_name] = param.parameter_value
14
- end
15
- (res.next_page? && res = res.next_page) || break
16
- end
17
-
18
- @resource_via_client ||= parameters
5
+ @resource_via_client ||= select_all_rds_db_parameters(@display_name)
19
6
  end
20
7
 
21
8
  def id
@@ -1,3 +1,3 @@
1
1
  module Awspec
2
- VERSION = '1.2.0'
2
+ VERSION = '1.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
11
+ date: 2018-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -254,6 +254,9 @@ files:
254
254
  - doc/_resource_types/nat_gateway.md
255
255
  - doc/_resource_types/network_acl.md
256
256
  - doc/_resource_types/network_interface.md
257
+ - doc/_resource_types/nlb.md
258
+ - doc/_resource_types/nlb_listener.md
259
+ - doc/_resource_types/nlb_target_group.md
257
260
  - doc/_resource_types/rds.md
258
261
  - doc/_resource_types/rds_account_attributes.md
259
262
  - doc/_resource_types/rds_db_cluster_parameter_group.md
@@ -330,6 +333,9 @@ files:
330
333
  - lib/awspec/generator/doc/type/nat_gateway.rb
331
334
  - lib/awspec/generator/doc/type/network_acl.rb
332
335
  - lib/awspec/generator/doc/type/network_interface.rb
336
+ - lib/awspec/generator/doc/type/nlb.rb
337
+ - lib/awspec/generator/doc/type/nlb_listener.rb
338
+ - lib/awspec/generator/doc/type/nlb_target_group.rb
333
339
  - lib/awspec/generator/doc/type/rds.rb
334
340
  - lib/awspec/generator/doc/type/rds_account_attributes.rb
335
341
  - lib/awspec/generator/doc/type/rds_db_cluster_parameter_group.rb
@@ -368,7 +374,10 @@ files:
368
374
  - lib/awspec/generator/spec/nat_gateway.rb
369
375
  - lib/awspec/generator/spec/network_acl.rb
370
376
  - lib/awspec/generator/spec/network_interface.rb
377
+ - lib/awspec/generator/spec/nlb.rb
371
378
  - lib/awspec/generator/spec/rds.rb
379
+ - lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb
380
+ - lib/awspec/generator/spec/rds_db_parameter_group.rb
372
381
  - lib/awspec/generator/spec/route53_hosted_zone.rb
373
382
  - lib/awspec/generator/spec/route_table.rb
374
383
  - lib/awspec/generator/spec/s3_bucket.rb
@@ -405,6 +414,7 @@ files:
405
414
  - lib/awspec/helper/finder/iam.rb
406
415
  - lib/awspec/helper/finder/kms.rb
407
416
  - lib/awspec/helper/finder/lambda.rb
417
+ - lib/awspec/helper/finder/nlb.rb
408
418
  - lib/awspec/helper/finder/rds.rb
409
419
  - lib/awspec/helper/finder/route53.rb
410
420
  - lib/awspec/helper/finder/s3.rb
@@ -429,6 +439,7 @@ files:
429
439
  - lib/awspec/matcher/belong_to_domain.rb
430
440
  - lib/awspec/matcher/belong_to_iam_group.rb
431
441
  - lib/awspec/matcher/belong_to_metric.rb
442
+ - lib/awspec/matcher/belong_to_nlb.rb
432
443
  - lib/awspec/matcher/belong_to_replication_group.rb
433
444
  - lib/awspec/matcher/belong_to_subnet.rb
434
445
  - lib/awspec/matcher/belong_to_vpc.rb
@@ -493,6 +504,9 @@ files:
493
504
  - lib/awspec/stub/nat_gateway.rb
494
505
  - lib/awspec/stub/network_acl.rb
495
506
  - lib/awspec/stub/network_interface.rb
507
+ - lib/awspec/stub/nlb.rb
508
+ - lib/awspec/stub/nlb_listener.rb
509
+ - lib/awspec/stub/nlb_target_group.rb
496
510
  - lib/awspec/stub/rds.rb
497
511
  - lib/awspec/stub/rds_db_cluster_parameter_group.rb
498
512
  - lib/awspec/stub/rds_db_parameter_group.rb
@@ -554,6 +568,9 @@ files:
554
568
  - lib/awspec/type/nat_gateway.rb
555
569
  - lib/awspec/type/network_acl.rb
556
570
  - lib/awspec/type/network_interface.rb
571
+ - lib/awspec/type/nlb.rb
572
+ - lib/awspec/type/nlb_listener.rb
573
+ - lib/awspec/type/nlb_target_group.rb
557
574
  - lib/awspec/type/rds.rb
558
575
  - lib/awspec/type/rds_account_attributes.rb
559
576
  - lib/awspec/type/rds_db_cluster_parameter_group.rb
@@ -592,7 +609,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
592
609
  version: '0'
593
610
  requirements: []
594
611
  rubyforge_project:
595
- rubygems_version: 2.6.13
612
+ rubygems_version: 2.5.2
596
613
  signing_key:
597
614
  specification_version: 4
598
615
  summary: RSpec tests for your AWS resources.