Repository: cloudstack-cloudmonkey
Updated Branches:
  refs/heads/master 24faf56d5 -> 3ce218da7


cloudmonkey: for username/password auth, have option to configure domain

Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/commit/3cd63b9e
Tree: 
http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/tree/3cd63b9e
Diff: 
http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/diff/3cd63b9e

Branch: refs/heads/master
Commit: 3cd63b9e2c697dd9a029871194be45c4c8d7be49
Parents: 24faf56
Author: Rohit Yadav <rohit.ya...@shapeblue.com>
Authored: Wed Nov 12 23:09:58 2014 +0530
Committer: Rohit Yadav <rohit.ya...@shapeblue.com>
Committed: Wed Nov 12 23:31:49 2014 +0530

----------------------------------------------------------------------
 cloudmonkey/cloudmonkey.py |  5 +++--
 cloudmonkey/config.py      |  1 +
 cloudmonkey/requester.py   | 10 ++++++----
 3 files changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/blob/3cd63b9e/cloudmonkey/cloudmonkey.py
----------------------------------------------------------------------
diff --git a/cloudmonkey/cloudmonkey.py b/cloudmonkey/cloudmonkey.py
index e3790d3..187a7dc 100644
--- a/cloudmonkey/cloudmonkey.py
+++ b/cloudmonkey/cloudmonkey.py
@@ -107,7 +107,7 @@ class CloudMonkeyShell(cmd.Cmd, object):
 
     def init_credential_store(self):
         self.credentials = {'apikey': self.apikey, 'secretkey': self.secretkey,
-                            'username': self.username,
+                            'domain': self.domain, 'username': self.username,
                             'password': self.password}
         parsed_url = urlparse(self.url)
         self.protocol = "http" if not parsed_url.scheme else parsed_url.scheme
@@ -566,7 +566,8 @@ class CloudMonkeyShell(cmd.Cmd, object):
         key, value = (args[0].strip(), args[2].strip())
         if not key:
             return
-        allowed_blank_keys = ["username", "password", "apikey", "secretkey"]
+        allowed_blank_keys = ["username", "password", "apikey", "secretkey",
+                              "domain"]
         if key not in allowed_blank_keys and not value:
             print "Blank value of %s is not allowed" % key
             return

http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/blob/3cd63b9e/cloudmonkey/config.py
----------------------------------------------------------------------
diff --git a/cloudmonkey/config.py b/cloudmonkey/config.py
index 1cf9976..c6bcc3a 100644
--- a/cloudmonkey/config.py
+++ b/cloudmonkey/config.py
@@ -66,6 +66,7 @@ default_profile['timeout'] = '3600'
 default_profile['expires'] = '600'
 default_profile['username'] = 'admin'
 default_profile['password'] = 'password'
+default_profile['domain'] = '/'
 default_profile['apikey'] = ''
 default_profile['secretkey'] = ''
 default_profile['verifysslcert'] = 'true'

http://git-wip-us.apache.org/repos/asf/cloudstack-cloudmonkey/blob/3cd63b9e/cloudmonkey/requester.py
----------------------------------------------------------------------
diff --git a/cloudmonkey/requester.py b/cloudmonkey/requester.py
index 627063e..3ac60d5 100644
--- a/cloudmonkey/requester.py
+++ b/cloudmonkey/requester.py
@@ -52,7 +52,7 @@ def writeError(msg):
     sys.stderr.flush()
 
 
-def login(url, username, password):
+def login(url, username, password, domain="/"):
     """
     Login and obtain a session to be used for subsequent API calls
     Wrong username/password leads to HTTP error code 531
@@ -62,7 +62,7 @@ def login(url, username, password):
     args["command"] = 'login'
     args["username"] = username
     args["password"] = password
-    args["domain"] = "/"
+    args["domain"] = domain
     args["response"] = "json"
 
     sessionkey = ''
@@ -82,7 +82,8 @@ def login(url, username, password):
         sessionkey = None
     elif resp.status_code == 531:
         writeError("Error authenticating at %s using username: %s"
-                   ", and password: %s" % (url, username, password))
+                   ", password: %s, domain: %s" % (url, username, password,
+                                                   domain))
         session = None
         sessionkey = None
     else:
@@ -103,6 +104,7 @@ def make_request_with_password(command, args, logger, url, 
credentials,
     args = args.copy()
     username = credentials['username']
     password = credentials['password']
+    domain = credentials['domain']
 
     if not (username and password):
         error = "Username and password cannot be empty"
@@ -119,7 +121,7 @@ def make_request_with_password(command, args, logger, url, 
credentials,
 
         # obtain a valid session if not supplied
         if not (session and sessionkey):
-            session, sessionkey = login(url, username, password)
+            session, sessionkey = login(url, username, password, domain)
             if not (session and sessionkey):
                 return None, 'Authentication failed'
             credentials['session'] = session

Reply via email to