bosh_cli 1.3091.0 → 1.3093.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cli/client/director.rb +20 -10
- data/lib/cli/commands/instances.rb +13 -0
- data/lib/cli/commands/stemcell.rb +16 -15
- data/lib/cli/task_tracking/task_tracker.rb +5 -2
- data/lib/cli/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6f0f6a01a728568c829a7dd5eb560be35876086
|
4
|
+
data.tar.gz: 75191afff90c2644f931c5c587b292e1fd85ade6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 860039081d2a22918caf7098525a80dfd1a5242a672fff3cd6afb171e64b53b9c7f1eabc37c982b6fdcaa99fdaa0b463640af3d79cd820e22bb262d365d646a3
|
7
|
+
data.tar.gz: b45e66e483540247760aea8256016d0ed47f1a1e339741353ffb68e9d11046b88dbce565ecd28da1dffcac7cb0965d52834856e372cb15247a0b151999721224
|
data/lib/cli/client/director.rb
CHANGED
@@ -90,7 +90,7 @@ module Bosh
|
|
90
90
|
options = options.dup
|
91
91
|
options[:content_type] = 'application/x-compressed'
|
92
92
|
|
93
|
-
upload_and_track(:post,
|
93
|
+
upload_and_track(:post, stemcells_path(options), filename, options)
|
94
94
|
end
|
95
95
|
|
96
96
|
def upload_remote_stemcell(stemcell_location, options = {})
|
@@ -99,7 +99,7 @@ module Bosh
|
|
99
99
|
options[:payload] = JSON.generate(payload)
|
100
100
|
options[:content_type] = 'application/json'
|
101
101
|
|
102
|
-
request_and_track(:post,
|
102
|
+
request_and_track(:post, stemcells_path(options), options)
|
103
103
|
end
|
104
104
|
|
105
105
|
def get_version
|
@@ -645,6 +645,12 @@ module Bosh
|
|
645
645
|
path
|
646
646
|
end
|
647
647
|
|
648
|
+
def stemcells_path(options = {})
|
649
|
+
path = '/stemcells'
|
650
|
+
path << "?fix=true" if options[:fix]
|
651
|
+
path
|
652
|
+
end
|
653
|
+
|
648
654
|
def request(method, uri, content_type = nil, payload = nil, headers = {}, options = {})
|
649
655
|
headers = headers.dup
|
650
656
|
headers['Content-Type'] = content_type if content_type
|
@@ -723,12 +729,16 @@ module Bosh
|
|
723
729
|
end
|
724
730
|
end
|
725
731
|
|
726
|
-
def
|
727
|
-
http_client
|
732
|
+
def generate_http_client
|
733
|
+
@http_client ||= HTTPClient.new.tap do |http_client|
|
734
|
+
http_client.send_timeout = API_TIMEOUT
|
735
|
+
http_client.receive_timeout = API_TIMEOUT
|
736
|
+
http_client.connect_timeout = CONNECT_TIMEOUT
|
737
|
+
end
|
738
|
+
end
|
728
739
|
|
729
|
-
|
730
|
-
http_client
|
731
|
-
http_client.connect_timeout = CONNECT_TIMEOUT
|
740
|
+
def perform_http_request(method, uri, payload = nil, headers = {}, &block)
|
741
|
+
http_client = generate_http_client
|
732
742
|
|
733
743
|
if @ca_cert.nil?
|
734
744
|
http_client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
@@ -753,8 +763,8 @@ module Bosh
|
|
753
763
|
begin
|
754
764
|
cert_store = OpenSSL::X509::Store.new
|
755
765
|
cert_store.add_file(@ca_cert)
|
756
|
-
rescue OpenSSL::X509::StoreError
|
757
|
-
err(
|
766
|
+
rescue OpenSSL::X509::StoreError => e
|
767
|
+
err("Invalid SSL Cert for '#{uri}': #{e.message}")
|
758
768
|
end
|
759
769
|
http_client.ssl_config.cert_store = cert_store
|
760
770
|
end
|
@@ -780,7 +790,7 @@ module Bosh
|
|
780
790
|
OpenSSL::X509::StoreError => e
|
781
791
|
|
782
792
|
if e.is_a?(OpenSSL::SSL::SSLError) && e.message.include?('certificate verify failed')
|
783
|
-
err(
|
793
|
+
err("Invalid SSL Cert for '#{uri}': #{e.message}")
|
784
794
|
end
|
785
795
|
raise DirectorInaccessible, "cannot access director (#{e.message})"
|
786
796
|
|
@@ -7,6 +7,7 @@ module Bosh::Cli::Command
|
|
7
7
|
option '--details', 'Return detailed instance information'
|
8
8
|
option '--dns', 'Return instance DNS A records'
|
9
9
|
option '--vitals', 'Return instance vitals information'
|
10
|
+
option '--ps', "Return instance process information"
|
10
11
|
def list()
|
11
12
|
auth_required
|
12
13
|
deployment_required
|
@@ -65,6 +66,7 @@ module Bosh::Cli::Command
|
|
65
66
|
end
|
66
67
|
t.headings = headings
|
67
68
|
|
69
|
+
s = instances.size
|
68
70
|
sorted.each do |instance|
|
69
71
|
job = "#{instance['job_name'] || 'unknown'}/#{instance['index'] || 'unknown'}"
|
70
72
|
ips = Array(instance['ips']).join("\n")
|
@@ -115,6 +117,17 @@ module Bosh::Cli::Command
|
|
115
117
|
end
|
116
118
|
|
117
119
|
t << row
|
120
|
+
s -= 1
|
121
|
+
if options[:ps] && instance['processes']
|
122
|
+
instance['processes'].each do |process|
|
123
|
+
name = process['name']
|
124
|
+
state = process['state']
|
125
|
+
process_row = [" #{name}", "#{state}"]
|
126
|
+
(headings.size - 2).times { process_row << '' }
|
127
|
+
t << process_row
|
128
|
+
end
|
129
|
+
t << :separator if s > 0
|
130
|
+
end
|
118
131
|
end
|
119
132
|
end
|
120
133
|
|
@@ -27,13 +27,20 @@ module Bosh::Cli
|
|
27
27
|
end
|
28
28
|
|
29
29
|
usage 'upload stemcell'
|
30
|
-
desc
|
30
|
+
desc "Upload stemcell (stemcell_location can be a local file or a remote URI). \
|
31
|
+
Note that --skip-if-exists and --fix can not be used together."
|
31
32
|
option '--skip-if-exists', 'skips upload if stemcell already exists'
|
33
|
+
option '--fix', 'replaces the stemcell if already exists'
|
32
34
|
def upload(stemcell_location)
|
33
35
|
auth_required
|
34
36
|
show_current_state
|
35
37
|
|
38
|
+
if options[:skip_if_exists] && options[:fix]
|
39
|
+
err("Option '--skip-if-exists' and option '--fix' should not be used together")
|
40
|
+
end
|
41
|
+
|
36
42
|
stemcell_type = stemcell_location =~ /^#{URI::regexp}$/ ? 'remote' : 'local'
|
43
|
+
|
37
44
|
if stemcell_type == 'local'
|
38
45
|
stemcell = Bosh::Cli::Stemcell.new(stemcell_location)
|
39
46
|
|
@@ -46,19 +53,16 @@ module Bosh::Cli
|
|
46
53
|
err('Stemcell is invalid, please fix, verify and upload again')
|
47
54
|
end
|
48
55
|
|
49
|
-
say('Checking if stemcell already exists...')
|
50
56
|
name = stemcell.manifest['name']
|
51
57
|
version = stemcell.manifest['version']
|
52
58
|
|
53
|
-
if exists?(name, version)
|
59
|
+
if !options[:fix] && exists?(name, version)
|
54
60
|
if options[:skip_if_exists]
|
55
61
|
say("Stemcell `#{name}/#{version}' already exists. Skipping upload.")
|
56
62
|
return
|
57
63
|
else
|
58
64
|
err("Stemcell `#{name}/#{version}' already exists. Increment the version if it has changed.")
|
59
65
|
end
|
60
|
-
else
|
61
|
-
say('No')
|
62
66
|
end
|
63
67
|
|
64
68
|
stemcell_location = stemcell.stemcell_file
|
@@ -71,7 +75,7 @@ module Bosh::Cli
|
|
71
75
|
say("Using remote stemcell `#{stemcell_location}'")
|
72
76
|
end
|
73
77
|
|
74
|
-
status, task_id = apply_upload_stemcell_strategy(stemcell_type, stemcell_location)
|
78
|
+
status, task_id = apply_upload_stemcell_strategy(stemcell_type, stemcell_location, options[:fix]?{fix: true}:{})
|
75
79
|
success_message = 'Stemcell uploaded and created.'
|
76
80
|
|
77
81
|
if status == :error && options[:skip_if_exists] && last_event(task_id)['error']['code'] == STEMCELL_EXISTS_ERROR_CODE
|
@@ -140,11 +144,7 @@ module Bosh::Cli
|
|
140
144
|
|
141
145
|
force = !!options[:force]
|
142
146
|
|
143
|
-
|
144
|
-
|
145
|
-
unless exists?(name, version)
|
146
|
-
err("Stemcell `#{name}/#{version}' does not exist")
|
147
|
-
end
|
147
|
+
err("Stemcell `#{name}/#{version}' does not exist") unless exists?(name, version)
|
148
148
|
|
149
149
|
say("You are going to delete stemcell `#{name}/#{version}'".make_red)
|
150
150
|
|
@@ -168,11 +168,11 @@ module Bosh::Cli
|
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
171
|
-
def apply_upload_stemcell_strategy(stemcell_type, stemcell_location)
|
171
|
+
def apply_upload_stemcell_strategy(stemcell_type, stemcell_location, options={})
|
172
172
|
if stemcell_type == 'local'
|
173
|
-
director.upload_stemcell(stemcell_location)
|
173
|
+
director.upload_stemcell(stemcell_location, options)
|
174
174
|
else
|
175
|
-
director.upload_remote_stemcell(stemcell_location)
|
175
|
+
director.upload_remote_stemcell(stemcell_location, options)
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
@@ -182,10 +182,11 @@ module Bosh::Cli
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def exists?(name, version)
|
185
|
+
say('Checking if stemcell already exists...')
|
185
186
|
existing = director.list_stemcells.select do |sc|
|
186
187
|
sc['name'] == name && sc['version'] == version
|
187
188
|
end
|
188
|
-
|
189
|
+
existing.empty? ? say('No'):say('Yes')
|
189
190
|
!existing.empty?
|
190
191
|
end
|
191
192
|
|
@@ -13,7 +13,10 @@ module Bosh::Cli::TaskTracking
|
|
13
13
|
def initialize(director, task_id, options = {})
|
14
14
|
@director = director
|
15
15
|
@task_id = task_id
|
16
|
-
@
|
16
|
+
@task_finished_states = 'done error cancelled'
|
17
|
+
if(options[:task_success_state])
|
18
|
+
@task_finished_states << options[:task_success_state].to_s
|
19
|
+
end
|
17
20
|
@options = options
|
18
21
|
|
19
22
|
@quiet = !!options[:quiet]
|
@@ -140,7 +143,7 @@ module Bosh::Cli::TaskTracking
|
|
140
143
|
end
|
141
144
|
|
142
145
|
def finished?(state)
|
143
|
-
|
146
|
+
@task_finished_states.include?(state)
|
144
147
|
end
|
145
148
|
|
146
149
|
def interactive?
|
data/lib/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3093.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_common
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.3093.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.3093.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bosh-template
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.3093.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.3093.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: cf-uaa-lib
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
131
|
+
version: 1.3093.0
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
138
|
+
version: 1.3093.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: net-ssh
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|