aptible-cli 0.5.12 → 0.5.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/aptible/cli/agent.rb +5 -0
- data/lib/aptible/cli/helpers/operation.rb +17 -0
- data/lib/aptible/cli/subcommands/apps.rb +1 -2
- data/lib/aptible/cli/subcommands/config.rb +2 -2
- data/lib/aptible/cli/subcommands/rebuild.rb +1 -1
- data/lib/aptible/cli/subcommands/restart.rb +1 -1
- data/lib/aptible/cli/version.rb +1 -1
- data/spec/aptible/cli/subcommands/apps_spec.rb +11 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afe6307751ef50d084ce1b378adc2f94b203c289
|
4
|
+
data.tar.gz: 99a3c232ebef3b35e327f958fc4c61628ef6639b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f6b5177638c5c3a69215e8bee64e7d560fd22cae00db83112b51b0f53098c2737a92dbf666817b6d0689d513c0d27533e642d9af2a8fb06ed3a981afe30d0b7
|
7
|
+
data.tar.gz: 5f7ed6c2a95c266fe018a7fcb026f5b6ad21d28d005a86b4e013c8eefc4a9d47b3ad4e3d401bdcce72410279cc8624c7934a2cfee19c4471649e68d2ec02b39c
|
data/lib/aptible/cli/agent.rb
CHANGED
@@ -32,6 +32,11 @@ module Aptible
|
|
32
32
|
include Subcommands::Restart
|
33
33
|
include Subcommands::SSH
|
34
34
|
|
35
|
+
# Forward return codes on failures.
|
36
|
+
def self.exit_on_failure?
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
35
40
|
desc 'version', 'Print Aptible CLI version'
|
36
41
|
def version
|
37
42
|
puts "aptible-cli v#{Aptible::CLI::VERSION}"
|
@@ -19,6 +19,23 @@ module Aptible
|
|
19
19
|
operation.get
|
20
20
|
end
|
21
21
|
end
|
22
|
+
|
23
|
+
def attach_to_operation_logs(operation)
|
24
|
+
host = operation.resource.account.bastion_host
|
25
|
+
port = operation.resource.account.dumptruck_port
|
26
|
+
|
27
|
+
set_env('ACCESS_TOKEN', fetch_token)
|
28
|
+
set_env('APTIBLE_OPERATION', operation.id.to_s)
|
29
|
+
set_env('APTIBLE_CLI_COMMAND', 'oplog')
|
30
|
+
|
31
|
+
opts = " -o 'SendEnv=*' -o StrictHostKeyChecking=no " \
|
32
|
+
'-o UserKnownHostsFile=/dev/null -o LogLevel=quiet'
|
33
|
+
result = Kernel.system "ssh #{opts} -p #{port} root@#{host}"
|
34
|
+
# If Dumptruck is down, fall back to polling for success. If the
|
35
|
+
# operation failed, poll_for_success will immediately fall through to
|
36
|
+
# the error message.
|
37
|
+
poll_for_success(operation) unless result
|
38
|
+
end
|
22
39
|
end
|
23
40
|
end
|
24
41
|
end
|
@@ -45,8 +45,7 @@ module Aptible
|
|
45
45
|
app = ensure_app(options)
|
46
46
|
service = app.services.find { |s| s.process_type == type }
|
47
47
|
op = service.create_operation(type: 'scale', container_count: num)
|
48
|
-
|
49
|
-
say "Scaled #{app.handle} to #{num} instances."
|
48
|
+
attach_to_operation_logs(op)
|
50
49
|
end
|
51
50
|
|
52
51
|
option :app
|
@@ -28,7 +28,7 @@ module Aptible
|
|
28
28
|
env = Hash[args.map { |arg| arg.split('=', 2) }]
|
29
29
|
operation = app.create_operation(type: 'configure', env: env)
|
30
30
|
puts 'Updating configuration and restarting app...'
|
31
|
-
|
31
|
+
attach_to_operation_logs(operation)
|
32
32
|
end
|
33
33
|
|
34
34
|
desc 'config:set', 'Alias for config:add'
|
@@ -47,7 +47,7 @@ module Aptible
|
|
47
47
|
env = Hash[args.map { |arg| [arg, ''] }]
|
48
48
|
operation = app.create_operation(type: 'configure', env: env)
|
49
49
|
puts 'Updating configuration and restarting app...'
|
50
|
-
|
50
|
+
attach_to_operation_logs(operation)
|
51
51
|
end
|
52
52
|
|
53
53
|
desc 'config:unset', 'Alias for config:rm'
|
data/lib/aptible/cli/version.rb
CHANGED
@@ -10,21 +10,29 @@ end
|
|
10
10
|
class Operation < OpenStruct
|
11
11
|
end
|
12
12
|
|
13
|
+
class Account < OpenStruct
|
14
|
+
end
|
15
|
+
|
13
16
|
describe Aptible::CLI::Agent do
|
14
17
|
before { subject.stub(:ask) }
|
15
18
|
before { subject.stub(:save_token) }
|
16
19
|
before { subject.stub(:fetch_token) { double 'token' } }
|
20
|
+
before { subject.stub(:attach_to_operation_logs) }
|
17
21
|
|
18
22
|
let(:service) { Service.new(process_type: 'web') }
|
19
23
|
let(:op) { Operation.new(status: 'succeeded') }
|
20
|
-
let(:
|
24
|
+
let(:account) { Account.new(bastion_host: 'localhost', dumptruck_port: 1234) }
|
25
|
+
let(:apps) do
|
26
|
+
[App.new(handle: 'hello', services: [service], account: account)]
|
27
|
+
end
|
21
28
|
|
22
29
|
describe '#apps:scale' do
|
23
30
|
it 'should pass given correct parameters' do
|
24
31
|
allow(service).to receive(:create_operation) { op }
|
25
32
|
allow(subject).to receive(:options) { { app: 'hello' } }
|
26
|
-
|
33
|
+
allow(op).to receive(:resource) { apps.first }
|
27
34
|
allow(Aptible::Api::App).to receive(:all) { apps }
|
35
|
+
|
28
36
|
subject.send('apps:scale', 'web', 3)
|
29
37
|
end
|
30
38
|
|
@@ -40,8 +48,8 @@ describe Aptible::CLI::Agent do
|
|
40
48
|
it 'should fail if number is not a valid number' do
|
41
49
|
allow(service).to receive(:create_operation) { op }
|
42
50
|
allow(subject).to receive(:options) { { app: 'hello' } }
|
43
|
-
|
44
51
|
allow(Aptible::Api::App).to receive(:all) { apps }
|
52
|
+
|
45
53
|
expect do
|
46
54
|
subject.send('apps:scale', 'web', 'potato')
|
47
55
|
end.to raise_error(ArgumentError)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aptible-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Macreery
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aptible-api
|
@@ -210,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
210
|
version: '0'
|
211
211
|
requirements: []
|
212
212
|
rubyforge_project:
|
213
|
-
rubygems_version: 2.
|
213
|
+
rubygems_version: 2.2.2
|
214
214
|
signing_key:
|
215
215
|
specification_version: 4
|
216
216
|
summary: Command-line interface for Aptible services
|