appfog-vmc-plugin 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGVhOWJhZTE0YTg0NzI4MTQxYTNmYjM3MDVkMjhlMGVmMWQ5MGJmMg==
4
+ MTczYWIxZmFjYWY0NjBkYjU3MGJhODc0MGY3OWU3NjE3NmY1ZjFkMQ==
5
5
  data.tar.gz: !binary |-
6
- NWI0Y2EzZjVkYTEzNzQ1MzY3NzBlZmY1OGUxNjEwNTM3MjY3Y2VkYQ==
6
+ NjAxZTA3N2Q2MTg3NWU1N2U5YTdjMTdiODM4ZWU4OTNjYTgzMGNkMw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YzBmMjEyNGRmZTk2MjEyYWZkMTQ0ZDQ3MzYxMjUyMzMyYzQwNzM3YzE5MWNi
10
- YWYzNTMwOWJhZWRlZGZkMWEwM2U2Mzg5MDg4MDAyYTJiNWNlNjg1NjFhMDZj
11
- MjY4YTQyYzA4MmI0YzRmYmU0Y2JkZmVkYTliOWIyNzllZDUzZjE=
9
+ YjI3YzEzY2E0NzljODFkZjEwYWMzNzg4NDVhMjM1ZDM0ODQ2ZmQ3MWM5M2Yz
10
+ Nzg5OWQ4ZTg3YzZmZjc5NzRhYjkzMTdjNmM3Y2NmYzY1MmJlOWI1Mzg1MWQz
11
+ N2Q3Njc3Y2MxMzQzZmEzOGYxNTRlMzQ4ZGZmZGRjYjA1NGNiY2Q=
12
12
  data.tar.gz: !binary |-
13
- MzgzYTdkZTU5OGM0YjRkN2RiY2IxYWE3MWVhN2NmZmMyMDQwMGMwMzUyY2Iw
14
- M2VlZmJhZmM3ODIxNGE3MTJlNzdmZTFlZTU3ZDNlYWU1NDY3YjVhYTJjMGEx
15
- YmUxM2MzNDU0ZmJlMWQzZmNhZWVlZjc1ODg4MDE3ZDdlMDY5NWI=
13
+ Mjc4OWYwMjQwMzE2NWQwNzMyMmNiMzI2ZTliNmQzNTY4N2VjZDQ5OTU4OTll
14
+ ZjJhMTkwYzdiM2NhYzZlNDFjYmZjMzVlOGYxYTE0MDRmYTk0OTZiOTRkZDEz
15
+ YWU1ODY1OTkxYjhkMjViMWY3MjkwNjBjZmIzMDk4MTg0NzU1MDI=
@@ -23,23 +23,15 @@ module CFoundry
23
23
 
24
24
  module LoginHelpers
25
25
  def login_prompts
26
- if @base.uaa
27
- @base.uaa.prompts
28
- else
29
- {
30
- :username => %w[text Email],
31
- :password => %w[password Password]
32
- }
33
- end
26
+ {
27
+ :username => %w[text Email],
28
+ :password => %w[password Password]
29
+ }
34
30
  end
35
31
 
36
32
  def login(username, password)
37
33
  token =
38
- if @base.uaa
39
- AuthToken.from_uaa_token_info(@base.uaa.authorize(username, password))
40
- else
41
- AuthToken.from_cc_token(@base.create_token({:password => password}, username)[:token])
42
- end
34
+ AuthToken.from_cc_token(@base.create_token({:password => password}, username)[:token])
43
35
 
44
36
  @base.token = token
45
37
  end
@@ -1,3 +1,3 @@
1
1
  module VMCAppfog
2
- VERSION = "0.1.6".freeze
2
+ VERSION = "0.1.7".freeze
3
3
  end
@@ -0,0 +1,94 @@
1
+ require "vmc/cli/start/base"
2
+ require "vmc/cli/start/target_interactions"
3
+
4
+ module VMC::Start
5
+ class Login < Base
6
+ desc "Authenticate with the target"
7
+ group :start
8
+ input :username, :value => :email, :desc => "Account email",
9
+ :alias => "--email", :argument => :optional
10
+ input :password, :desc => "Account password"
11
+ input :organization, :desc => "Organization" , :aliases => %w{--org -o},
12
+ :from_given => by_name(:organization)
13
+ input :space, :desc => "Space", :alias => "-s",
14
+ :from_given => by_name(:space)
15
+ interactions TargetInteractions
16
+ def login
17
+ show_context
18
+
19
+ credentials =
20
+ { :username => input[:username],
21
+ :password => input[:password]
22
+ }
23
+
24
+ prompts = client.login_prompts
25
+
26
+ # ask username first
27
+ if prompts.key? :username
28
+ type, label = prompts.delete :username
29
+ credentials[:username] ||= ask_prompt(type, label)
30
+ end
31
+
32
+ info = target_info
33
+
34
+ auth_token = nil
35
+ authenticated = false
36
+ failed = false
37
+ remaining_attempts = 3
38
+ until authenticated || remaining_attempts <= 0
39
+ remaining_attempts -= 1
40
+ unless force?
41
+ ask_prompts(credentials, prompts)
42
+ end
43
+
44
+ with_progress("Authenticating") do |s|
45
+ begin
46
+ auth_token = client.login(credentials[:username], credentials[:password])
47
+ authenticated = true
48
+ rescue CFoundry::Denied, CFoundry::Forbidden
49
+ return if force?
50
+
51
+ s.fail do
52
+ failed = true
53
+ credentials.delete(:password)
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ if authenticated
60
+ info.merge!(auth_token.to_hash)
61
+ save_target_info(info)
62
+ invalidate_client
63
+
64
+ if v2?
65
+ line if input.interactive?(:organization) || input.interactive?(:space)
66
+ select_org_and_space(input, info)
67
+ end
68
+
69
+ save_target_info(info)
70
+ end
71
+ ensure
72
+ exit_status 1 if not authenticated
73
+ end
74
+
75
+ private
76
+
77
+ def ask_prompts(credentials, prompts)
78
+ prompts.each do |name, meta|
79
+ type, label = meta
80
+ credentials[name] ||= ask_prompt(type, label)
81
+ end
82
+ end
83
+
84
+ def ask_prompt(type, label)
85
+ if type == "password"
86
+ options = { :echo => "*", :forget => true }
87
+ else
88
+ options = {}
89
+ end
90
+
91
+ ask(label, options)
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,16 @@
1
+ module VMC
2
+ module User
3
+ class Base < CLI
4
+ def precondition
5
+ check_logged_in
6
+ end
7
+
8
+ private
9
+
10
+ def validate_password!(password)
11
+ validate_password_verified!(password)
12
+ # validate_password_strength!(password)
13
+ end
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appfog-vmc-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Santeford
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-14 00:00:00.000000000 Z
12
+ date: 2013-03-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cfoundry
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 0.5.0
20
+ version: 0.5.2
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 0.5.0
27
+ version: 0.5.2
28
28
  description: ! "\n AppFog specific plugins for the AF CLI\n "
29
29
  email:
30
30
  - support@appfog.com
@@ -62,6 +62,8 @@ files:
62
62
  - lib/appfog-vmc-plugin/version.rb
63
63
  - lib/appfog-vmc-plugin/vmc/app/apps.rb
64
64
  - lib/appfog-vmc-plugin/vmc/app/instances.rb
65
+ - lib/appfog-vmc-plugin/vmc/start/login.rb
66
+ - lib/appfog-vmc-plugin/vmc/user/base.rb
65
67
  - lib/appfog-vmc-plugin/vmc.rb
66
68
  homepage: http://www.appfog.com/
67
69
  licenses: []