bosh_cli 1.2862.0 → 1.2865.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: b6632e97dece90f263f31c48a3dc26c0d8a78418
4
- data.tar.gz: a90267167a7b9fcccae9e230f9f04fb6d73b74db
3
+ metadata.gz: 7bd312c4c998f31d9f79fd35a586deb701246207
4
+ data.tar.gz: 4f052201dbc90e01f5d1759919863aecd43b86d8
5
5
  SHA512:
6
- metadata.gz: 74f44fc32b7474ccf75efbb535df69e1c4cdb0adab9889db57f17c7c272c7c6459abf80e79304a8b77df84469418aa22af54e615a9e0d3323ca360d803967d5c
7
- data.tar.gz: 397d67a70fa1f2ebeeeee8f768d640801882ef5a16331d8e7a0ec092480f72969b85085e43656ab69b7327442175a958a55bb703c3cff156e750668604913896
6
+ metadata.gz: 236e568970014d4abab3d2ace8a42f6743cf1ee1abed16574ee8eab88fcf76c15f412fb05d3afb017cf65a2fccede4451bba88dbde25f0ca1ded9f28c3a94048
7
+ data.tar.gz: 63c9739f69ca88620c607c46f20123cc20475fb1d6c4ad339412475b990b121bdc8528e1b89edd8c202aa026971d7b4b7eefada5fb6da96feb7bdeb23ff86428
@@ -64,6 +64,12 @@ module Bosh
64
64
  end
65
65
  end
66
66
 
67
+ def login(username, password)
68
+ self.user = username
69
+ self.password = password
70
+ authenticated?
71
+ end
72
+
67
73
  def authenticated?
68
74
  status = get_status
69
75
  # Backward compatibility: older directors return 200
@@ -0,0 +1,35 @@
1
+ require 'cli/terminal'
2
+ require 'cli/login_service'
3
+
4
+ module Bosh::Cli::Command
5
+ class Login < Base
6
+ # bosh login
7
+ usage "login"
8
+ desc "Log in to currently targeted director. " +
9
+ "The username and password can also be " +
10
+ "set in the BOSH_USER and BOSH_PASSWORD " +
11
+ "environment variables."
12
+ def login(username = nil, password = nil)
13
+ target_required
14
+
15
+ terminal = Bosh::Cli::Terminal.new(HighLine.new)
16
+ Bosh::Cli::LoginService.new(terminal, director, config, interactive?).login(target, username.to_s, password.to_s)
17
+ end
18
+
19
+ # bosh logout
20
+ usage "logout"
21
+ desc "Forget saved credentials for targeted director"
22
+ def logout
23
+ target_required
24
+ config.set_credentials(target, nil, nil)
25
+ config.save
26
+ say("You are no longer logged in to `#{target}'".make_yellow)
27
+ end
28
+
29
+ private
30
+
31
+ def get_director_status
32
+ Bosh::Cli::Client::Director.new(target).get_status
33
+ end
34
+ end
35
+ end
@@ -62,63 +62,6 @@ module Bosh::Cli::Command
62
62
  end
63
63
  end
64
64
 
65
- # bosh login
66
- usage "login"
67
- desc "Log in to currently targeted director. " +
68
- "The username and password can also be " +
69
- "set in the BOSH_USER and BOSH_PASSWORD " +
70
- "environment variables."
71
- def login(username = nil, password = nil)
72
- target_required
73
-
74
- if interactive?
75
- username = ask("Your username: ").to_s if username.blank?
76
-
77
- password_retries = 0
78
- while password.blank? && password_retries < 3
79
- password = ask("Enter password: ") { |q| q.echo = "*" }.to_s
80
- password_retries += 1
81
- end
82
- end
83
-
84
- if username.blank? || password.blank?
85
- err("Please provide username and password")
86
- end
87
- logged_in = false
88
-
89
- #Converts HighLine::String to String
90
- username = username.to_s
91
- password = password.to_s
92
-
93
- director.user = username
94
- director.password = password
95
-
96
- if director.authenticated?
97
- say("Logged in as `#{username}'".make_green)
98
- logged_in = true
99
- elsif non_interactive?
100
- err("Cannot log in as `#{username}'".make_red)
101
- else
102
- say("Cannot log in as `#{username}', please try again".make_red)
103
- login(username)
104
- end
105
-
106
- if logged_in
107
- config.set_credentials(target, username, password)
108
- config.save
109
- end
110
- end
111
-
112
- # bosh logout
113
- usage "logout"
114
- desc "Forget saved credentials for targeted director"
115
- def logout
116
- target_required
117
- config.set_credentials(target, nil, nil)
118
- config.save
119
- say("You are no longer logged in to `#{target}'".make_yellow)
120
- end
121
-
122
65
  # bosh target
123
66
  usage "target"
124
67
  desc "Choose director to talk to (optionally creating an alias). " +
data/lib/cli/config.rb CHANGED
@@ -158,15 +158,44 @@ module Bosh::Cli
158
158
  @config_file["deployment"][target] = deployment_file_path
159
159
  end
160
160
 
161
- [:target, :target_name, :target_version, :release,
162
- :target_uuid].each do |attr|
163
- define_method attr do
164
- read(attr, false)
165
- end
161
+ def target
162
+ read(:target, false)
163
+ end
166
164
 
167
- define_method "#{attr}=" do |value|
168
- write_global(attr, value)
169
- end
165
+ def target=(value)
166
+ write_global(:target, value)
167
+ end
168
+
169
+ def target_name
170
+ read(:target_name, false)
171
+ end
172
+
173
+ def target_name=(value)
174
+ write_global(:target_name, value)
175
+ end
176
+
177
+ def target_version
178
+ read(:target_version, false)
179
+ end
180
+
181
+ def target_version=(value)
182
+ write_global(:target_version, value)
183
+ end
184
+
185
+ def release
186
+ read(:release, false)
187
+ end
188
+
189
+ def release=(value)
190
+ write_global(:release, value)
191
+ end
192
+
193
+ def target_uuid
194
+ read(:target_uuid, false)
195
+ end
196
+
197
+ def target_uuid=(value)
198
+ write_global(:target_uuid, value)
170
199
  end
171
200
 
172
201
  # Read the max parallel downloads configuration.
@@ -0,0 +1,40 @@
1
+ require 'highline'
2
+ require 'cli/core_ext'
3
+ require 'cli/errors'
4
+
5
+ module Bosh
6
+ module Cli
7
+ class LoginService
8
+ def initialize(terminal, director, config, interactive)
9
+ @terminal = terminal
10
+ @director = director
11
+ @config = config
12
+ @interactive = interactive
13
+ end
14
+
15
+ def login(target, username, password)
16
+ if @interactive
17
+ username = @terminal.ask("Your username: ") if username.blank?
18
+ password = @terminal.ask_password("Enter password: ") if password.blank?
19
+ end
20
+
21
+ if username.blank? || password.blank?
22
+ raise Bosh::Cli::CliError.new("Please provide username and password")
23
+ end
24
+
25
+ if @director.login(username, password)
26
+ @terminal.say_green("Logged in as `#{username}'")
27
+ @config.set_credentials(target, username, password)
28
+ @config.save
29
+ else
30
+ if @interactive
31
+ @terminal.say_red("Cannot log in as `#{username}', please try again")
32
+ login(target, username, '')
33
+ else
34
+ raise Bosh::Cli::CliError.new("Cannot log in as `#{username}'")
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,30 @@
1
+ module Bosh
2
+ module Cli
3
+ class Terminal
4
+ extend Forwardable
5
+
6
+ def initialize(highline)
7
+ @highline = highline
8
+ end
9
+
10
+ def ask(prompt)
11
+ highline.ask(prompt).to_s # make sure we return a String not a HighLine::String
12
+ end
13
+
14
+ def ask_password(prompt)
15
+ highline.ask(prompt) { |q| q.echo = false }.to_s
16
+ end
17
+
18
+ def say_green(message)
19
+ highline.say(message.make_green)
20
+ end
21
+
22
+ def say_red(message)
23
+ highline.say(message.make_red)
24
+ end
25
+
26
+ private
27
+ attr_reader :highline
28
+ end
29
+ end
30
+ end
data/lib/cli/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Cli
3
- VERSION = '1.2862.0'
3
+ VERSION = '1.2865.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.2862.0
4
+ version: 1.2865.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-03 00:00:00.000000000 Z
11
+ date: 2015-03-06 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.2862.0
19
+ version: 1.2865.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.2862.0
26
+ version: 1.2865.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.2862.0
33
+ version: 1.2865.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.2862.0
40
+ version: 1.2865.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: json_pure
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.2862.0
117
+ version: 1.2865.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.2862.0
124
+ version: 1.2865.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: net-ssh
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +194,7 @@ dependencies:
194
194
  version: 0.5.4
195
195
  description: |-
196
196
  BOSH CLI
197
- c8ad5c
197
+ 14ebaf
198
198
  email: support@cloudfoundry.com
199
199
  executables:
200
200
  - bosh
@@ -231,6 +231,7 @@ files:
231
231
  - lib/cli/commands/job_rename.rb
232
232
  - lib/cli/commands/locks.rb
233
233
  - lib/cli/commands/log_management.rb
234
+ - lib/cli/commands/login.rb
234
235
  - lib/cli/commands/maintenance.rb
235
236
  - lib/cli/commands/misc.rb
236
237
  - lib/cli/commands/package.rb
@@ -266,6 +267,7 @@ files:
266
267
  - lib/cli/job_property_validator.rb
267
268
  - lib/cli/job_state.rb
268
269
  - lib/cli/line_wrap.rb
270
+ - lib/cli/login_service.rb
269
271
  - lib/cli/logs_downloader.rb
270
272
  - lib/cli/manifest_warnings.rb
271
273
  - lib/cli/name_version_pair.rb
@@ -293,6 +295,7 @@ files:
293
295
  - lib/cli/task_tracking/task_log_renderer.rb
294
296
  - lib/cli/task_tracking/task_tracker.rb
295
297
  - lib/cli/task_tracking/total_duration.rb
298
+ - lib/cli/terminal.rb
296
299
  - lib/cli/validation.rb
297
300
  - lib/cli/version.rb
298
301
  - lib/cli/versions/local_artifact_storage.rb