formatron 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9c3e003d264eb6297b6b16c9f36efb5460f8150
4
- data.tar.gz: 461f5a1a714234cddff9b75a699ea7d49eb0dae6
3
+ metadata.gz: 53582a32e61c5a984b2ce3a963398f7b6ac4ffd8
4
+ data.tar.gz: 42a7c9b8047d9b58ad96ed6754e3c4441140b9ce
5
5
  SHA512:
6
- metadata.gz: 3d7645c1fb2cc2472010f5d18cac8a41b429cda33f7715e2e92a96383edf3b6b28bd810a3c3b5be32d36256b622358164dcd7375bbf604ce99688999c5d2f541
7
- data.tar.gz: 7ac788337cbf9f577b38f91c9da1ff3772a35e4aac6c7ddc87a74e08d0e134803e69763026f99732e1f17763250e68928bb8b2f000f1522035857cc19c88d308
6
+ metadata.gz: bdec0b8c3ac59c8e2c717fd0da9f8a4d661c4a2fdeec56150d9f75c35d3d856daa211e4730af30ab83554803888f56454656386f17e2623930e584e8f86847ce
7
+ data.tar.gz: c077d7d087c9a13d2c01ca5fb77fe90a9efb4505e97424a5d6b167c77b4fc8f6577c0f71cf31210da16c8b6b7c4b5bfbf18dac8131232af484f23543942d4f38
data/lib/formatron/aws.rb CHANGED
@@ -64,6 +64,13 @@ class Formatron
64
64
  )
65
65
  end
66
66
 
67
+ def file_exists?(bucket:, key:)
68
+ @s3_client.list_objects(
69
+ bucket: bucket,
70
+ prefix: key
71
+ ).contents.length > 0
72
+ end
73
+
67
74
  def delete_file(bucket:, key:)
68
75
  @s3_client.delete_object(
69
76
  bucket: bucket,
@@ -31,13 +31,24 @@ class Formatron
31
31
  aws.delete_stack stack_name: stack_name
32
32
  end
33
33
 
34
- def self.outputs(aws:, name:, target:)
35
- stack_name = _stack_name name, target
36
- Formatron::LOG.info do
37
- "Query CloudFormation stack outputs: #{stack_name}"
34
+ # rubocop:disable Metrics/MethodLength
35
+ def self.outputs(aws:, bucket:, name:, target:)
36
+ if S3::CloudFormationTemplate.exists?(
37
+ aws: aws,
38
+ bucket: bucket,
39
+ name: name,
40
+ target: target
41
+ )
42
+ stack_name = _stack_name name, target
43
+ Formatron::LOG.info do
44
+ "Query CloudFormation stack outputs: #{stack_name}"
45
+ end
46
+ aws.stack_outputs stack_name: stack_name
47
+ else
48
+ {}
38
49
  end
39
- aws.stack_outputs stack_name: stack_name
40
50
  end
51
+ # rubocop:enable Metrics/MethodLength
41
52
 
42
53
  def self.stack_ready!(aws:, name:, target:)
43
54
  aws.stack_ready! stack_name: _stack_name(name, target)
@@ -12,10 +12,11 @@ class Formatron
12
12
  @hash = {}
13
13
  end
14
14
 
15
- def merge(dependency:, configuration:)
15
+ def merge(bucket:, dependency:, configuration:)
16
16
  @hash.merge! configuration
17
17
  @hash.merge! CloudFormation.outputs(
18
18
  aws: @aws,
19
+ bucket: bucket,
19
20
  name: dependency,
20
21
  target: @target
21
22
  )
@@ -41,6 +41,7 @@ class Formatron
41
41
  @config.deep_merge! configuration[CONFIG_KEY]
42
42
  @config.deep_merge! @local_config
43
43
  @outputs.merge(
44
+ bucket: bucket,
44
45
  dependency: dependency,
45
46
  configuration: configuration[OUTPUTS_KEY]
46
47
  )
@@ -30,6 +30,18 @@ class Formatron
30
30
  # rubocop:enable Metrics/MethodLength
31
31
  # rubocop:enable Metrics/ParameterLists
32
32
 
33
+ def self.exists?(aws:, bucket:, name:, target:)
34
+ key = Path.key(
35
+ name: name,
36
+ target: target,
37
+ sub_key: FILE_NAME
38
+ )
39
+ aws.file_exists?(
40
+ bucket: bucket,
41
+ key: key
42
+ )
43
+ end
44
+
33
45
  # rubocop:disable Metrics/MethodLength
34
46
  def self.destroy(aws:, bucket:, name:, target:)
35
47
  key = Path.key(
@@ -1,4 +1,4 @@
1
1
  # add version to class
2
2
  class Formatron
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
data/lib/formatron.rb CHANGED
@@ -136,8 +136,13 @@ class Formatron
136
136
  def deploy
137
137
  _deploy_configuration
138
138
  _deploy_chef_server_certs
139
- _deploy_template
140
- _deploy_stack
139
+ if @cloud_formation_template[:Resources].empty?
140
+ _destroy_template
141
+ _destroy_stack
142
+ else
143
+ _deploy_template
144
+ _deploy_stack
145
+ end
141
146
  end
142
147
 
143
148
  def provision
@@ -0,0 +1,21 @@
1
+ class Formatron
2
+ module Support
3
+ # Stub S3 list_objects response class
4
+ class S3ListObjectsResponse
5
+ attr_reader :contents
6
+
7
+ # Stub S3 get_object response.body class
8
+ class Contents
9
+ attr_reader :key
10
+
11
+ def initialize(key)
12
+ @key = key
13
+ end
14
+ end
15
+
16
+ def initialize(keys)
17
+ @contents = keys.map { |key| Contents.new(key) }
18
+ end
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formatron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Halliday
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-19 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -391,6 +391,7 @@ files:
391
391
  - support/dsl_test.rb
392
392
  - support/route53_get_hosted_zone_response.rb
393
393
  - support/s3_get_object_response.rb
394
+ - support/s3_list_objects_response.rb
394
395
  - support/template_test.rb
395
396
  homepage: https://github.com/pghalliday/formatron
396
397
  licenses: