convection 2.2.11 → 2.2.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4f86707af23a4ea618cd13b4dd4008a23a22bbb
4
- data.tar.gz: c71c29ecbb07f321eca21c86864d3a6c2f893945
3
+ metadata.gz: 06fa6942996ee32f586741975300cad7ddd11e83
4
+ data.tar.gz: f393211f45deac206370eaa9c5c7163547b563da
5
5
  SHA512:
6
- metadata.gz: ffc9509d0c997d2cc41ce1915a8ec5128aa4b53082f1ad157e917a9b53dde285b0a0a00e5795f8fc18f53347669000c49d45ffc7fcac7ebea532722ed8221ddf
7
- data.tar.gz: a3b08777d66def2af42eeba6b1815d3b5a892beab7e945ef4a8b29e29add7e3b7b7700644a2ee4f38590efe01a3c5c2d7b8de991e5425a797602e0ea38e65e1d
6
+ metadata.gz: '0801e86aef339edd14e256942d10c641ade985171fca98f15db341a0ef18652230cb0a8c9762dda1f048a68ac47f27164cf08bcbba7397a4fd1aa8ffeac885f7'
7
+ data.tar.gz: d110b282f788d2479e8984f3117ed339244019ea51efaa284be93bee0cc021967b07357ff172bb5ba82c4b7d9a113c83147d4cc53b55e3f7aa9a8b38e1149057
data/bin/convection CHANGED
@@ -225,7 +225,9 @@ module Convection
225
225
 
226
226
  # Get the function and permission resource summaries.
227
227
  permission_resource_summary = stack.resources[name]
228
- function_resource_summary = stack.resources[name.sub(/Permission.*$/, 'Lambda')]
228
+ permission_resource = stack.template.resources[name]
229
+ lambda_resource_logical_id = lambda_resource_logical_id(permission_resource: permission_resource)
230
+ function_resource_summary = lambda_resource_logical_id && stack.resources[lambda_resource_logical_id]
229
231
  unless permission_resource_summary && function_resource_summary
230
232
  warn 'ERROR: Either the lambda permission or function you were trying to import have not been created in cloudformation. These resources are expected to exist in the same template.'
231
233
  exit 1
@@ -238,7 +240,7 @@ module Convection
238
240
  end
239
241
 
240
242
  function_name = resource.function_name.is_a?(Hash) ? function_resource_summary.physical_resource_id : resource.function_name
241
- source_logical_name = resource.source_arn.fetch('Fn::GetAtt').first
243
+ source_logical_name = resource.source_arn.is_a?(Hash) ? resource.source_arn.fetch('Fn::GetAtt', []).first : resource.source_arn
242
244
  source_resource_summary = stack.resources[source_logical_name] && stack.resources[source_logical_name].physical_resource_id
243
245
  source_arn = resource.source_arn.is_a?(Hash) ? source_resource_summary : resource.source_arn
244
246
  unless source_arn
@@ -257,6 +259,7 @@ module Convection
257
259
  principal: resource.principal,
258
260
  qualifer: resource.qualifer,
259
261
  source_arn: source_arn,
262
+ source_account: resource.source_account,
260
263
  statement_id: permission_resource_summary.physical_resource_id
261
264
  }.reject { |_key, value| value.nil? },
262
265
  meta: {},
@@ -342,6 +345,16 @@ module Convection
342
345
  puts # Print an additional new line
343
346
  end
344
347
 
348
+ def lambda_resource_logical_id(permission_resource:)
349
+ return nil unless permission_resource
350
+
351
+ if permission_resource.function_name.is_a?(Hash)
352
+ return permission_resource.function_name['Ref'] if permission_resource.function_name.key?('Ref')
353
+ end
354
+
355
+ permission_resource.name.sub(/Permission.*$/, 'Lambda')
356
+ end
357
+
345
358
  def operation(task_name, stack)
346
359
  work_q = Queue.new
347
360
  semaphore = Mutex.new
@@ -16,6 +16,32 @@ module Convection
16
16
  property :instance, 'InstanceId'
17
17
  property :interface, 'NetworkInterfaceId'
18
18
  property :peer, 'VpcPeeringConnectionId'
19
+
20
+ def to_hcl_json(*)
21
+ tf_record_attrs = {
22
+ route_table_id: route_table_id,
23
+ destination_cidr_block: destination,
24
+ vpc_peering_connection_id: peer,
25
+ gateway_id: gateway,
26
+ nat_gateway_id: nat_gateway,
27
+ instance_id: instance,
28
+ network_interface_id: interface
29
+ }
30
+
31
+ tf_record_attrs.reject! { |_, v| v.nil? }
32
+
33
+ tf_record = {
34
+ aws_route: {
35
+ name.underscore => tf_record_attrs
36
+ }
37
+ }
38
+
39
+ { resource: tf_record }.to_json
40
+ end
41
+
42
+ def terraform_import_commands(*)
43
+ ['# Route import is not supported by Terraform.']
44
+ end
19
45
  end
20
46
  end
21
47
  end
@@ -38,6 +38,33 @@ module Convection
38
38
  render_tags(resource)
39
39
  end
40
40
  end
41
+
42
+ def to_hcl_json(*)
43
+ tf_record_tags = tags.reject { |_, v| v.nil? }
44
+
45
+ tf_record_attrs = {
46
+ vpc_id: vpc,
47
+ tags: tf_record_tags
48
+ }
49
+
50
+ tf_record_attrs.reject! { |_, v| v.nil? }
51
+
52
+ tf_record = {
53
+ aws_route_table: {
54
+ name.underscore => tf_record_attrs
55
+ }
56
+ }
57
+
58
+ { resource: tf_record }.to_json
59
+ end
60
+
61
+ def terraform_import_commands(module_path: 'root')
62
+ prefix = "#{module_path}." unless module_path == 'root'
63
+ resource_id = stack.resources[name] && stack.resources[name].physical_resource_id
64
+ commands = ['# Import the Route Table record:']
65
+ commands << "terraform import #{prefix}aws_route_table.#{name.underscore} #{resource_id}"
66
+ commands
67
+ end
41
68
  end
42
69
  end
43
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convection
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.11
4
+ version: 2.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Manero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-05 00:00:00.000000000 Z
11
+ date: 2018-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport