blackstack-deployer 1.2.16 → 1.2.17

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/blackstack-deployer.rb +49 -38
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7466aeed2f2ea365d7db6a32c0ce631f003250d0be94c57a7622ed25ae7089b
4
- data.tar.gz: 95ec5407f0e0a90b48fa586c51d9c4e22b35cd54343d6d937ce5377f12f6c657
3
+ metadata.gz: 9e60ac86398b508a3c0262ee2a8d19d41e59994dbe293de5d155c68b0681d75a
4
+ data.tar.gz: 6054c1d54a2c3da6bea3b8e30ad1168c09450039918eeed55f1e1380deb7f01f
5
5
  SHA512:
6
- metadata.gz: 7b803e9242d6b063f3a77b4185e027bb6e242bf7ec1ea711b7c6ed838a3420688f53a8074ea6e8ac8d11dc1c645c566ec434c2c4b748b471014e68783a86e3f6
7
- data.tar.gz: c1435b21e31e84d11b1bb9d193672423706a0342bfb6434fa1f64689eb89a8d33f5d40ce6f42313c19cff736082c4a03f49d76414116a8b14ad7ff06f647ee51
6
+ metadata.gz: 441321acb984529b0d4fceb4b6b25cd6d7264731019d6076df6c8b5c65026345e9f7cab72c2b12df6843bedae5520b4b8dd6745d87e388057938a861a7ccd055
7
+ data.tar.gz: 5f487e1c15d30092ca92583eb98e0438334350cda2d719e77b18a03a416f7cfcb34fadd452de992c83b482f1c2b20c9c33cc1f9f0ea572825bf5f35348a1d1fd
@@ -213,6 +213,9 @@ module BlackStack
213
213
  # validate: existis a routine with a the value c[:command].to_s on its :name key
214
214
  errors << "The routine with the name #{c[:command].to_s} does not exist" unless BlackStack::Deployer::deployment_routines.select { |r| r.name == c[:command].to_s }.size > 0
215
215
  end
216
+ else
217
+ # validate: each line of the :command value must finish with ;
218
+ errors << "Each line in the :command value must finish with `;`.\nCommand: #{c[:command]}.\nRefer https://github.com/leandrosardi/blackstack-deployer#67-running-commands-in-background for more details." unless c[:command].strip.split("\n").select { |l| l.strip[-1,1] != ';' }.size == 0
216
219
  end
217
220
 
218
221
  # if c[:matches] exists
@@ -297,68 +300,76 @@ module BlackStack
297
300
  h
298
301
  end # def to_hash
299
302
 
300
- def run(node)
301
- l = BlackStack::Deployer.logger
302
- errors = []
303
- code = self.command
304
- output = nil
305
-
306
- # if code is a symbol
307
- if code.is_a?(Symbol)
308
-
309
- # if code is equel than :reboot
310
- if code == :reboot
311
- # call the node reboot method
312
- node.reboot
313
- else
314
- # look for a routine with this name
315
- r = BlackStack::Deployer.routines.select { |r| r.name == code.to_s }.first
316
- if !r.nil?
317
- r.run(node)
318
- else
319
- raise "The routine #{code.to_s} does not exist"
320
- end
321
- end
322
-
323
- # if code is a string
324
- elsif code.is_a?(String)
303
+ # return the code to exectute the command,
304
+ # after applying modifications requested by
305
+ # some parameters like `:show_outut` or `:background`.
306
+ def code(node)
307
+ ret = self.command
325
308
  # replacing parameters
326
- code.scan(/%[a-zA-Z0-9\_]+%/).each do |p|
309
+ ret.scan(/%[a-zA-Z0-9\_]+%/).each do |p|
327
310
  if p == '%eth0_ip%' # reserved parameter
328
311
  # TODO: move the method eth0_ip to the blackstack-nodes library
329
- code.gsub!(p, node.eth0_ip)
312
+ ret.gsub!(p, node.eth0_ip)
330
313
  elsif p == '%timestamp%' # reserved parameter
331
314
  # TODO: move this to a timestamp function on blackstack-core
332
- code.gsub!(p, Time.now.to_s.gsub(/\D/, ''))
315
+ ret.gsub!(p, Time.now.to_s.gsub(/\D/, ''))
333
316
  else
334
317
  if node.parameters.has_key?(p.gsub(/%/, '').to_sym)
335
- code.gsub!(p, node.parameters[p.gsub(/%/, '').to_sym].to_s)
318
+ ret.gsub!(p, node.parameters[p.gsub(/%/, '').to_sym].to_s)
336
319
  else
337
320
  raise "The parameter #{p} does not exist in the node descriptor #{node.parameters.to_s}"
338
321
  end
339
322
  end
340
323
  end
341
-
342
- # if the command is configured to run in background, and the flag show_ouput is off, then modify the code to run in background
324
+ # if the command is configured to run in background, and the flag show_ouput is off, then modify the ret to run in background
343
325
  if self.background && !BlackStack::Deployer.show_output
344
- lines = code.strip.lines
326
+ lines = ret.strip.lines
345
327
  total = lines.size
346
328
  i = 0
347
329
  lines.each { |l|
348
330
  i += 1
349
331
  if i == total
350
- l.gsub!(/;$/, '> /dev/null 2>&1 &')
332
+ l.gsub!(/;$/, ' > /dev/null 2>&1 &')
351
333
  else
352
- l.gsub!(/;$/, '> /dev/null 2>&1;')
334
+ l.gsub!(/;$/, ' > /dev/null 2>&1;')
353
335
  end
354
336
  }
355
- code = lines.join("\n")
337
+ ret = lines.join("\n")
356
338
  end
339
+ # return the code
340
+ ret
341
+ end
342
+
343
+ def run(node)
344
+ l = BlackStack::Deployer.logger
345
+ errors = []
346
+ output = nil
347
+ s = self.code(node)
348
+
349
+ # if self.command is a symbol
350
+ if self.command.is_a?(Symbol)
351
+
352
+ # if self.command is equel than :reboot
353
+ if self.command == :reboot
354
+ # call the node reboot method
355
+ node.reboot
356
+ else
357
+ # look for a routine with this name
358
+ r = BlackStack::Deployer.routines.select { |r| r.name == self.command.to_s }.first
359
+ if !r.nil?
360
+ r.run(node)
361
+ else
362
+ raise "The routine #{self.command.to_s} does not exist"
363
+ end
364
+ end
365
+
366
+ # if self.command is a string
367
+ elsif self.command.is_a?(String)
357
368
 
358
369
  # running the command
359
370
  l.logs "Show command output... " if BlackStack::Deployer.show_output
360
- l.log "\n\nCommand:\n--------\n\n#{code} " if BlackStack::Deployer.show_output
361
- output = node.exec(code, self.sudo)
371
+ l.log "\n\nCommand:\n--------\n\n#{s} " if BlackStack::Deployer.show_output
372
+ output = node.exec(s, self.sudo)
362
373
  l.log "\n\nOutput:\n-------\n\n#{output}" if BlackStack::Deployer.show_output
363
374
  l.logf('done tracing.') if BlackStack::Deployer.show_output
364
375
 
@@ -382,7 +393,7 @@ module BlackStack
382
393
  # return a hash descriptor of the command result
383
394
  {
384
395
  :command => self.command,
385
- :code => code,
396
+ :code => s,
386
397
  :output => output,
387
398
  :errors => errors,
388
399
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blackstack-deployer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.16
4
+ version: 1.2.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi