etude_for_aws 0.7.4

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 (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +103 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/Dockerfile +17 -0
  7. data/Dockerfile-dev +20 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +89 -0
  10. data/Guardfile +22 -0
  11. data/Jenkinsfile +11 -0
  12. data/README.md +26 -0
  13. data/Rakefile +12 -0
  14. data/Vagrantfile +15 -0
  15. data/bin/aws_console.rb +10 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +22 -0
  19. data/config.yml +124 -0
  20. data/docker-compose.yml +9 -0
  21. data/docs/README.md +54 -0
  22. data/docs/_config.yml +6 -0
  23. data/docs/dev/cfm/cfm.md +9 -0
  24. data/docs/dev/cfm/images/vpc_core_model.png +0 -0
  25. data/docs/dev/cfm/images/vpc_type1.png +0 -0
  26. data/docs/dev/cfm/images/vpc_type2.png +0 -0
  27. data/docs/dev/cfm/images/vpc_type3.png +0 -0
  28. data/docs/dev/cfm/images/vpc_type4.png +0 -0
  29. data/docs/dev/cfm/images/vpc_type5.png +0 -0
  30. data/docs/dev/cfm/images/vpc_type6.png +0 -0
  31. data/docs/dev/cfm/images/vpc_type7.png +0 -0
  32. data/docs/dev/cfm/vpc/core_model.puml +35 -0
  33. data/docs/dev/cfm/vpc/vpc.md +39 -0
  34. data/docs/dev/cfm/vpc/vpc_type1.puml +17 -0
  35. data/docs/dev/cfm/vpc/vpc_type2.puml +23 -0
  36. data/docs/dev/cfm/vpc/vpc_type3.puml +24 -0
  37. data/docs/dev/cfm/vpc/vpc_type4.puml +23 -0
  38. data/docs/dev/cfm/vpc/vpc_type5.puml +25 -0
  39. data/docs/dev/cfm/vpc/vpc_type6.puml +26 -0
  40. data/docs/dev/cfm/vpc/vpc_type7.puml +39 -0
  41. data/docs/dev/ec2/core_model.puml +43 -0
  42. data/docs/dev/ec2/ec2.md +36 -0
  43. data/docs/dev/ec2/ec2_type1.puml +27 -0
  44. data/docs/dev/ec2/ec2_type2.puml +43 -0
  45. data/docs/dev/ec2/ec2_type3.puml +44 -0
  46. data/docs/dev/ec2/ec2_type4.puml +43 -0
  47. data/docs/dev/ec2/ec2_type5.puml +45 -0
  48. data/docs/dev/ec2/ec2_type6.puml +46 -0
  49. data/docs/dev/ec2/ec2_type7.puml +79 -0
  50. data/docs/dev/ec2/images/.keep +0 -0
  51. data/docs/dev/ec2/images/ec2_core_model.png +0 -0
  52. data/docs/dev/ec2/images/ec2_type1.png +0 -0
  53. data/docs/dev/ec2/images/ec2_type2.png +0 -0
  54. data/docs/dev/ec2/images/ec2_type3.png +0 -0
  55. data/docs/dev/ec2/images/ec2_type4.png +0 -0
  56. data/docs/dev/ec2/images/ec2_type5.png +0 -0
  57. data/docs/dev/ec2/images/ec2_type6.png +0 -0
  58. data/docs/dev/ec2/images/ec2_type7.png +0 -0
  59. data/docs/dev/vpc/core_model.puml +49 -0
  60. data/docs/dev/vpc/images/core_model.png +0 -0
  61. data/docs/dev/vpc/images/simple.png +0 -0
  62. data/docs/dev/vpc/images/standard.png +0 -0
  63. data/docs/dev/vpc/simple.puml +17 -0
  64. data/docs/dev/vpc/standard.puml +24 -0
  65. data/docs/dev/vpc/vpc.md +19 -0
  66. data/docs/ops/build_aws_sdk_repl.md +19 -0
  67. data/docs/ops/images/.keep +0 -0
  68. data/docs/ops/run_rake_task.md +89 -0
  69. data/docs/ops/ship_circleci.md +9 -0
  70. data/docs/ops/ship_jenkins.md +20 -0
  71. data/docs/ops/ship_ruby_gem.md +26 -0
  72. data/docs/template_catalog.md +6 -0
  73. data/docs/template_pattern.md +13 -0
  74. data/docs/template_recipe.md +6 -0
  75. data/docs/template_spec.md +8 -0
  76. data/etude_for_aws.gemspec +41 -0
  77. data/etude_for_aws.iml +42 -0
  78. data/exe/etude_for_aws +3 -0
  79. data/lib/etude_for_aws.rb +38 -0
  80. data/lib/etude_for_aws/cfm/configuration.rb +39 -0
  81. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-1subnet-pub.template +529 -0
  82. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub-pri.template +790 -0
  83. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub.template +634 -0
  84. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pri.template +645 -0
  85. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub-pri.template +611 -0
  86. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub.template +646 -0
  87. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-4subnet-pub-pri.template +1010 -0
  88. data/lib/etude_for_aws/cfm/vpc/null_vpc.rb +13 -0
  89. data/lib/etude_for_aws/cfm/vpc/one_az_one_public_subnet_vpc.rb +45 -0
  90. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_and_private_subnet_vpc.rb +47 -0
  91. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_subnet_vpc.rb +47 -0
  92. data/lib/etude_for_aws/cfm/vpc/two_az_one_public_subnet_and_private_subnet_vpc.rb +52 -0
  93. data/lib/etude_for_aws/cfm/vpc/two_az_two_private_subnet_vpc.rb +38 -0
  94. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_and_private_subnet_vpc.rb +38 -0
  95. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_vpc.rb +38 -0
  96. data/lib/etude_for_aws/cfm/vpc/vpc.rb +104 -0
  97. data/lib/etude_for_aws/ec2/configuration.rb +66 -0
  98. data/lib/etude_for_aws/ec2/ec2.rb +218 -0
  99. data/lib/etude_for_aws/ec2/ec2_api_gateway.rb +127 -0
  100. data/lib/etude_for_aws/ec2/ec2_instance.rb +107 -0
  101. data/lib/etude_for_aws/ec2/key_pair.rb +46 -0
  102. data/lib/etude_for_aws/ec2/security_group.rb +75 -0
  103. data/lib/etude_for_aws/ec2/vpc_interface.rb +11 -0
  104. data/lib/etude_for_aws/helpers/certification_helper.rb +16 -0
  105. data/lib/etude_for_aws/helpers/configuration_helper.rb +103 -0
  106. data/lib/etude_for_aws/tasks/cfm.rake +73 -0
  107. data/lib/etude_for_aws/tasks/ec2.rake +210 -0
  108. data/lib/etude_for_aws/tasks/vpc.rake +47 -0
  109. data/lib/etude_for_aws/version.rb +3 -0
  110. data/lib/etude_for_aws/vpc/configuration.rb +77 -0
  111. data/lib/etude_for_aws/vpc/customer_gateway.rb +28 -0
  112. data/lib/etude_for_aws/vpc/internet_gateway.rb +15 -0
  113. data/lib/etude_for_aws/vpc/route_table.rb +42 -0
  114. data/lib/etude_for_aws/vpc/simple_vpc.rb +57 -0
  115. data/lib/etude_for_aws/vpc/standard_vpc.rb +94 -0
  116. data/lib/etude_for_aws/vpc/subnet.rb +22 -0
  117. data/lib/etude_for_aws/vpc/vpc.rb +147 -0
  118. data/lib/etude_for_aws/vpc/vpc_api_gateway.rb +277 -0
  119. data/lib/etude_for_aws/vpc/vpc_director.rb +43 -0
  120. data/lib/etude_for_aws/vpc/vpn.rb +244 -0
  121. data/lib/etude_for_aws/vpc/vpn_connection.rb +28 -0
  122. data/lib/etude_for_aws/vpc/vpn_director.rb +47 -0
  123. data/lib/etude_for_aws/vpc/vpn_gateway.rb +36 -0
  124. metadata +280 -0
@@ -0,0 +1,277 @@
1
+ module VPC
2
+ class VpcApiGateway
3
+ include CertificationHelper
4
+
5
+ attr_reader :ec2
6
+
7
+ def initialize
8
+ aws_certificate
9
+ @ec2 = Aws::EC2::Client.new
10
+ @stub = false
11
+ end
12
+
13
+ def stub?
14
+ @stub
15
+ end
16
+
17
+ def select_vpcs_by_name(name)
18
+ filter_tag_value = set_filter_tag_value(name)
19
+ @ec2.describe_vpcs(
20
+ {filters: [filter_tag_value], }
21
+ ).vpcs
22
+ end
23
+
24
+ def select_subnets_by_name(name)
25
+ filter_tag_value = set_filter_tag_value(name)
26
+ @ec2.describe_subnets(
27
+ {filters: [filter_tag_value], }
28
+ ).subnets
29
+ end
30
+
31
+ def select_internet_gateways_by_name(name)
32
+ filter_tag_value = set_filter_tag_value(name)
33
+ @ec2.describe_internet_gateways(
34
+ {filters: [filter_tag_value], }
35
+ ).internet_gateways
36
+ end
37
+
38
+ def select_route_tables_by_name(name)
39
+ filter_tag_value = set_filter_tag_value(name)
40
+ @ec2.describe_route_tables(
41
+ {filters: [filter_tag_value], }
42
+ ).route_tables
43
+ end
44
+
45
+ def select_associate_route_table_ids_by_route_table_id(route_table_id)
46
+ associate_route_table_ids = []
47
+ resp = @ec2.describe_route_tables({
48
+ route_table_ids: [
49
+ route_table_id,
50
+ ],
51
+ })
52
+ resp.route_tables.each do |route_table|
53
+ route_table.associations.each do |association|
54
+ associate_route_table_ids << association.route_table_association_id
55
+ end
56
+ end
57
+ associate_route_table_ids
58
+ end
59
+
60
+ def create_tags(resources,tags)
61
+ @ec2.create_tags(
62
+ resources:resources,
63
+ tags: tags
64
+ )
65
+ end
66
+
67
+ def create_vpc(vpc_name,vpc_cidr_block)
68
+ resp = @ec2.create_vpc({
69
+ cidr_block: vpc_cidr_block
70
+ }
71
+ )
72
+ vpc_id = resp.vpc.vpc_id
73
+ @ec2.wait_until(:vpc_exists, {vpc_ids: [vpc_id]})
74
+ vpc_id
75
+ end
76
+
77
+ def delete_vpc(vpc_id)
78
+ @ec2.delete_vpc({vpc_id: vpc_id})
79
+ end
80
+
81
+ def create_subnet(subnet_cidr_block,vpc_id,az)
82
+ resp = @ec2.create_subnet({
83
+ cidr_block: subnet_cidr_block,
84
+ vpc_id: vpc_id,
85
+ availability_zone: az,
86
+ })
87
+ resp.subnet.subnet_id
88
+ end
89
+
90
+ def delete_subnet(subnet_id)
91
+ @ec2.delete_subnet({subnet_id: subnet_id})
92
+ end
93
+
94
+ def create_internet_gateway
95
+ resp = @ec2.create_internet_gateway
96
+ resp.internet_gateway.internet_gateway_id
97
+ end
98
+
99
+ def attach_internet_gateway(internet_gateway_id, vpc_id)
100
+ @ec2.attach_internet_gateway({
101
+ internet_gateway_id: internet_gateway_id,
102
+ vpc_id: vpc_id
103
+ })
104
+ end
105
+
106
+ def detach_internet_gateway(vpc_id,internet_gateway_id)
107
+ @ec2.detach_internet_gateway({
108
+ internet_gateway_id: internet_gateway_id,
109
+ vpc_id: vpc_id
110
+ })
111
+ end
112
+
113
+ def delete_internet_gateway(internet_gateway_id)
114
+ @ec2.delete_internet_gateway({internet_gateway_id: internet_gateway_id})
115
+ end
116
+
117
+ def create_route_table(vpc_id)
118
+ resp = @ec2.create_route_table({
119
+ vpc_id: vpc_id
120
+ })
121
+ resp.route_table.route_table_id
122
+ end
123
+
124
+ def create_route_public(destination_cidr_block,internet_gateway_id,route_table_id)
125
+ resp = @ec2.create_route({
126
+ destination_cidr_block: destination_cidr_block,
127
+ gateway_id: internet_gateway_id,
128
+ route_table_id: route_table_id,
129
+ })
130
+ resp.return
131
+ end
132
+
133
+ def create_route_vpn(destination_cidr_block,vpc_gateway_id,route_table_id)
134
+ resp = @ec2.create_route({
135
+ destination_cidr_block: destination_cidr_block,
136
+ gateway_id: vpc_gateway_id,
137
+ route_table_id: route_table_id,
138
+ })
139
+ resp.return
140
+ end
141
+
142
+ def create_route_private(destination_cidr_block,route_table_id)
143
+ resp = @ec2.create_route({
144
+ destination_cidr_block: destination_cidr_block,
145
+ route_table_id: route_table_id,
146
+ })
147
+ resp.return
148
+ end
149
+
150
+ def associate_route_table(route_table_id,subnet_id)
151
+ resp = @ec2.associate_route_table({
152
+ route_table_id: route_table_id,
153
+ subnet_id: subnet_id,
154
+ })
155
+ resp.association_id
156
+ end
157
+
158
+ def disassociate_route_table(association_id)
159
+ ec2.disassociate_route_table({
160
+ association_id: association_id
161
+ })
162
+ end
163
+
164
+ def delete_route_table(route_table_id)
165
+ @ec2.delete_route_table({route_table_id: route_table_id})
166
+ end
167
+
168
+ def select_customer_gateways_by_name(name)
169
+ @ec2.describe_customer_gateways({
170
+ filters: [
171
+ {
172
+ name: "tag-value",
173
+ values: [name],
174
+ },
175
+ ],
176
+ }).customer_gateways
177
+ end
178
+
179
+ def select_vpc_gateways_by_name(name)
180
+ @ec2.describe_vpn_gateways({
181
+ filters: [
182
+ {
183
+ name: "tag-value",
184
+ values: [name],
185
+ },
186
+ ],
187
+ }).vpn_gateways
188
+ end
189
+
190
+ def select_vpn_connections_by_name(name)
191
+ @ec2.describe_vpn_connections({
192
+ filters: [
193
+ {
194
+ name: "tag-value",
195
+ values: [name],
196
+ },
197
+ ],
198
+ }).vpn_connections
199
+ end
200
+
201
+ def create_customer_gateway(bgp_asn,public_ip,type)
202
+ @ec2.create_customer_gateway({
203
+ bgp_asn: bgp_asn,
204
+ public_ip: public_ip,
205
+ type: type,
206
+ })
207
+ end
208
+
209
+ def delete_customer_gateway(customer_gateway_id)
210
+ @ec2.delete_customer_gateway({
211
+ customer_gateway_id: customer_gateway_id,
212
+ })
213
+ end
214
+
215
+ def create_vpn_gateway(type)
216
+ @ec2.create_vpn_gateway({
217
+ type: type
218
+ })
219
+ end
220
+
221
+ def attach_vpn_gateway(vpn_gateway_id,vpc_id)
222
+ @ec2.attach_vpn_gateway({
223
+ vpn_gateway_id: vpn_gateway_id,
224
+ vpc_id: vpc_id,
225
+ })
226
+ end
227
+
228
+ def detach_vpn_gateway(vpn_gateway_id,vpc_id)
229
+ @ec2.detach_vpn_gateway({
230
+ vpn_gateway_id: vpn_gateway_id,
231
+ vpc_id: vpc_id,
232
+ })
233
+ end
234
+
235
+ def delete_vpn_gateway(vpn_gateway_id)
236
+ @ec2.delete_vpn_gateway({
237
+ vpn_gateway_id: vpn_gateway_id,
238
+ })
239
+ end
240
+
241
+ def create_vpn_connection(type,customer_gateway_id,vpn_gateway_id,static_routes_only)
242
+ @ec2.create_vpn_connection({
243
+ type: type,
244
+ customer_gateway_id: customer_gateway_id,
245
+ vpn_gateway_id: vpn_gateway_id,
246
+ options: {
247
+ static_routes_only: static_routes_only,
248
+ },
249
+ })
250
+ end
251
+
252
+ def delete_vpn_connection(vpn_connection_id)
253
+ @ec2.delete_vpn_connection({
254
+ vpn_connection_id: vpn_connection_id,
255
+ })
256
+ end
257
+
258
+ def wait_for_vpn_connection_available(vpn_connection_id)
259
+ @ec2.wait_until(:vpn_connection_available, {vpn_connection_ids: [vpn_connection_id]}) unless stub?
260
+ end
261
+
262
+
263
+ private
264
+ def set_filter_tag_value(name)
265
+ {
266
+ name: 'tag-value', values: [name]
267
+ }
268
+ end
269
+ end
270
+
271
+ class VpcApiGatewayStub < VpcApiGateway
272
+ def initialize
273
+ @ec2 = Aws::EC2::Client.new(stub_responses: true)
274
+ @stub = true
275
+ end
276
+ end
277
+ end
@@ -0,0 +1,43 @@
1
+ module VPC
2
+ class VpcDirector
3
+ attr_accessor :builder
4
+
5
+ def initialize(vpc_builder)
6
+ @builder = vpc_builder
7
+ end
8
+
9
+ def create
10
+ begin
11
+
12
+ @builder.create_vpc
13
+
14
+ @builder.create_subnets
15
+
16
+ @builder.create_internet_gateway
17
+
18
+ @builder.create_route_table
19
+
20
+ rescue Exception => e
21
+ puts "Error occurred (#{e.class})"
22
+ throw e
23
+ end
24
+ end
25
+
26
+ def destroy
27
+ begin
28
+
29
+ @builder.delete_route_tables
30
+
31
+ @builder.delete_internet_gateway
32
+
33
+ @builder.delete_subnets
34
+
35
+ @builder.delete_vpc
36
+
37
+ rescue Exception => e
38
+ puts "Error occurred (#{e.class})"
39
+ throw e
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,244 @@
1
+ module VPC
2
+ class Vpn
3
+ attr_reader :vpc,
4
+ :customer_gateways,
5
+ :vpn_gateway,
6
+ :vpn_connections,
7
+ :route_tables,
8
+ :stub
9
+
10
+ def initialize(vpc)
11
+ @vpc = vpc
12
+ @config = vpc.config
13
+ @gateway = vpc.gateway
14
+ @route_tables = []
15
+ @vpc_tags = @config.get_yaml_vpc_tags
16
+ @stub = false
17
+
18
+ setup_customer_gateways
19
+ setup_vpn_gateway
20
+ setup_vpn_connections
21
+ end
22
+
23
+ def stub?
24
+ @stub
25
+ end
26
+
27
+ def create_customer_gateway
28
+ customer_gateways_info = @config.get_vpn_customer_gateways
29
+ customer_gateways_info.each do |customer_gateway_config|
30
+ customer_gateway_info = customer_gateway_config['CONFIG']['CUSTOMER_GATEWAY']
31
+ customer_gateway = CustomerGateway.new(@config,@gateway)
32
+ customer_gateway.create(customer_gateway_info)
33
+ @customer_gateways << customer_gateway
34
+ end
35
+ end
36
+
37
+ def create_vpn_gateway
38
+ vpn_gateway_info = @config.get_vpn_gateway
39
+ @vpn_gateway = VpnGateway.new(@config,@gateway)
40
+ @vpn_gateway.create(vpn_gateway_info)
41
+ end
42
+
43
+ def attach_vpn_gateway
44
+ @vpn_gateway.attach(@vpc.vpc_id)
45
+ end
46
+
47
+ def create_vpn_connection
48
+ n = 0
49
+ vpn_connections_info = @config.get_vpn_connections
50
+ vpn_connections_info.each do |vpn_connection_config|
51
+ vpn_connection_info = vpn_connection_config['CONFIG']['VPN_CONNECTION']
52
+ customer_gateway_id = @customer_gateways[n].customer_gateway_id
53
+ vpn_gateway_id = @vpn_gateway.vpn_gateway_id
54
+ vpn_connection = VpnConnection.new(@config,@gateway)
55
+ vpn_connection.creat(customer_gateway_id, vpn_gateway_id, vpn_connection_info)
56
+ @vpn_connections << vpn_connection
57
+ n += 1
58
+ end
59
+ end
60
+
61
+ def create_route
62
+ @vpn_connections.each do |vpn_connection|
63
+ vpn_connection_id = vpn_connection.vpn_connection_id
64
+ @gateway.wait_for_vpn_connection_available(vpn_connection_id)
65
+
66
+ @config.private_route_tables.each do |v|
67
+ name = v['CONFIG']['ROUTE_TABLE_TAGS'].first['NAME']['VALUE']
68
+ destination_cidr_blocks = @config.get_vpn_gateway['DESTINATION_CIDR_BLOCKS']
69
+ destination_cidr_blocks.each do |cidr_block|
70
+ route_tables = @gateway.select_route_tables_by_name(name)
71
+ route_tables.each do |route_table|
72
+ @gateway.create_route_vpn(cidr_block['CIDR'],@vpn_gateway.vpn_gateway_id,route_table.route_table_id)
73
+ @route_tables << route_table
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ def delete_customer_gateway
81
+ resp = []
82
+ @customer_gateways.each do |customer_gateway|
83
+ resp << customer_gateway.delete
84
+ end
85
+ @customer_gateways = []
86
+ @customer_gateways = resp
87
+ end
88
+
89
+ def delete_vpn_gateway
90
+ @vpn_gateway = @vpn_gateway.delete
91
+ end
92
+
93
+ def detach_vpn_gateway
94
+ @vpn_gateway.detach(@vpc.vpc_id)
95
+ end
96
+
97
+ def delete_vpn_connection
98
+ resp = []
99
+ @vpn_connections.each do |vpn_connection|
100
+ resp << vpn_connection.delete
101
+ end
102
+ @vpn_connections = []
103
+ @vpn_connections = resp
104
+ end
105
+
106
+ def delete_route
107
+ @route_tables.each do |route_table|
108
+ route_table_id = route_table.route_table_id
109
+ @associate_route_table_ids = @gateway.select_associate_route_table_ids_by_route_table_id(route_table_id)
110
+ @associate_route_table_ids.each do |id|
111
+ @gateway.disassociate_route_table(id)
112
+ end
113
+ @gateway.delete_route_table(route_table_id)
114
+ end
115
+ end
116
+
117
+ private
118
+ def setup_customer_gateways
119
+ @customer_gateways = []
120
+ customer_gateways_info = @config.get_vpn_customer_gateways
121
+ customer_gateways_info.each do |customer_gateway_config|
122
+ tags = customer_gateway_config['CONFIG']['CUSTOMER_GATEWAY']['TAGS']
123
+ value = tags['NAME']['VALUE']
124
+ customer_gateways = @gateway.select_customer_gateways_by_name(value)
125
+ unless customer_gateways.empty?
126
+ customer_gateway_id = customer_gateways[0].customer_gateway_id
127
+ @customer_gateways << CustomerGateway.new(@config, @gateway, customer_gateway_id)
128
+ end
129
+ end
130
+ end
131
+
132
+ def setup_vpn_gateway
133
+ value = @config.get_vpn_gateway['TAGS']['NAME']['VALUE']
134
+ vpn_gateways = @gateway.select_vpc_gateways_by_name(value)
135
+ unless vpn_gateways.empty?
136
+ vpn_gateway_id = vpn_gateways[0].vpn_gateway_id
137
+ @vpn_gateway = VpnGateway.new(@config,@gateway,vpn_gateway_id)
138
+ end
139
+ end
140
+
141
+ def setup_vpn_connections
142
+ @vpn_connections = []
143
+ vpn_connections_info = @config.get_vpn_connections
144
+ vpn_connections_info.each do |vpn_connection_config|
145
+ tags = vpn_connection_config['CONFIG']['VPN_CONNECTION']['TAGS']
146
+ value = tags['NAME']['VALUE']
147
+ vpn_connections = @gateway.select_vpn_connections_by_name(value)
148
+
149
+ unless vpn_connections.empty?
150
+ vpn_connection_id = vpn_connections[0].vpn_connection_id
151
+ vpn_connection = VpnConnection.new(@config, @gateway, vpn_connection_id)
152
+ @vpn_connections << vpn_connection
153
+ end
154
+ end
155
+ end
156
+ end
157
+
158
+ class VpnStub < Vpn
159
+ def initialize(vpc)
160
+ super
161
+ @stub = true
162
+ end
163
+
164
+ def delete_customer_gateway
165
+ @gateway.ec2.stub_responses(:describe_customer_gateways,
166
+ {
167
+ customer_gateways: [
168
+ {
169
+ customer_gateway_id: 'String',
170
+ tags: [
171
+ {
172
+ key:'Name',
173
+ value: 'TestCustomerGateway'
174
+ }
175
+ ]
176
+ }
177
+ ]
178
+ })
179
+ super
180
+ end
181
+
182
+ def delete_virtual_gateway
183
+ @gateway.ec2.stub_responses(:describe_vpn_gateways,
184
+ {
185
+ vpn_gateways: [
186
+ {
187
+ vpn_gateway_id: 'String',
188
+ tags: [
189
+ {
190
+ key:'Name',
191
+ value: 'TestVpnGateway'
192
+ }
193
+ ]
194
+ }
195
+ ]
196
+ })
197
+
198
+ super
199
+ end
200
+
201
+ def detach_vpn_gateway
202
+ @gateway.ec2.stub_responses(:describe_vpn_gateways,
203
+ {
204
+ vpn_gateways: [
205
+ {
206
+ vpn_gateway_id: 'String',
207
+ tags: [
208
+ {
209
+ key:'Name',
210
+ value: 'TestVpnGateway'
211
+ }
212
+ ]
213
+ }
214
+ ]
215
+ })
216
+
217
+ super
218
+ end
219
+
220
+ def delete_vpn_connection
221
+ @gateway.ec2.stub_responses(:describe_vpn_connections,
222
+ {
223
+ vpn_connections: [
224
+ {
225
+ vpn_connection_id: 'String',
226
+ tags: [
227
+ {
228
+ key:'Name',
229
+ value: 'TestVpnGateway'
230
+ }
231
+ ]
232
+ }
233
+ ]
234
+ })
235
+
236
+ super
237
+ end
238
+
239
+ def delete_route
240
+ super
241
+ @route_tables = []
242
+ end
243
+ end
244
+ end