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)",
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()
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: