bosh_cli 1.3033.0 → 1.3039.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/bosh +3 -0
- data/bin/optionally_run_with_bundler.rb +36 -0
- data/lib/cli/client/director.rb +15 -1
- data/lib/cli/commands/deployment.rb +13 -3
- data/lib/cli/commands/instances.rb +119 -0
- data/lib/cli/commands/job_management.rb +12 -4
- data/lib/cli/commands/release/inspect_release.rb +73 -0
- data/lib/cli/job_state.rb +3 -2
- data/lib/cli/task_tracking/stage_collection.rb +5 -4
- data/lib/cli/version.rb +1 -1
- data/lib/cli/vm_state.rb +9 -2
- metadata +12 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39b0415133fae5b37514f70649163d3f856a9818
|
4
|
+
data.tar.gz: b21f0d0f0326a90915458b758c89316fbd069ade
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ea19816f2b52adbc1fdf1492488d3197910e0949e9ec67c896baa7edcb00dea59c111737c5eaa213b5478029c7f42413088996e5439b6a49e5b0d9b8031698e
|
7
|
+
data.tar.gz: 689a7cd6b64bd18ad5e2effba90d6357f2339f9ad54bf84c7406cf7768f5be5b263647d0fc0bc1fb0a91630722373c9ad563871c553d7419915a89c9daaa61c5
|
data/bin/bosh
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
# #!/usr/bin/env ruby
|
2
|
+
|
3
|
+
class OptionallyRunWithBundler
|
4
|
+
def self.run(env)
|
5
|
+
if env['BOSH_USE_BUNDLER']
|
6
|
+
gemfile_path = File.join(File.dirname(__FILE__), 'run_bosh_with_bundler.Gemfile')
|
7
|
+
|
8
|
+
if File.exists?(gemfile_path)
|
9
|
+
rubyopt = [env['RUBYOPT']].compact
|
10
|
+
|
11
|
+
if rubyopt.empty? || rubyopt.first !~ /-rbundler\/setup/
|
12
|
+
rubyopt.unshift('-rbundler/setup')
|
13
|
+
|
14
|
+
env['BUNDLE_GEMFILE'] = gemfile_path
|
15
|
+
env['RUBYOPT'] = rubyopt.join(' ')
|
16
|
+
|
17
|
+
kernel_exec_current_command
|
18
|
+
end
|
19
|
+
else
|
20
|
+
require "fileutils"
|
21
|
+
FileUtils.mkdir_p(File.dirname(gemfile_path))
|
22
|
+
File.write(gemfile_path, "gem 'bosh_cli'")
|
23
|
+
|
24
|
+
print "\nOptimizing gem configuration...\n\n"
|
25
|
+
|
26
|
+
env['BUNDLE_GEMFILE'] = gemfile_path
|
27
|
+
|
28
|
+
require 'bundler/setup'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.kernel_exec_current_command
|
34
|
+
Kernel.exec($0, *ARGV)
|
35
|
+
end
|
36
|
+
end
|
data/lib/cli/client/director.rb
CHANGED
@@ -137,6 +137,15 @@ module Bosh
|
|
137
137
|
get_json("/releases/#{name}")
|
138
138
|
end
|
139
139
|
|
140
|
+
def inspect_release(name, version)
|
141
|
+
url = "/releases/#{name}"
|
142
|
+
|
143
|
+
extras = []
|
144
|
+
extras << ['version', version]
|
145
|
+
|
146
|
+
get_json(add_query_string(url, extras))
|
147
|
+
end
|
148
|
+
|
140
149
|
def match_packages(manifest_yaml)
|
141
150
|
url = '/packages/matches'
|
142
151
|
status, body = post(url, 'text/yaml', manifest_yaml)
|
@@ -216,13 +225,15 @@ module Bosh
|
|
216
225
|
options = options.dup
|
217
226
|
|
218
227
|
recreate = options.delete(:recreate)
|
228
|
+
skip_drain = options.delete(:skip_drain)
|
219
229
|
options[:content_type] = 'text/yaml'
|
220
230
|
options[:payload] = manifest_yaml
|
221
231
|
|
222
232
|
url = '/deployments'
|
223
233
|
|
224
234
|
extras = []
|
225
|
-
extras << ['recreate', 'true']
|
235
|
+
extras << ['recreate', 'true'] if recreate
|
236
|
+
extras << ['skip_drain', skip_drain] if skip_drain
|
226
237
|
|
227
238
|
request_and_track(:post, add_query_string(url, extras), options)
|
228
239
|
end
|
@@ -278,9 +289,12 @@ module Bosh
|
|
278
289
|
job_name, index, new_state, options = {})
|
279
290
|
options = options.dup
|
280
291
|
|
292
|
+
skip_drain = !!options.delete(:skip_drain)
|
293
|
+
|
281
294
|
url = "/deployments/#{deployment_name}/jobs/#{job_name}"
|
282
295
|
url += "/#{index}" if index
|
283
296
|
url += "?state=#{new_state}"
|
297
|
+
url += "&skip_drain=true" if skip_drain
|
284
298
|
|
285
299
|
options[:payload] = manifest_yaml
|
286
300
|
options[:content_type] = 'text/yaml'
|
@@ -79,8 +79,9 @@ module Bosh::Cli::Command
|
|
79
79
|
# bosh deploy
|
80
80
|
usage "deploy"
|
81
81
|
desc "Deploy according to the currently selected deployment manifest"
|
82
|
-
option "--recreate", "
|
83
|
-
option "--redact-diff", "
|
82
|
+
option "--recreate", "Recreate all VMs in deployment"
|
83
|
+
option "--redact-diff", "Redact manifest value changes in deployment"
|
84
|
+
option "--skip-drain [job1,job2]", String, "Skip drain script for either specific or all jobs"
|
84
85
|
def perform
|
85
86
|
auth_required
|
86
87
|
recreate = !!options[:recreate]
|
@@ -101,7 +102,16 @@ module Bosh::Cli::Command
|
|
101
102
|
cancel_deployment
|
102
103
|
end
|
103
104
|
|
104
|
-
|
105
|
+
deploy_options = { recreate: recreate }
|
106
|
+
|
107
|
+
if options.has_key?(:skip_drain)
|
108
|
+
# when key is present but no jobs specified OptionParser
|
109
|
+
# adds a key with nil value, in that case we want to
|
110
|
+
# skip drain for all jobs
|
111
|
+
deploy_options[:skip_drain] = options[:skip_drain].nil? ? '*' : options[:skip_drain]
|
112
|
+
end
|
113
|
+
|
114
|
+
status, task_id = director.deploy(manifest.yaml, deploy_options)
|
105
115
|
|
106
116
|
task_report(status, task_id, "Deployed `#{manifest.name.make_green}' to `#{target_name.make_green}'")
|
107
117
|
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# Copyright (c) 2009-2012 VMware, Inc.
|
2
|
+
|
3
|
+
module Bosh::Cli::Command
|
4
|
+
class Instances < Base
|
5
|
+
usage 'instances'
|
6
|
+
desc 'List all instances in a deployment'
|
7
|
+
option '--details', 'Return detailed instance information'
|
8
|
+
option '--dns', 'Return instance DNS A records'
|
9
|
+
option '--vitals', 'Return instance vitals information'
|
10
|
+
def list()
|
11
|
+
auth_required
|
12
|
+
deployment_required
|
13
|
+
manifest = Bosh::Cli::Manifest.new(deployment, director)
|
14
|
+
manifest.load
|
15
|
+
deployment_name = manifest.name
|
16
|
+
|
17
|
+
deps = director.list_deployments
|
18
|
+
selected = deps.select { |dep| dep['name'] == deployment_name }
|
19
|
+
err("The deployment '#{deployment_name}' doesn't exist") if selected.size == 0
|
20
|
+
|
21
|
+
show_current_state(deployment_name)
|
22
|
+
no_track_unsupported
|
23
|
+
|
24
|
+
if deployment_name.nil?
|
25
|
+
else
|
26
|
+
show_deployment deployment_name, options
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def show_deployment(name, options={})
|
31
|
+
instances = director.fetch_vm_state(name)
|
32
|
+
|
33
|
+
if instances.empty?
|
34
|
+
nl
|
35
|
+
say('No instances')
|
36
|
+
nl
|
37
|
+
return
|
38
|
+
end
|
39
|
+
|
40
|
+
sorted = instances.sort do |a, b|
|
41
|
+
s = a['job_name'].to_s <=> b['job_name'].to_s
|
42
|
+
s = a['index'].to_i <=> b['index'].to_i if s == 0
|
43
|
+
s = a['resource_pool'].to_s <=> b['resource_pool'].to_s if s == 0
|
44
|
+
s
|
45
|
+
end
|
46
|
+
|
47
|
+
instances_table = table do |t|
|
48
|
+
headings = ['Instance', 'State', 'Resource Pool', 'IPs']
|
49
|
+
if options[:details]
|
50
|
+
headings += ['CID', 'Agent ID', 'Resurrection']
|
51
|
+
end
|
52
|
+
if options[:dns]
|
53
|
+
headings += ['DNS A records']
|
54
|
+
end
|
55
|
+
if options[:vitals]
|
56
|
+
headings += [{:value => "Load\n(avg01, avg05, avg15)", :alignment => :center}]
|
57
|
+
headings += ["CPU\nUser", "CPU\nSys", "CPU\nWait"]
|
58
|
+
headings += ['Memory Usage', 'Swap Usage']
|
59
|
+
headings += ["System\nDisk Usage", "Ephemeral\nDisk Usage", "Persistent\nDisk Usage"]
|
60
|
+
end
|
61
|
+
t.headings = headings
|
62
|
+
|
63
|
+
sorted.each do |instance|
|
64
|
+
job = "#{instance['job_name'] || 'unknown'}/#{instance['index'] || 'unknown'}"
|
65
|
+
ips = Array(instance['ips']).join("\n")
|
66
|
+
dns_records = Array(instance['dns']).join("\n")
|
67
|
+
vitals = instance['vitals']
|
68
|
+
|
69
|
+
row = [job, instance['job_state'], instance['resource_pool'], ips]
|
70
|
+
|
71
|
+
if options[:details]
|
72
|
+
row += [instance['vm_cid'], instance['agent_id'], instance['resurrection_paused'] ? 'paused' : 'active']
|
73
|
+
end
|
74
|
+
|
75
|
+
if options[:dns]
|
76
|
+
row += [dns_records.empty? ? 'n/a' : dns_records]
|
77
|
+
end
|
78
|
+
|
79
|
+
if options[:vitals]
|
80
|
+
if vitals
|
81
|
+
cpu = vitals['cpu']
|
82
|
+
mem = vitals['mem']
|
83
|
+
swap = vitals['swap']
|
84
|
+
disk = vitals['disk']
|
85
|
+
|
86
|
+
row << vitals['load'].join(', ')
|
87
|
+
row << "#{cpu['user']}%"
|
88
|
+
row << "#{cpu['sys']}%"
|
89
|
+
row << "#{cpu['wait']}%"
|
90
|
+
row << "#{mem['percent']}% (#{pretty_size(mem['kb'].to_i * 1024)})"
|
91
|
+
row << "#{swap['percent']}% (#{pretty_size(swap['kb'].to_i * 1024)})"
|
92
|
+
row << "#{disk['system']['percent']}%"
|
93
|
+
if disk['ephemeral'].nil?
|
94
|
+
row << 'n/a'
|
95
|
+
else
|
96
|
+
row << "#{disk['ephemeral']['percent']}%"
|
97
|
+
end
|
98
|
+
if disk['persistent'].nil?
|
99
|
+
row << 'n/a'
|
100
|
+
else
|
101
|
+
row << "#{disk['persistent']['percent']}%"
|
102
|
+
end
|
103
|
+
else
|
104
|
+
9.times { row << 'n/a' }
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
t << row
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
nl
|
113
|
+
say(instances_table)
|
114
|
+
nl
|
115
|
+
say('Instances total: %d' % instances.size)
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
end
|
@@ -6,6 +6,7 @@ module Bosh::Cli
|
|
6
6
|
module Command
|
7
7
|
class JobManagement < Base
|
8
8
|
FORCE = 'Proceed even when there are other manifest changes'
|
9
|
+
SKIP_DRAIN = 'Skip running drain script'
|
9
10
|
|
10
11
|
# bosh start
|
11
12
|
usage 'start'
|
@@ -21,6 +22,7 @@ module Bosh::Cli
|
|
21
22
|
option '--soft', 'Stop process only'
|
22
23
|
option '--hard', 'Power off VM'
|
23
24
|
option '--force', FORCE
|
25
|
+
option '--skip-drain', SKIP_DRAIN
|
24
26
|
def stop_job(job, index = nil)
|
25
27
|
if hard?
|
26
28
|
change_job_state(:detach, job, index)
|
@@ -33,6 +35,7 @@ module Bosh::Cli
|
|
33
35
|
usage 'restart'
|
34
36
|
desc 'Restart job/instance (soft stop + start)'
|
35
37
|
option '--force', FORCE
|
38
|
+
option '--skip-drain', SKIP_DRAIN
|
36
39
|
def restart_job(job, index = nil)
|
37
40
|
change_job_state(:restart, job, index)
|
38
41
|
end
|
@@ -41,6 +44,7 @@ module Bosh::Cli
|
|
41
44
|
usage 'recreate'
|
42
45
|
desc 'Recreate job/instance (hard stop + start)'
|
43
46
|
option '--force', FORCE
|
47
|
+
option '--skip-drain', SKIP_DRAIN
|
44
48
|
def recreate_job(job, index = nil)
|
45
49
|
change_job_state(:recreate, job, index)
|
46
50
|
end
|
@@ -53,21 +57,25 @@ module Bosh::Cli
|
|
53
57
|
|
54
58
|
index = valid_index_for(manifest.hash, job, index)
|
55
59
|
vm_state = VmState.new(self, manifest, force?)
|
56
|
-
job_state = JobState.new(self, vm_state)
|
60
|
+
job_state = JobState.new(self, vm_state, skip_drain: skip_drain?)
|
57
61
|
status, task_id, completion_desc = job_state.change(state, job, index)
|
58
62
|
task_report(status, task_id, completion_desc)
|
59
63
|
end
|
60
64
|
|
61
65
|
def hard?
|
62
|
-
options[:hard]
|
66
|
+
!!options[:hard]
|
63
67
|
end
|
64
68
|
|
65
69
|
def soft?
|
66
|
-
options[:soft]
|
70
|
+
!!options[:soft]
|
67
71
|
end
|
68
72
|
|
69
73
|
def force?
|
70
|
-
options[:force]
|
74
|
+
!!options[:force]
|
75
|
+
end
|
76
|
+
|
77
|
+
def skip_drain?
|
78
|
+
!!options[:skip_drain]
|
71
79
|
end
|
72
80
|
|
73
81
|
def parse_manifest(operation, job)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Bosh::Cli::Command
|
2
|
+
module Release
|
3
|
+
class InspectRelease < Base
|
4
|
+
|
5
|
+
usage 'inspect release'
|
6
|
+
desc 'List all jobs, packages, and compiled packages associated with a release. Release must be in the form {name}/{version}'
|
7
|
+
def inspect(release)
|
8
|
+
auth_required
|
9
|
+
show_current_state
|
10
|
+
|
11
|
+
release = Bosh::Cli::NameVersionPair.parse(release)
|
12
|
+
|
13
|
+
response = director.inspect_release(release.name, release.version)
|
14
|
+
if !reasonable_response?(response)
|
15
|
+
raise Bosh::Cli::DirectorError,
|
16
|
+
'Response from director does not include expected information. Is your director version 1.3034.0 or newer?'
|
17
|
+
end
|
18
|
+
|
19
|
+
templates_table = build_jobs_table(response)
|
20
|
+
say(templates_table.render)
|
21
|
+
nl
|
22
|
+
|
23
|
+
packages_table = build_packages_table(response)
|
24
|
+
say(packages_table.render)
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_jobs_table(release)
|
28
|
+
table do |t|
|
29
|
+
t.headings = 'Job', 'Fingerprint', 'Blobstore ID', 'SHA1'
|
30
|
+
release['jobs'].each do |job|
|
31
|
+
row = [
|
32
|
+
job['name'].make_yellow,
|
33
|
+
job['fingerprint'].make_yellow,
|
34
|
+
job['blobstore_id'].make_yellow,
|
35
|
+
job['sha1'].make_yellow]
|
36
|
+
t << row
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_packages_table(release)
|
42
|
+
table do |t|
|
43
|
+
t.headings = 'Package', 'Fingerprint', 'Compiled For', 'Blobstore ID', 'SHA1'
|
44
|
+
release['packages'].each do |package|
|
45
|
+
src_pkg_row = [
|
46
|
+
package['name'].make_yellow,
|
47
|
+
package['fingerprint'].make_yellow,
|
48
|
+
package['blobstore_id'].nil? ? '(no source)'.make_red : '(source)'.make_yellow,
|
49
|
+
package['blobstore_id'].nil? ? "" : package['blobstore_id'].make_yellow,
|
50
|
+
package['sha1'].nil? ? "" : package['sha1'].make_yellow]
|
51
|
+
t << src_pkg_row
|
52
|
+
|
53
|
+
package['compiled_packages'].each do |compiled|
|
54
|
+
comp_pkg_row = [
|
55
|
+
'',
|
56
|
+
'',
|
57
|
+
compiled['stemcell'].make_green,
|
58
|
+
compiled['blobstore_id'].make_green,
|
59
|
+
compiled['sha1'].make_green]
|
60
|
+
t << comp_pkg_row
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# older directors return an incorrect response for the request we make (they ignore the version parameter).
|
67
|
+
# this method checks for that condition so we can give a helpful error message.
|
68
|
+
def reasonable_response?(response)
|
69
|
+
!response.has_key?('versions')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/cli/job_state.rb
CHANGED
@@ -24,9 +24,10 @@ module Bosh::Cli
|
|
24
24
|
recreate: '%s has been recreated'
|
25
25
|
}
|
26
26
|
|
27
|
-
def initialize(command, vm_state)
|
27
|
+
def initialize(command, vm_state, options)
|
28
28
|
@command = command
|
29
29
|
@vm_state = vm_state
|
30
|
+
@options = options
|
30
31
|
end
|
31
32
|
|
32
33
|
def change(state, job, index)
|
@@ -48,7 +49,7 @@ module Bosh::Cli
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def perform_vm_state_change(job, index, new_state, operation_desc)
|
51
|
-
vm_state.change(job, index, new_state, operation_desc)
|
52
|
+
vm_state.change(job, index, new_state, operation_desc, @options)
|
52
53
|
end
|
53
54
|
end
|
54
55
|
end
|
@@ -30,7 +30,7 @@ module Bosh::Cli::TaskTracking
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def update_with_event(event)
|
33
|
-
new_task = Task.new(self, event['task'], event['progress'], @callbacks)
|
33
|
+
new_task = Task.new(self, event['task'], event['index'], event['progress'], @callbacks)
|
34
34
|
unless found_task = @tasks.find { |s| s == new_task }
|
35
35
|
found_task = new_task
|
36
36
|
@tasks << new_task
|
@@ -112,14 +112,15 @@ module Bosh::Cli::TaskTracking
|
|
112
112
|
end
|
113
113
|
|
114
114
|
class Task
|
115
|
-
attr_reader :stage, :name, :state, :progress, :error
|
115
|
+
attr_reader :stage, :name, :index, :state, :progress, :error
|
116
116
|
|
117
117
|
extend Forwardable
|
118
118
|
def_delegators :@total_duration, :duration, :started_at, :finished_at
|
119
119
|
|
120
|
-
def initialize(stage, name, progress, callbacks)
|
120
|
+
def initialize(stage, name, index, progress, callbacks)
|
121
121
|
@stage = stage
|
122
122
|
@name = name
|
123
|
+
@index = index
|
123
124
|
@progress = progress
|
124
125
|
@callbacks = callbacks
|
125
126
|
@total_duration = TotalDuration.new
|
@@ -138,7 +139,7 @@ module Bosh::Cli::TaskTracking
|
|
138
139
|
|
139
140
|
def ==(other)
|
140
141
|
return false unless other.is_a?(Task)
|
141
|
-
[stage, name] == [other.stage, other.name]
|
142
|
+
[stage, index, name] == [other.stage, other.index, other.name]
|
142
143
|
end
|
143
144
|
|
144
145
|
def done?
|
data/lib/cli/version.rb
CHANGED
data/lib/cli/vm_state.rb
CHANGED
@@ -6,7 +6,7 @@ module Bosh::Cli
|
|
6
6
|
@force = force
|
7
7
|
end
|
8
8
|
|
9
|
-
def change(job, index, new_state, operation_desc)
|
9
|
+
def change(job, index, new_state, operation_desc, options = {})
|
10
10
|
command.say("You are about to #{operation_desc.make_green}")
|
11
11
|
|
12
12
|
check_if_manifest_changed(@manifest.hash)
|
@@ -17,7 +17,14 @@ module Bosh::Cli
|
|
17
17
|
|
18
18
|
command.nl
|
19
19
|
command.say("Performing `#{operation_desc}'...")
|
20
|
-
command.director.change_job_state(
|
20
|
+
command.director.change_job_state(
|
21
|
+
@manifest.name,
|
22
|
+
@manifest.yaml,
|
23
|
+
job,
|
24
|
+
index,
|
25
|
+
new_state,
|
26
|
+
options
|
27
|
+
)
|
21
28
|
end
|
22
29
|
|
23
30
|
private
|
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.3039.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-08-
|
11
|
+
date: 2015-08-13 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.3039.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.3039.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.3039.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.3039.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.3039.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.3039.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: net-ssh
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -306,7 +306,7 @@ dependencies:
|
|
306
306
|
version: '0'
|
307
307
|
description: |-
|
308
308
|
BOSH CLI
|
309
|
-
|
309
|
+
e8cf4e
|
310
310
|
email: support@cloudfoundry.com
|
311
311
|
executables:
|
312
312
|
- bosh
|
@@ -314,6 +314,7 @@ extensions: []
|
|
314
314
|
extra_rdoc_files: []
|
315
315
|
files:
|
316
316
|
- bin/bosh
|
317
|
+
- bin/optionally_run_with_bundler.rb
|
317
318
|
- lib/cli.rb
|
318
319
|
- lib/cli/archive_builder.rb
|
319
320
|
- lib/cli/archive_repository.rb
|
@@ -351,6 +352,7 @@ files:
|
|
351
352
|
- lib/cli/commands/export_compiled_packages.rb
|
352
353
|
- lib/cli/commands/help.rb
|
353
354
|
- lib/cli/commands/import_compiled_packages.rb
|
355
|
+
- lib/cli/commands/instances.rb
|
354
356
|
- lib/cli/commands/job.rb
|
355
357
|
- lib/cli/commands/job_management.rb
|
356
358
|
- lib/cli/commands/job_rename.rb
|
@@ -366,6 +368,7 @@ files:
|
|
366
368
|
- lib/cli/commands/release/export_release.rb
|
367
369
|
- lib/cli/commands/release/finalize_release.rb
|
368
370
|
- lib/cli/commands/release/init_release.rb
|
371
|
+
- lib/cli/commands/release/inspect_release.rb
|
369
372
|
- lib/cli/commands/release/list_releases.rb
|
370
373
|
- lib/cli/commands/release/reset_release.rb
|
371
374
|
- lib/cli/commands/release/upload_release.rb
|