#
# sfi.py - basic SFA command-line client
-# the actual binary in sfa/clientbin essentially runs main()
-# this module is used in sfascan
+# this module is also used in sfascan
#
import sys
#panos: a new option to define the type of information about resources a user is interested in
parser.add_option("-i", "--info", dest="info",
help="optional component information", default=None)
+ # a new option to retreive or not reservation-oriented RSpecs (leases)
+ parser.add_option("-l", "--list_leases", dest="list_leases", type="choice",
+ help="Retreive or not reservation-oriented RSpecs ([resources]|leases|all )",
+ choices=("all", "resources", "leases"), default="resources")
# 'create' does return the new rspec, makes sense to save that too
record_dict.update(load_record_from_file(rec_file).todict())
if options:
record_dict.update(load_record_from_opts(options).todict())
- if not record_dict:
+ # at the very least we need 'type' here
+ if 'type' not in record_dict:
self.print_help()
sys.exit(1)
- record = Record(dict=record_dict)
- if record.type == "user":
- if record.hrn == self.user:
+ # don't translate into an object, as this would possibly distort
+ # user-provided data; e.g. add an 'email' field to Users
+ if record_dict['type'] == "user":
+ if record_dict['hrn'] == self.user:
cred = self.my_credential_string
else:
cred = self.my_authority_credential_string()
- elif record.type in ["slice"]:
+ elif record_dict['type'] in ["slice"]:
try:
- cred = self.slice_credential_string(record.hrn)
+ cred = self.slice_credential_string(record_dict['hrn'])
except ServerException, e:
# XXX smbaker -- once we have better error return codes, update this
# to do something better than a string compare
cred = self.my_authority_credential_string()
else:
raise
- elif record.type in ["authority"]:
+ elif record_dict['type'] in ["authority"]:
cred = self.my_authority_credential_string()
- elif record.type == 'node':
+ elif record_dict['type'] == 'node':
cred = self.my_authority_credential_string()
else:
- raise "unknown record type" + record.type
- record_dict = record.todict()
+ raise "unknown record type" + record_dict['type']
return self.registry().Update(record_dict, cred)
def remove(self, options, args):
api_options['geni_slice_urn'] = hrn_to_urn(hrn, 'slice')
if options.info:
api_options['info'] = options.info
+ if options.list_leases:
+ api_options['list_leases'] = options.list_leases
if options.current:
if options.current == True:
api_options['cached'] = False
rspec.filter({'component_manager_id': server_version['urn']})
rspec = RSpecConverter.to_pg_rspec(rspec.toxml(), content_type='request')
else:
+ print >>sys.stderr, "\r\n \r\n \r\n WOOOOOO"
users = sfa_users_arg(user_records, slice_record)
# do not append users, keys, or slice tags. Anything