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
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"]:
+ if record.get_name() == user_cred.get_object_gid().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)
#
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