bunch of cleanups & fixes all over the place
[sfa.git] / sfa / client / sfi.py
index d3c320f..aa13830 100755 (executable)
@@ -11,11 +11,11 @@ from optparse import OptionParser
 
 from sfa.trust.certificate import Keypair, Certificate
 from sfa.trust.credential import Credential
-from sfa.trust.gid import create_uuid
 
-from sfa.util.geniclient import GeniClient, ServerException
+from sfa.util.geniclient import GeniClient
 from sfa.util.record import *
 from sfa.util.rspec import Rspec
+from sfa.util.xmlrpcprotocol import ServerException
 
 # xxx todo xxx auto-load ~/.sfi/sfi_config
 
@@ -91,8 +91,8 @@ def set_servers(options):
    cert_file = get_cert_file(key_file)
 
    # Establish connection to server(s)
-   slicemgr = GeniClient(sm_url, key_file, cert_file)
-   registry = GeniClient(reg_url, key_file, cert_file)
+   slicemgr = GeniClient(sm_url, key_file, cert_file, options.protocol)
+   registry = GeniClient(reg_url, key_file, cert_file, options.protocol)
    return
 
 #
@@ -340,6 +340,9 @@ def create_parser():
    parser.add_option("-v", "--verbose",
         action="store_true", dest="verbose", default=False,
         help="verbose mode")
+   parser.add_option("-p", "--protocol",
+        dest="protocol", default="xmlrpc",
+        help="RPC protocol (xmlrpc or soap)")
    parser.disable_interspersed_args()
 
    return parser
@@ -397,7 +400,11 @@ def main():
 def list(opts, args):
    global registry
    user_cred = get_user_cred()
-   list = registry.list(user_cred, args[0])
+   try:
+      list = registry.list(user_cred, args[0])
+   except IndexError:
+      raise Exception, "Not enough parameters for the 'list' command"
+      
    # filter on person, slice, site, node, etc.  
    # THis really should be in the filter_records funct def comment...
    list = filter_records(opts.type, list)
@@ -582,8 +589,7 @@ def create(opts, args):
    slice_hrn = args[0]
    slice_cred = get_slice_cred(slice_hrn)
    rspec_file = get_rspec_file(args[1])
-   with open(rspec_file) as f:
-      rspec = f.read()
+   rspec=open(rspec_file).read()
    return slicemgr.create_slice(slice_cred, slice_hrn, rspec)
 
 # delete named slice