from optparse import OptionParser
from geni.util.cert import Keypair, Certificate
from geni.util.credential import Credential
-from geni.util.geniclient import GeniClient
+from geni.util.geniclient import GeniClient, ServerException
from geni.util.gid import create_uuid
from geni.util.record import GeniRecord
cmdargs = {"list": "name",
"show": "name",
"remove": "name",
- "add": "name record",
- "update": "name record",
+ "add": "record",
+ "update": "record",
"nodes": "[name]",
"slices": "",
"resources": "name",
% (command, cmdargs[command]))
if command in ("nodes", "resources"):
parser.add_option("-f", "--format", dest="format",type="choice",
- help="display format (dns|ip|hrn|rspec)",default="rspec",
- choices=("dns","ip","hrn","rspec"))
+ help="display format (dns|ip|rspec)",default="rspec",
+ choices=("dns","ip","rspec"))
if command in ("list", "show", "remove"):
parser.add_option("-t", "--type", dest="type",type="choice",
help="type filter (user|slice|sa|ma|node|aggregate)",
user_cred = get_user_cred()
rec_file = get_record_file(args[0])
record = load_record_from_file(rec_file)
-
if record.get_type() == "user":
- cred = user_cred
- elif record.get_type() in ["sa", "ma", "slice", "node"]:
+ print dir(user_cred)
+ if record.get_name() == user_cred.get_gid_object().get_hrn():
+ cred = user_cred
+ else:
+ create = get_auth_cred()
+ elif record.get_type() in ["slice"]:
+ try:
+ cred = get_slice_cred(record.get_name())
+ except ServerException, e:
+ if "PermissionError" in e.args[0]:
+ cred = get_auth_cred()
+ else:
+ raise
+ elif record.get_type() in ["sa", "ma", "node"]:
cred = get_auth_cred()
else:
raise "unknown record type" + record.get_type()
-
return registry.update(cred, record)
#
context = None
else:
context = opts.format
- results = slicemgr.list_nodes(user_cred, context)
+ results = slicemgr.list_nodes(user_cred)
if opts.format in ['rspec']:
display_rspec(results)
else:
display_list(results)
if (opts.file is not None):
- rspec = slicemgr.list_nodes(user_cred, 'rspec')
+ rspec = slicemgr.list_nodes(user_cred)
save_rspec_to_file(rspec, opts.file)
return
# show rspec for named slice
def resources(opts, args):
global slicemgr
- slice_cred = get_slice_cred(args[0])
- result = slicemgr.list_resources(slice_cred, args[0])
+ if args:
+ slice_cred = get_slice_cred(args[0])
+ result = slicemgr.get_resources(slice_cred, args[0])
+ else:
+ user_cred = get_user_cred()
+ result = slicemgr.get_resources(user_cred)
display_rspec(result)
if (opts.file is not None):
save_rspec_to_file(opts.file, result)
def save_record_to_file(filename, record):
if not filename.startswith(os.sep):
filename = sfi_dir + filename
- print "saving record", record.name, "to file", filename
str = record.save_to_string()
file(filename, "w").write(str)
return