bosh_cli 1.3033.0 → 1.3039.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|