sonic-screwdriver 2.2.0 → 2.2.5

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
  SHA256:
3
- metadata.gz: 95e79b9c9806e506eb5630a849af60ce17517059460e98949c54a75f741b4639
4
- data.tar.gz: 8723c524148eb771d887fb79bc5aca90b3aaa322c71ba14de11cd4c69c6d1c98
3
+ metadata.gz: 6bbef13564fb67b71ae83ef8b80d9c67f3a7898bbdc5dd0215adb5309b478322
4
+ data.tar.gz: d27e4a05ccadc3bb45987fdfeaac328b6d620cef08fe4b5af89d7def964e9087
5
5
  SHA512:
6
- metadata.gz: 977d962d7ef3e133d055ecf252a8d93b33403daa7f09b0d21c31ddc7720a5a0eb4ea9ff418c3c3705eca0be4f1035efcae06c3f7fb15e7da0e42cdb82f6bcc2c
7
- data.tar.gz: 23c9dfa55f8a04cbffcd0c2997bb89cc52f465d0af27d4cbeb5b93bd52c9d4ec801150e4593abda76428591ef53049c2937cdaee87a38484955907969b05c997
6
+ metadata.gz: 2fb10c05307747cb731e28d9e30b3cbacbc929b8a0f5f4ccdc303c0e2ceb1a6f0e7234f62d7336f0e21e80d197cd843314b41773478c8e9251a67bdbd23e0b1b
7
+ data.tar.gz: 725ec5a6aaa226b6e70b042db8551665976803ec74a6dfa13d10a114a616a93301d2df8aa5e074ce75c8886300e8539a19d1de864579b1b450c9bb5948af2006
data/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely* adheres to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [2.2.5] - 2021-04-24
7
+ - [#14](https://github.com/boltops-tools/sonic/pull/14) execute --timeout option: executionTimeout
8
+
9
+ ## [2.2.4] - 2021-04-13
10
+ - [#13](https://github.com/boltops-tools/sonic/pull/13) execute --comment option
11
+
12
+ ## [2.2.3] - 2021-04-12
13
+ - [#12](https://github.com/boltops-tools/sonic/pull/12) fix cli check
14
+
15
+ ## [2.2.2] - 2021-04-12
16
+ - [#11](https://github.com/boltops-tools/sonic/pull/11) cli check
17
+
18
+ ## [2.2.1] - 2021-04-12
19
+ - [#9](https://github.com/boltops-tools/sonic/pull/9) improve command array handling
20
+
6
21
  ## [2.2.0]
7
22
  - #7 sonic execute command: `--tags` and `--instance-id` options instead of polymorphic list. Breaking behavior.
8
23
  - display output even if tags used
@@ -6,11 +6,12 @@
6
6
  <div class="footer-col col-md-4">
7
7
  <h3>More Tools</h3>
8
8
  <ul class="list-unstyled tools">
9
- <li><a href="http://rubyonjets.com">Jets</a></li>
10
- <li><a href="http://ufoships.com">Ufo</a></li>
11
- <li><a href="http://lono.cloud">Lono</a></li>
12
- <li><a href="http://jack-eb.com">Jack</a></li>
13
- <li><a href="https://boltops.com/toolbelt">Toolbelt</a></li>
9
+ <li><a href="https://terraspace.cloud">Terraspace</a></li>
10
+ <li><a href="https://kubes.guru">Kubes</a></li>
11
+ <li><a href="https://rubyonjets.com">Jets</a></li>
12
+ <li><a href="https://ufoships.com">Ufo</a></li>
13
+ <li><a href="https://lono.cloud">Lono</a></li>
14
+ <li><a href="https://jack-eb.com">Jack</a></li>
14
15
  </ul>
15
16
  </div>
16
17
  <div class="footer-col col-md-4">
data/lib/sonic/cli.rb CHANGED
@@ -29,6 +29,8 @@ module Sonic
29
29
  # filter - Filter ec2 instances by tag name or instance_ids separated by commas
30
30
  option :instance_ids, desc: %Q|Instance ids to execute command on. Format: --instance-ids "i-111,i-222"|
31
31
  option :tags, desc: %Q|Tags used to determine what instances to execute command on. Format: --tags "Key1=v1,v2;Key2=v3"|
32
+ option :comment, desc: "comment. defaults to the sonic command used"
33
+ option :timeout, aliases: %w[t], desc: "timeout in seconds. default to nil which uses AWS-RunShellScript default of 3600"
32
34
  def execute(*command)
33
35
  Execute.new(command, options).execute
34
36
  end
data/lib/sonic/execute.rb CHANGED
@@ -53,18 +53,32 @@ module Sonic
53
53
  puts
54
54
  return if @options[:noop]
55
55
  status = wait(command_id)
56
- instances_found = display_ssm_output(command_id)
56
+ display_ssm_output(command_id)
57
57
  display_console_url(command_id)
58
58
 
59
59
  if status == "Success"
60
60
  puts "Command successful: #{status}".color(:green)
61
- exit(0)
61
+ exit_status(0)
62
62
  else
63
63
  puts "Command unsuccessful: #{status}".color(:red)
64
- exit(1)
64
+ exit_status(1)
65
65
  end
66
66
  end
67
67
 
68
+ def exit_status(code)
69
+ exit(code) if cli?
70
+
71
+ if code == 0
72
+ true
73
+ else
74
+ raise "Error running command"
75
+ end
76
+ end
77
+
78
+ def cli?
79
+ $0.include?('sonic')
80
+ end
81
+
68
82
  def wait(command_id)
69
83
  ongoing_states = ["Pending", "InProgress", "Delayed"]
70
84
 
@@ -183,10 +197,17 @@ module Sonic
183
197
  def build_ssm_options
184
198
  criteria = transform_filter_option
185
199
  command = build_command(@command)
200
+ comment = @options[:comment] || "sonic #{ARGV.join(' ')}"
201
+ comment = comment[0..99] # comment has a max of 100 chars
202
+
203
+ parameters = { "commands" => command }
204
+ t = @options[:timeout]
205
+ parameters[:executionTimeout] = [t] if t # weird but executionTimeout expects an Array
206
+
186
207
  options = criteria.merge(
187
208
  document_name: "AWS-RunShellScript", # default
188
- comment: "sonic #{ARGV.join(' ')}"[0..99], # comment has a max of 100 chars
189
- parameters: { "commands" => command },
209
+ comment: comment,
210
+ parameters: parameters,
190
211
  # Default CloudWatchLog settings. Can be overwritten with settings.yml send_command
191
212
  # IMPORTANT: make sure the EC2 instance the command runs on has access to write to CloudWatch Logs.
192
213
  cloud_watch_output_config: {
@@ -256,7 +277,7 @@ module Sonic
256
277
  # The script is being feed inline so just join the command together into one script.
257
278
  # Still keep in an array form because that's how ssn.send_command works with AWS-RunShellScript
258
279
  # usually reads the command.
259
- [command.join(" ")]
280
+ command.is_a?(Array) ? command : [command]
260
281
  end
261
282
  end
262
283
 
data/lib/sonic/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sonic
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.5"
3
3
  end
data/sonic.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.homepage = "http://sonic-screwdriver.cloud/"
13
13
  spec.license = "MIT"
14
14
 
15
- spec.files = `git ls-files`.split($/)
15
+ spec.files = File.directory?('.git') ? `git ls-files`.split($/) : Dir.glob("**/*")
16
16
  spec.bindir = "exe"
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sonic-screwdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-28 00:00:00.000000000 Z
11
+ date: 2021-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -263,7 +263,6 @@ files:
263
263
  - CHANGELOG.md
264
264
  - CONTRIBUTING.md
265
265
  - Gemfile
266
- - Gemfile.lock
267
266
  - Guardfile
268
267
  - LICENSE.txt
269
268
  - README.md
@@ -420,7 +419,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
420
419
  - !ruby/object:Gem::Version
421
420
  version: '0'
422
421
  requirements: []
423
- rubygems_version: 3.1.2
422
+ rubygems_version: 3.2.5
424
423
  signing_key:
425
424
  specification_version: 4
426
425
  summary: Multi-functional tool to manage AWS infrastructure