git://git.onelab.eu
/
plcapi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'origin/pycurl' into planetlab-4_0-branch
[plcapi.git]
/
PLC
/
Shell.py
diff --git
a/PLC/Shell.py
b/PLC/Shell.py
index
d9e812c
..
43317a0
100644
(file)
--- a/
PLC/Shell.py
+++ b/
PLC/Shell.py
@@
-5,9
+5,10
@@
# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2005 The Trustees of Princeton University
#
# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2005 The Trustees of Princeton University
#
-# $Id: Shell.py
,v 1.1 2007/01/08 18:10:30 mlhuang Exp
$
+# $Id: Shell.py
5574 2007-10-25 20:33:17Z thierry
$
#
#
+import os
import pydoc
import xmlrpclib
import pydoc
import xmlrpclib
@@
-57,8
+58,12
@@
class Shell:
config = None,
# XML-RPC server
url = None, xmlrpc = False, cacert = None,
config = None,
# XML-RPC server
url = None, xmlrpc = False, cacert = None,
- # API authentication
- method = None, role = None, user = None, password = None):
+ # API authentication method
+ method = None,
+ # Password authentication
+ role = None, user = None, password = None,
+ # Session authentication
+ session = None):
"""
Initialize a new shell instance. Re-initializes globals.
"""
"""
Initialize a new shell instance. Re-initializes globals.
"""
@@
-103,17
+108,25
@@
class Shell:
":" + str(self.config.PLC_API_PORT) + \
"/" + self.config.PLC_API_PATH + "/"
":" + str(self.config.PLC_API_PORT) + \
"/" + self.config.PLC_API_PATH + "/"
-
if cacert is None and self.config is not
None:
- cacert = self.config.PLC_API_CA_SSL_CRT
+
if cacert is
None:
+
cacert = self.config.PLC_API_CA_SSL_CRT
self.url = url
self.url = url
- self.server = xmlrpclib.ServerProxy(url, PyCurlTransport(url, cacert), allow_none = 1)
+ if cacert is not None:
+ self.server = xmlrpclib.ServerProxy(url, PyCurlTransport(url, cacert), allow_none = 1)
+ else:
+ self.server = xmlrpclib.ServerProxy(url, allow_none = 1)
# Set up authentication structure
# Set up authentication structure
- # Default is to use capability authentication
+ # Default is to use
session or
capability authentication
if (method, user, password) == (None, None, None):
if (method, user, password) == (None, None, None):
- method = "capability"
+ if session is not None or os.path.exists("/etc/planetlab/session"):
+ method = "session"
+ if session is None:
+ session = "/etc/planetlab/session"
+ else:
+ method = "capability"
if method == "capability":
# Load defaults from configuration file if using capability
if method == "capability":
# Load defaults from configuration file if using capability
@@
-130,6
+143,14
@@
class Shell:
if role == "anonymous" or method == "anonymous":
self.auth = {'AuthMethod': "anonymous"}
if role == "anonymous" or method == "anonymous":
self.auth = {'AuthMethod': "anonymous"}
+ elif method == "session":
+ if session is None:
+ raise Exception, "Must specify session"
+
+ if os.path.exists(session):
+ session = file(session).read()
+
+ self.auth = {'AuthMethod': "session", 'session': session}
else:
if user is None:
raise Exception, "Must specify username"
else:
if user is None:
raise Exception, "Must specify username"