X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FShell.py;h=25bb0d597a84c1d42bafff2dea07144f0ed5b9bf;hb=2d763c5797f31cc782ae63901b1dd3e48ba41173;hp=9069a0982be2a1d5e983d1cac7b24ce40d15d286;hpb=f5cd72e35593c96b9996ab4e49674cccc7525c48;p=plcapi.git diff --git a/PLC/Shell.py b/PLC/Shell.py index 9069a09..25bb0d5 100644 --- a/PLC/Shell.py +++ b/PLC/Shell.py @@ -1,17 +1,14 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # # Interactive shell for testing PLCAPI # # Mark Huang # Copyright (C) 2005 The Trustees of Princeton University # -# $Id$ -# $URL$ -# import os import pydoc -import xmlrpclib +import xmlrpc.client from PLC.API import PLCAPI from PLC.Parameter import Mixed @@ -41,8 +38,8 @@ class Callable: if self.auth and \ (not args or not isinstance(args[0], dict) or \ - (not args[0].has_key('AuthMethod') and \ - not args[0].has_key('session'))): + ('AuthMethod' not in args[0] and \ + 'session' not in args[0])): args = (self.auth,) + args if self.shell.multi: @@ -88,7 +85,7 @@ class Shell: self.config = self.api.config self.url = None self.server = None - except Exception, err: + except Exception as err: # Try connecting to the API server via XML-RPC self.api = PLCAPI(None) @@ -97,13 +94,13 @@ class Shell: self.config = Config() else: self.config = Config(config) - except Exception, err: + except Exception as err: # Try to continue if no configuration file is available self.config = None if url is None: if self.config is None: - raise Exception, "Must specify API URL" + raise Exception("Must specify API URL") url = "https://" + self.config.PLC_API_HOST + \ ":" + str(self.config.PLC_API_PORT) + \ @@ -114,9 +111,9 @@ class Shell: self.url = url if cacert is not None: - self.server = xmlrpclib.ServerProxy(url, PyCurlTransport(url, cacert), allow_none = 1) + self.server = xmlrpc.client.ServerProxy(url, PyCurlTransport(url, cacert), allow_none = 1) else: - self.server = xmlrpclib.ServerProxy(url, allow_none = 1) + self.server = xmlrpc.client.ServerProxy(url, allow_none = 1) # Set up authentication structure @@ -146,18 +143,19 @@ class Shell: self.auth = {'AuthMethod': "anonymous"} elif method == "session": if session is None: - raise Exception, "Must specify session" + raise Exception("Must specify session") if os.path.exists(session): - session = file(session).read() + with open(session) as feed: + session = feed.read() self.auth = {'AuthMethod': "session", 'session': session} else: if user is None: - raise Exception, "Must specify username" + raise Exception("Must specify username") if password is None: - raise Exception, "Must specify password" + raise Exception("Must specify password") self.auth = {'AuthMethod': method, 'Username': user, @@ -181,7 +179,7 @@ class Shell: if api_function.accepts and \ (isinstance(api_function.accepts[0], Auth) or \ (isinstance(api_function.accepts[0], Mixed) and \ - filter(lambda param: isinstance(param, Auth), api_function.accepts[0]))): + [param for param in api_function.accepts[0] if isinstance(param, Auth)])): auth = self.auth else: auth = None @@ -236,7 +234,7 @@ class Shell: def begin(self): if self.calls: - raise Exception, "multicall already in progress" + raise Exception("multicall already in progress") self.multi = True @@ -247,11 +245,11 @@ class Shell: results = self.system.multicall(self.calls) for result in results: if type(result) == type({}): - raise xmlrpclib.Fault(result['faultCode'], result['faultString']) + raise xmlrpc.client.Fault(result['faultCode'], result['faultString']) elif type(result) == type([]): ret.append(result[0]) else: - raise ValueError, "unexpected type in multicall result" + raise ValueError("unexpected type in multicall result") else: ret = None