biosphere 0.2.12 → 0.2.13

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: 189e28cdc58fbf296bf95ecc2fc6d179781f464a
4
- data.tar.gz: 3924f72d34e55d811cd034afd98aab37341f759c
3
+ metadata.gz: 1502995009f69c7c5443594f62ffd8a13737a470
4
+ data.tar.gz: f2f605a347d1535e1ac33414abf27abeb6b25073
5
5
  SHA512:
6
- metadata.gz: caba813ea80f19c8972bf3aecb98c779b69f3329250f930d36d9ebb33c9ab2e1c44eac0cdf18aa5f18f3a32e029cbac7150560036a611e0ef947304e59dca5c9
7
- data.tar.gz: 091e550d18b35fb2787334ea09cb8085ff5cde378183ddec0b3a4b52876a9610dd9a0ed8c771906d8ea832b29ebdfd551ebba894d289fd0302d28c418b2acfee
6
+ metadata.gz: 56e6151183ca3d81ab3fb2b70478f289dc4c0a8664212bbcd55c4b6ecd183a430855c97cd46a89a2d2746d34f1d567e693d4775f13f429da76f6a40a075a24e1
7
+ data.tar.gz: 34ae7d91b1b20c289f4633bd68c53752120501083e4eecac1c5df66d786be06a525c063868c1ca0548c90d71f0353b37727045b8e9b1523bea9d854aff1397a2
@@ -9,6 +9,26 @@ require 'colorize'
9
9
  require 'biosphere/s3.rb'
10
10
  require 'pty'
11
11
 
12
+
13
+ # Asks a question
14
+ # Choises is an array of valid answers, such as ['y', 'n']
15
+ # If optional force is set to true then the first choise option is returned.
16
+ def ask_question(question, choices, force: false, color: :yellow)
17
+ answer = ""
18
+ if force
19
+ puts question + " Forcing since --force is set"
20
+ return choices.first
21
+ end
22
+
23
+ while answer.empty? || !choices.include?(answer.downcase)
24
+ puts (question + " [" + choices.join('/') + "]").colorize(color)
25
+ answer = STDIN.gets.chomp
26
+ end
27
+
28
+ return answer
29
+ end
30
+
31
+
12
32
  class BiosphereOpts
13
33
 
14
34
  def self.parse(args)
@@ -139,6 +159,19 @@ if options.src
139
159
  state.load()
140
160
  end
141
161
 
162
+ destroyed_deployments = state.node[:deployments].keys - suite.deployments.keys
163
+ if destroyed_deployments.length > 0
164
+ destroyed_deployments.each do |deployment_name|
165
+ answer = ask_question("State file has remins of an old deployment #{deployment_name}. Do you want to clean these now?", ['y', 'n'], force: options.force)
166
+ if answer == "y"
167
+ puts "Clearing #{deployment_name}"
168
+ state.node[:deployments].delete(deployment_name)
169
+ else
170
+ puts "Leaving #{deployment_name}, this might affect for example action kubectl."
171
+ end
172
+ end
173
+ end
174
+
142
175
  unless state.node[:deployments][""].nil?
143
176
  answer = ""
144
177
  if !options.force
@@ -148,10 +181,10 @@ if options.src
148
181
  end
149
182
 
150
183
  if answer == "n"
151
- puts "Remember to clean these out later, this state won't work with Kubernetes"
184
+ puts "Remember to clean these out later, this state won't work with Kubernetes"
152
185
  elsif answer == "y"
153
- state.node[:deployments].delete("")
154
- puts "\e[32mRemoved deployment with empty name\e[0m"
186
+ state.node[:deployments].delete("")
187
+ puts "\e[32mRemoved deployment with empty name\e[0m"
155
188
  end
156
189
  else
157
190
  puts "Forcing since --force was set"
@@ -159,6 +192,14 @@ if options.src
159
192
  end
160
193
  end
161
194
 
195
+ # If we are doing something which is allowed to modify the state
196
+ if ["build", "action", "commit"].include?(ARGV[0])
197
+ if !state.node[:biosphere]
198
+ state.node[:biosphere] = {}
199
+ end
200
+ state.node[:biosphere][:version] = ::Biosphere::Version
201
+ end
202
+
162
203
  if ARGV[0] == "build" && options.src
163
204
  suite.evaluate_resources()
164
205
 
@@ -174,6 +215,8 @@ if ARGV[0] == "build" && options.src
174
215
  end
175
216
 
176
217
  puts "Wrote #{count} files under #{options.build_dir}"
218
+ state.node[:biosphere][:last_build_time] = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
219
+
177
220
  state.save()
178
221
  s3.save("#{options.build_dir}/state.node") unless localmode
179
222
 
@@ -229,6 +272,9 @@ elsif ARGV[0] == "statereset" && options.src
229
272
  state.filename = "#{options.build_dir}/state.node"
230
273
  state.save()
231
274
  s3.save("#{options.build_dir}/state.node") unless localmode
275
+ suite.deployments.each do |name, deployment|
276
+ s3.delete_object()
277
+ end
232
278
  end
233
279
 
234
280
  elsif ARGV[0] == "commit" && options.src
@@ -327,6 +373,7 @@ elsif ARGV[0] == "commit" && options.src
327
373
 
328
374
  puts "Loading outputs for #{deployment} from #{state_file}"
329
375
  suite.deployments[deployment].load_outputs(state_file)
376
+ state.node[:biosphere][:last_commit_time] = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
330
377
  state.save()
331
378
  s3.save("#{options.build_dir}/#{deployment}.tfstate")
332
379
  s3.save("#{options.build_dir}/state.node")
@@ -394,3 +441,4 @@ else
394
441
  STDERR.puts "\nERROR: Unknown command #{ARGV[0]}. Maybe you wanted to do: \"biosphere action #{ARGV[0]}\"?"
395
442
  exit -1
396
443
  end
444
+
@@ -1,3 +1,3 @@
1
1
  class Biosphere
2
- Version = "0.2.12"
2
+ Version = "0.2.13"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biosphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juho Mäkinen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2017-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec