cloudformation-tool 0.3.0 → 0.4.0

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: b666772e81896aee5d50a355876f1495e826a5ad
4
- data.tar.gz: 5095910a6c3a633fd403387ba1b77017fa75b6d3
3
+ metadata.gz: ea4d03ffcb514c887abcec0c712afed72c743f76
4
+ data.tar.gz: 0b1a375be3b6e62989f15145b2c483ece932427d
5
5
  SHA512:
6
- metadata.gz: 4259484c8a74b199d52d69a506c47518b31bff665336321c98cb0001624cfd1d0b99f14f872cf3027c8bbe7efe35d3ebceeef91ecc829df961c006a3502abb1f
7
- data.tar.gz: c423832920011940388d0cb7a591cda512fef5b2e1a438328515b64ae473600dd968007e51a15ad227c2d1b3241462a3aab0ede6045d1aa0752eaed0822bcb40
6
+ metadata.gz: 46dba8a5f1b5754ed7e4a19022a88153cc370a556b17c260142c3f4e59d0cea847f682e555f764a549bfc2566538edc6c638f4a7cf964bac51f0b1060f6c506d
7
+ data.tar.gz: 376779ced42644adc13227d5532f450e4b9cf7c42b2a12bdd99d86eea565e43824cedda316bfdc0ec500b1ba3b57e37244cfc00e1d19248d78d42f067f36abce
@@ -17,6 +17,7 @@ module CloudFormationTool
17
17
  @path = "#{@path}.yaml" if !File.exist? @path and File.exist? "#{@path}.yaml"
18
18
  @basedir = File.dirname(@path)
19
19
  @compiled = false
20
+ @params = {}
20
21
  text = File.read(@path)
21
22
  # remove comments because white space seen between comments can seriously psych Psych
22
23
  text.gsub!(/^#.*\n/s,'')
@@ -41,7 +42,8 @@ module CloudFormationTool
41
42
  @data = load_files(@data)
42
43
  end
43
44
 
44
- def to_yaml
45
+ def to_yaml(parameters = {})
46
+ @params = parameters
45
47
  compile.to_yaml
46
48
  end
47
49
 
@@ -122,6 +124,22 @@ module CloudFormationTool
122
124
  end
123
125
  end
124
126
 
127
+ def resolveVale(value)
128
+ case value
129
+ when Hash
130
+ if value['Ref']
131
+ @params[value['Ref']] || # parameters are set for this template - we can resolve
132
+ # no parameters, we are probably in a sub template, just return the ref and hope a parent template
133
+ # has what it takes to resolve the ref
134
+ value
135
+ else
136
+ raise CloudFormationTool::Errors::AppError, "Value #{value} is not a valid value or reference"
137
+ end
138
+ else
139
+ value;
140
+ end
141
+ end
142
+
125
143
  def load_files(data)
126
144
  case data
127
145
  when Array
@@ -136,7 +154,7 @@ module CloudFormationTool
136
154
  { "Fn::Base64" => { "Fn::Sub" => CloudInit.new("#{@basedir}/#{val["File"]}").compile } }
137
155
  elsif (key == "Code") and (val["URL"])
138
156
  # Support Lambda Code from arbitrary URLs
139
- LambdaCode.new(val["URL"]).to_cloudformation
157
+ LambdaCode.new(resolveVal(val["URL"])).to_cloudformation
140
158
  else
141
159
  load_files(val)
142
160
  end
@@ -45,7 +45,7 @@ module CloudFormationTool
45
45
  end
46
46
 
47
47
  def create(template, params = {})
48
- tmpl = CloudFormation.parse(template).to_yaml
48
+ tmpl = CloudFormation.parse(template).to_yaml(params)
49
49
  url = upload(make_filename('yaml'), tmpl)
50
50
  return update(url, template, params) if exist?
51
51
  log "Creating stack '#{name}' from '#{template}' params #{params.inspect}"
@@ -1,3 +1,3 @@
1
1
  module CloudFormationTool
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudformation-tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oded Arbel