bosh_cli 1.2905.0 → 1.2915.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de2564930c27f2fd9d359408cf6db62f24b3fa4d
4
- data.tar.gz: ee4c60205ad3c57171787bd1d596c34a499875ba
3
+ metadata.gz: f02ca6ddc4de5ea51002e19c5314b45f662f3e2e
4
+ data.tar.gz: f3530d1248685f5a1bfb405fb54f1e13bcf83d6b
5
5
  SHA512:
6
- metadata.gz: 17e44063a1bf787858122d8631f2b3107e00b33cb6215adca4cb5fa1ef8db197c43e11ed6fecb9979867b8940c6580405e69474851ed885bc7bedb1dec1027d6
7
- data.tar.gz: cbc4ec1c66b8ff81d5abb5a21c316c7283935075d2647e4b387fbcb4c06534502d5100558e0dba5a1c62e0dc527356e6db3c893644e95bc079aff4ace556e4e3
6
+ metadata.gz: 27e826747db64b638d5b1d1552ee50b03673de1d26caf411c628bc5d2b38b72f98538965e9e6003ac76215bfc721e995aa9de26a073124577a674a12d1dd2b14
7
+ data.tar.gz: 31c09e5037914052a47a58b472e4b4005c9d982c165f1122a413b4108e0ffc78d361ab61dbf718888b9a1dc20899e52fcf6df24226eff4cd1b50b62d752921f9
@@ -1,6 +1,6 @@
1
- # Copyright (c) 2009-2012 VMware, Inc.
2
1
  require 'cli/core_ext'
3
2
  require 'cli/errors'
3
+ require 'cli/cloud_config'
4
4
 
5
5
  require 'json'
6
6
  require 'httpclient'
@@ -529,11 +529,6 @@ module Bosh
529
529
  get_json('/locks')
530
530
  end
531
531
 
532
- [:post, :put, :get, :delete].each do |method_name|
533
- define_method method_name do |*args|
534
- request(method_name, *args)
535
- end
536
- end
537
532
 
538
533
  # Perform director HTTP request and track director task (if request
539
534
  # started one).
@@ -578,6 +573,38 @@ module Bosh
578
573
  file.stop_progress_bar if file
579
574
  end
580
575
 
576
+ def get_cloud_config
577
+ _, cloud_configs = get_json_with_status('/cloud_configs?limit=1')
578
+ latest = cloud_configs.first
579
+
580
+ if !latest.nil?
581
+ Bosh::Cli::CloudConfig.new(
582
+ properties: latest["properties"],
583
+ created_at: latest["created_at"])
584
+ end
585
+ end
586
+
587
+ def update_cloud_config(cloud_config_yaml)
588
+ status, _ = post('/cloud_configs', 'text/yaml', cloud_config_yaml)
589
+ status == 201
590
+ end
591
+
592
+ def post(uri, content_type = nil, payload = nil, headers = {}, options = {})
593
+ request(:post, uri, content_type, payload, headers, options)
594
+ end
595
+
596
+ def put(uri, content_type = nil, payload = nil, headers = {}, options = {})
597
+ request(:put, uri, content_type, payload, headers, options)
598
+ end
599
+
600
+ def get(uri, content_type = nil, payload = nil, headers = {}, options = {})
601
+ request(:get, uri, content_type, payload, headers, options)
602
+ end
603
+
604
+ def delete(uri, content_type = nil, payload = nil, headers = {}, options = {})
605
+ request(:delete, uri, content_type, payload, headers, options)
606
+ end
607
+
581
608
  private
582
609
 
583
610
  def director_name
@@ -1,99 +1,38 @@
1
1
  require 'uaa'
2
2
  require 'uri'
3
+ require 'cli/client/uaa/client_token_issuer'
4
+ require 'cli/client/uaa/password_token_issuer'
5
+ require 'cli/client/uaa/token_decoder'
3
6
 
4
7
  module Bosh
5
8
  module Cli
6
9
  module Client
7
- class Uaa
8
- class AccessInfo < Struct.new(:username, :token); end
9
-
10
- def initialize(options, ssl_ca_file)
11
- url = options.fetch('url')
12
- unless URI.parse(url).instance_of?(URI::HTTPS)
13
- err('Failed to connect to UAA, HTTPS protocol is required')
14
- end
15
- @ssl_ca_file = ssl_ca_file
16
-
17
- token_decoder = TokenDecoder.new
18
- if ENV['BOSH_CLIENT'] && ENV['BOSH_CLIENT_SECRET']
19
- @token_issuer = ClientTokenIssuer.new(url, ssl_ca_file, token_decoder)
20
- else
21
- @token_issuer = PasswordTokenIssuer.new(url, ssl_ca_file, token_decoder)
22
- end
23
- end
24
-
25
- def prompts
26
- @token_issuer.prompts
27
- rescue CF::UAA::SSLException => e
28
- raise e unless @ssl_ca_file.nil?
29
- err('Invalid SSL Cert. Use --ca-cert to specify SSL certificate')
30
- end
31
-
32
- def login(credentials)
33
- @token_issuer.access_info(credentials)
34
- rescue CF::UAA::TargetError => e
35
- err("Failed to log in: #{e.info['error_description']}")
36
- rescue CF::UAA::BadResponse
37
- nil
38
- end
39
-
40
- private
41
-
42
- class ClientTokenIssuer
43
- def initialize(url, ssl_ca_file, token_decoder)
44
- @token_issuer = CF::UAA::TokenIssuer.new(url, ENV['BOSH_CLIENT'], ENV['BOSH_CLIENT_SECRET'], {ssl_ca_file: ssl_ca_file})
45
- @token_decoder = token_decoder
46
- end
47
-
48
- def prompts
49
- {}
50
- end
51
-
52
- def access_info(_)
53
- token = @token_issuer.client_credentials_grant
54
- decoded = @token_decoder.decode(token)
55
-
56
- username = decoded['client_id'] if decoded
57
- AccessInfo.new(username, nil)
58
- end
59
- end
60
-
61
- class PasswordTokenIssuer
62
- def initialize(url, ssl_ca_file, token_decoder)
63
- @token_issuer = CF::UAA::TokenIssuer.new(url, 'bosh_cli', nil, {ssl_ca_file: ssl_ca_file})
64
- @token_decoder = token_decoder
65
- end
66
-
67
- def prompts
68
- @token_issuer.prompts.map do |field, (type, display_text)|
69
- Prompt.new(field, type, display_text)
10
+ module Uaa
11
+ class Client
12
+ def initialize(options)
13
+ token_decoder = TokenDecoder.new
14
+ if options.client_auth?
15
+ token_issuer = ClientTokenIssuer.new(options, token_decoder)
16
+ else
17
+ token_issuer = PasswordTokenIssuer.new(options, token_decoder)
70
18
  end
19
+ @ssl_ca_file = options.ssl_ca_file
20
+ @token_issuer = token_issuer
71
21
  end
72
22
 
73
- def access_info(credentials)
74
- credentials = credentials.select { |_, c| !c.empty? }
75
- token = @token_issuer.owner_password_credentials_grant(credentials)
76
- decoded = @token_decoder.decode(token)
77
-
78
- username = decoded['user_name'] if decoded
79
- access_token = "#{token.info['token_type']} #{token.info['access_token']}"
80
-
81
- AccessInfo.new(username, access_token)
82
- end
83
- end
84
-
85
- class Prompt < Struct.new(:field, :type, :display_text)
86
- def password?
87
- type == 'password'
88
- end
89
- end
90
-
91
- class TokenDecoder
92
- def decode(token)
93
- CF::UAA::TokenCoder.decode(
94
- token.info['access_token'],
95
- {verify: false}, # token signature not verified because CLI doesn't have the secret key
96
- nil, nil)
23
+ def prompts
24
+ @token_issuer.prompts
25
+ rescue CF::UAA::SSLException => e
26
+ raise e unless @ssl_ca_file.nil?
27
+ err('Invalid SSL Cert. Use --ca-cert to specify SSL certificate') #FIXME: the uaa client shouldn't know about 'err'
28
+ end
29
+
30
+ def login(credentials)
31
+ @token_issuer.access_info(credentials)
32
+ rescue CF::UAA::TargetError => e
33
+ err("Failed to log in: #{e.info['error_description']}") #FIXME: the uaa client shouldn't know about 'err'
34
+ rescue CF::UAA::BadResponse
35
+ nil
97
36
  end
98
37
  end
99
38
  end
@@ -0,0 +1,9 @@
1
+ module Bosh
2
+ module Cli
3
+ module Client
4
+ module Uaa
5
+ class AccessInfo < Struct.new(:username, :token); end
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,26 @@
1
+ module Bosh
2
+ module Cli
3
+ module Client
4
+ module Uaa
5
+ class ClientTokenIssuer
6
+ def initialize(options, token_decoder)
7
+ @token_issuer = CF::UAA::TokenIssuer.new(options.url, options.client_id, options.client_secret, {ssl_ca_file: options.ssl_ca_file})
8
+ @token_decoder = token_decoder
9
+ end
10
+
11
+ def prompts
12
+ {}
13
+ end
14
+
15
+ def access_info(_)
16
+ token = @token_issuer.client_credentials_grant
17
+ decoded = @token_decoder.decode(token)
18
+
19
+ username = decoded['client_id'] if decoded
20
+ AccessInfo.new(username, nil)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,34 @@
1
+ require 'cli/errors'
2
+
3
+ module Bosh
4
+ module Cli
5
+ module Client
6
+ module Uaa
7
+ class Options < Struct.new(:url, :ssl_ca_file, :client_id, :client_secret)
8
+ class ValidationError < Bosh::Cli::CliError; end
9
+
10
+ def self.parse(cli_options, auth_options, env)
11
+ url = auth_options.fetch('url')
12
+ ssl_ca_file = cli_options[:ca_cert]
13
+ client_id, client_secret = env['BOSH_CLIENT'], env['BOSH_CLIENT_SECRET']
14
+
15
+ options = new(url, ssl_ca_file, client_id, client_secret)
16
+ options.validate!
17
+ options
18
+ end
19
+
20
+ def client_auth?
21
+ !client_id.nil? && !client_secret.nil?
22
+ end
23
+
24
+ def validate!
25
+ unless URI.parse(url).instance_of?(URI::HTTPS)
26
+ raise ValidationError.new('HTTPS protocol is required')
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
@@ -0,0 +1,35 @@
1
+ require 'uaa'
2
+ require 'cli/client/uaa/prompt'
3
+ require 'cli/client/uaa/access_info'
4
+
5
+ module Bosh
6
+ module Cli
7
+ module Client
8
+ module Uaa
9
+ class PasswordTokenIssuer
10
+ def initialize(options, token_decoder)
11
+ @token_issuer = CF::UAA::TokenIssuer.new(options.url, 'bosh_cli', nil, {ssl_ca_file: options.ssl_ca_file})
12
+ @token_decoder = token_decoder
13
+ end
14
+
15
+ def prompts
16
+ @token_issuer.prompts.map do |field, (type, display_text)|
17
+ Prompt.new(field, type, display_text)
18
+ end
19
+ end
20
+
21
+ def access_info(credentials)
22
+ credentials = credentials.select { |_, c| !c.empty? }
23
+ token = @token_issuer.owner_password_credentials_grant(credentials)
24
+ decoded = @token_decoder.decode(token)
25
+
26
+ username = decoded['user_name'] if decoded
27
+ access_token = "#{token.info['token_type']} #{token.info['access_token']}"
28
+
29
+ AccessInfo.new(username, access_token)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,13 @@
1
+ module Bosh
2
+ module Cli
3
+ module Client
4
+ module Uaa
5
+ class Prompt < Struct.new(:field, :type, :display_text)
6
+ def password?
7
+ type == 'password'
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module Bosh
2
+ module Cli
3
+ module Client
4
+ module Uaa
5
+ class TokenDecoder
6
+ def decode(token)
7
+ CF::UAA::TokenCoder.decode(
8
+ token.info['access_token'],
9
+ {verify: false}, # token signature not verified because CLI doesn't have the secret key
10
+ nil, nil)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ module Bosh
2
+ module Cli
3
+ class CloudConfig < Struct.new(:properties, :created_at)
4
+ def initialize(attrs)
5
+ self.properties = attrs.fetch(:properties)
6
+ self.created_at = attrs.fetch(:created_at)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,32 @@
1
+ require 'cli/core_ext'
2
+
3
+ module Bosh::Cli::Command
4
+ class CloudConfig < Base
5
+ usage 'cloud-config'
6
+ desc 'Download the current cloud config for the director'
7
+
8
+ def show
9
+ auth_required
10
+
11
+ config = director.get_cloud_config
12
+ if !config.nil?
13
+ say(config.properties)
14
+ end
15
+ end
16
+
17
+ usage 'update cloud-config'
18
+ desc 'Update the current cloud config for the director'
19
+
20
+ def update(cloud_config_path)
21
+ auth_required
22
+
23
+ cloud_config_yaml = read_yaml_file(cloud_config_path)
24
+
25
+ if director.update_cloud_config(cloud_config_yaml)
26
+ say("Successfully updated cloud config")
27
+ else
28
+ err("Failed to update cloud config")
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,6 +1,7 @@
1
1
  require 'cli/basic_login_strategy'
2
2
  require 'cli/uaa_login_strategy'
3
3
  require 'cli/client/uaa'
4
+ require 'cli/client/uaa/options'
4
5
  require 'cli/terminal'
5
6
 
6
7
  module Bosh::Cli::Command
@@ -41,11 +42,15 @@ module Bosh::Cli::Command
41
42
  auth_info = director_info.fetch('user_authentication', {})
42
43
 
43
44
  if auth_info['type'] == 'uaa'
44
- uaa = Bosh::Cli::Client::Uaa.new(auth_info['options'], options[:ca_cert])
45
+ client_options = Bosh::Cli::Client::Uaa::Options.parse(options, auth_info['options'], ENV)
46
+ uaa = Bosh::Cli::Client::Uaa::Client.new(client_options)
45
47
  Bosh::Cli::UaaLoginStrategy.new(terminal, uaa, config, interactive?)
46
48
  else
47
49
  Bosh::Cli::BasicLoginStrategy.new(terminal, director, config, interactive?)
48
50
  end
51
+
52
+ rescue Bosh::Cli::Client::Uaa::Options::ValidationError => e
53
+ err("Failed to connect to UAA: #{e.message}")
49
54
  end
50
55
  end
51
56
  end
@@ -9,12 +9,15 @@ module Bosh::Cli::Command
9
9
  # bosh cleanup
10
10
  usage 'cleanup'
11
11
  desc 'Cleanup releases and stemcells'
12
+ option '--all', 'Remove all unused releases and stemcells'
12
13
  def cleanup
13
14
  target_required
14
15
  auth_required
15
16
 
16
- releases_to_keep = RELEASES_TO_KEEP
17
- stemcells_to_keep = STEMCELLS_TO_KEEP
17
+ remove_all = !!options[:all]
18
+
19
+ releases_to_keep = remove_all ? 0 : RELEASES_TO_KEEP
20
+ stemcells_to_keep = remove_all ? 0 : STEMCELLS_TO_KEEP
18
21
 
19
22
  release_wording = pluralize(releases_to_keep, 'latest version')
20
23
  stemcell_wording = pluralize(stemcells_to_keep, 'latest version')
@@ -62,20 +65,18 @@ module Bosh::Cli::Command
62
65
  Bosh::Common::Version::StemcellVersion.parse(sc1['version']) <=> Bosh::Common::Version::StemcellVersion.parse(sc2['version'])
63
66
  end
64
67
 
65
- delete_list += sorted_stemcells[0...(-n_to_keep)]
68
+ delete_list = trim_array(sorted_stemcells, n_to_keep)
66
69
  end
67
70
 
68
- if delete_list.size > 0
69
- delete_list.each do |stemcell|
70
- name, version = stemcell['name'], stemcell['version']
71
- desc = "#{name}/#{version}"
72
- perform(desc) do
73
- director.delete_stemcell(name, version, :quiet => true)
74
- end
71
+ delete_list.each do |stemcell|
72
+ name, version = stemcell['name'], stemcell['version']
73
+ desc = "#{name}/#{version}"
74
+ perform(desc) do
75
+ director.delete_stemcell(name, version, :quiet => true)
75
76
  end
76
- else
77
- say(' none found'.make_yellow)
78
77
  end
78
+
79
+ say(' none found'.make_yellow) if delete_list.size == 0
79
80
  end
80
81
 
81
82
  def cleanup_releases(n_to_keep)
@@ -103,22 +104,24 @@ module Bosh::Cli::Command
103
104
  end
104
105
  versions = version_tuples.sort_by { |v| v[:parsed] }.map { |v| v[:provided] }
105
106
 
106
- versions[0...(-n_to_keep)].each do |version|
107
+ trim_array(versions, n_to_keep).each do |version|
107
108
  delete_list << [name, version] unless currently_deployed.include?(version)
108
109
  end
109
110
  end
110
111
 
111
- if delete_list.size > 0
112
- delete_list.each do |name, version|
113
- desc = "#{name}/#{version}"
114
- perform(desc) do
115
- director.delete_release(name, :force => false,
116
- :version => version, :quiet => true)
117
- end
112
+ delete_list.each do |name, version|
113
+ desc = "#{name}/#{version}"
114
+ perform(desc) do
115
+ director.delete_release(name, :force => false,
116
+ :version => version, :quiet => true)
118
117
  end
119
- else
120
- say(' none found'.make_yellow)
121
118
  end
119
+
120
+ say(' none found'.make_yellow) if delete_list.size == 0
121
+ end
122
+
123
+ def trim_array(array, n_to_keep)
124
+ n_to_keep > 0 ? array[0...(-n_to_keep)] : array
122
125
  end
123
126
 
124
127
  def refresh(message)
@@ -148,6 +151,5 @@ module Bosh::Cli::Command
148
151
 
149
152
  status == :done
150
153
  end
151
-
152
154
  end
153
155
  end
@@ -25,7 +25,7 @@ module Bosh::Cli
25
25
  end
26
26
 
27
27
  @commands = {}
28
- @colorize = true
28
+ @colorize = nil
29
29
  @output = nil
30
30
  @interactive = false
31
31
 
@@ -66,6 +66,17 @@ module BoshExtensions
66
66
  end
67
67
 
68
68
  def load_yaml_file(path, expected_type = Hash)
69
+ yaml_str = read_yaml_file(path)
70
+
71
+ yaml = Psych::load(yaml_str)
72
+ if expected_type && !yaml.is_a?(expected_type)
73
+ err("Incorrect YAML structure in `#{path}': expected #{expected_type} at the root".make_red)
74
+ end
75
+
76
+ yaml
77
+ end
78
+
79
+ def read_yaml_file(path)
69
80
  err("Cannot find file `#{path}'".make_red) unless File.exist?(path)
70
81
 
71
82
  begin
@@ -76,16 +87,10 @@ module BoshExtensions
76
87
 
77
88
  begin
78
89
  Bosh::Cli::YamlHelper.check_duplicate_keys(yaml_str)
79
- rescue => e
90
+ rescue Exception => e # on ruby 1.9.3 Psych::SyntaxError isn't a StandardError
80
91
  err("Incorrect YAML structure in `#{path}': #{e}".make_red)
81
92
  end
82
-
83
- yaml = Psych::load(yaml_str)
84
- if expected_type && !yaml.is_a?(expected_type)
85
- err("Incorrect YAML structure in `#{path}': expected #{expected_type} at the root".make_red)
86
- end
87
-
88
- yaml
93
+ yaml_str
89
94
  end
90
95
 
91
96
  def write_yaml(manifest, path)
@@ -125,11 +130,17 @@ module BoshStringExtensions
125
130
  end
126
131
 
127
132
  def make_color(color_code)
128
- if Bosh::Cli::Config.output &&
129
- Bosh::Cli::Config.output.tty? &&
130
- Bosh::Cli::Config.colorize &&
131
- COLOR_CODES[color_code]
133
+ # invalid color
134
+ return self if !COLOR_CODES[color_code]
135
+
136
+ # output disabled
137
+ return self if !Bosh::Cli::Config.output
138
+
139
+ # colorization explicitly disabled
140
+ return self if Bosh::Cli::Config.colorize == false
132
141
 
142
+ # colorization explicitly enabled, or output is tty
143
+ if Bosh::Cli::Config.colorize || Bosh::Cli::Config.output.tty?
133
144
  "#{COLOR_CODES[color_code]}#{self}\e[0m"
134
145
  else
135
146
  self
@@ -31,8 +31,6 @@ module Bosh::Cli
31
31
 
32
32
  @version = options.fetch(:version, nil)
33
33
 
34
- raise ReleaseVersionError.new('Version numbers cannot be specified for dev releases') if (@version && !@final)
35
-
36
34
  @final_index = Versions::VersionsIndex.new(final_releases_dir)
37
35
  @dev_index = Versions::VersionsIndex.new(dev_releases_dir)
38
36
  @index = @final ? @final_index : @dev_index
@@ -24,7 +24,7 @@ module Bosh::Cli
24
24
  banner = "Usage: bosh [<options>] <command> [<args>]"
25
25
  @option_parser = OptionParser.new(banner)
26
26
 
27
- Config.colorize = true
27
+ Config.colorize = nil
28
28
  Config.output ||= STDOUT
29
29
 
30
30
  parse_global_options
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Cli
3
- VERSION = '1.2905.0'
3
+ VERSION = '1.2915.0'
4
4
  end
5
5
  end
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.2905.0
4
+ version: 1.2915.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-03-27 00:00:00.000000000 Z
11
+ date: 2015-04-07 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.2905.0
19
+ version: 1.2915.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.2905.0
26
+ version: 1.2915.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.2905.0
33
+ version: 1.2915.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.2905.0
40
+ version: 1.2915.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.2905.0
131
+ version: 1.2915.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.2905.0
138
+ version: 1.2915.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
- 327a58
309
+ 5653ce
310
310
  email: support@cloudfoundry.com
311
311
  executables:
312
312
  - bosh
@@ -329,11 +329,19 @@ files:
329
329
  - lib/cli/client/director.rb
330
330
  - lib/cli/client/errands_client.rb
331
331
  - lib/cli/client/uaa.rb
332
+ - lib/cli/client/uaa/access_info.rb
333
+ - lib/cli/client/uaa/client_token_issuer.rb
334
+ - lib/cli/client/uaa/options.rb
335
+ - lib/cli/client/uaa/password_token_issuer.rb
336
+ - lib/cli/client/uaa/prompt.rb
337
+ - lib/cli/client/uaa/token_decoder.rb
338
+ - lib/cli/cloud_config.rb
332
339
  - lib/cli/command_discovery.rb
333
340
  - lib/cli/command_handler.rb
334
341
  - lib/cli/commands/backup.rb
335
342
  - lib/cli/commands/biff.rb
336
343
  - lib/cli/commands/blob_management.rb
344
+ - lib/cli/commands/cloud_config.rb
337
345
  - lib/cli/commands/cloudcheck.rb
338
346
  - lib/cli/commands/complete.rb
339
347
  - lib/cli/commands/deployment.rb