sonic-screwdriver 2.2.1 → 2.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/lib/sonic/cli.rb +4 -0
- data/lib/sonic/execute.rb +30 -5
- data/lib/sonic/version.rb +1 -1
- data/sonic.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29aac04bb7f8d0a6b49d6a30813edbcb2aeaab5616fc33e641f80343a0e6e821
|
4
|
+
data.tar.gz: 00d10d65f3e2ba80fb946ea67ef4c8ece025bfcd1f4283979e25634c0b0a0599
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5623fd72b4faa65edcb42e63b7210a5254752e6c909a2c3343cd23e68adfb954d623ddc4d4bd9915e5d578a492ec8d2772e7f96a69b351d1d2e61ab69adc9c5a
|
7
|
+
data.tar.gz: ff9854b28d81f8f094fbe1d087624797fd00c9d6cba4fe59acbaf86fa70f7483f41d0c7edb48e704c80c8aff97e03ceb619a6e371b226f507970f59e3225745c
|
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.6] - 2021-04-30
|
7
|
+
- [#15](https://github.com/boltops-tools/sonic/pull/15) execution-timeout and delivery-timeout options and timeout sets both …
|
8
|
+
|
9
|
+
## [2.2.5] - 2021-04-24
|
10
|
+
- [#14](https://github.com/boltops-tools/sonic/pull/14) execute --timeout option: executionTimeout
|
11
|
+
|
12
|
+
## [2.2.4] - 2021-04-13
|
13
|
+
- [#13](https://github.com/boltops-tools/sonic/pull/13) execute --comment option
|
14
|
+
|
15
|
+
## [2.2.3] - 2021-04-12
|
16
|
+
- [#12](https://github.com/boltops-tools/sonic/pull/12) fix cli check
|
17
|
+
|
18
|
+
## [2.2.2] - 2021-04-12
|
19
|
+
- [#11](https://github.com/boltops-tools/sonic/pull/11) cli check
|
20
|
+
|
6
21
|
## [2.2.1] - 2021-04-12
|
7
22
|
- [#9](https://github.com/boltops-tools/sonic/pull/9) improve command array handling
|
8
23
|
|
data/lib/sonic/cli.rb
CHANGED
@@ -29,6 +29,10 @@ 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. defaults to nil which uses AWS-RunShellScript default of 3600"
|
34
|
+
option :execution_timeout, desc: "execution timeout in seconds. defaults to general timeout option"
|
35
|
+
option :delivery_timeout, desc: "delivery timeout in seconds. defaults to general timeout option"
|
32
36
|
def execute(*command)
|
33
37
|
Execute.new(command, options).execute
|
34
38
|
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
|
-
|
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
|
-
|
61
|
+
exit_status(0)
|
62
62
|
else
|
63
63
|
puts "Command unsuccessful: #{status}".color(:red)
|
64
|
-
|
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[:execution_timeout] || @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:
|
189
|
-
parameters:
|
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: {
|
@@ -194,6 +215,10 @@ module Sonic
|
|
194
215
|
cloud_watch_output_enabled: true,
|
195
216
|
},
|
196
217
|
)
|
218
|
+
|
219
|
+
t = @options[:execution_timeout] || @options[:timeout]
|
220
|
+
options[:timeout_seconds] = t if t
|
221
|
+
|
197
222
|
settings_options = settings["send_command"] || {}
|
198
223
|
options.merge(settings_options.deep_symbolize_keys)
|
199
224
|
end
|
data/lib/sonic/version.rb
CHANGED
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.
|
4
|
+
version: 2.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|