def save_rspec_to_file(rspec, filename):
if not filename.endswith(".rspec"):
filename = filename + ".rspec"
-
f = open(filename, 'w')
f.write(rspec)
f.close()
return
-def save_records_to_file(filename, recordList):
- index = 0
- for record in recordList:
- if index > 0:
- save_record_to_file(filename + "." + str(index), record)
- else:
- save_record_to_file(filename, record)
- index = index + 1
+def save_records_to_file(filename, recordList, format="xml"):
+ if format == "xml":
+ index = 0
+ for record in recordList:
+ if index > 0:
+ save_record_to_file(filename + "." + str(index), record)
+ else:
+ save_record_to_file(filename, record)
+ index = index + 1
+ elif format == "xmllist":
+ f = open(filename, "w")
+ f.write("<recordlist>\n")
+ for record in recordList:
+ record = SfaRecord(dict=record)
+ f.write('<record hrn="' + record.get_name() + '" type="' + record.get_type() + '" />\n')
+ f.write("</recordlist>\n");
+ f.close()
+ elif format == "hrnlist":
+ f = open(filename, "w")
+ for record in recordList:
+ record = SfaRecord(dict=record)
+ f.write(record.get_name() + "\n")
+ f.close()
+ else:
+ # this should never happen
+ print "unknown output format", format
def save_record_to_file(filename, record):
if record['type'] in ['user']:
if command in ("resources", "show", "list", "create_gid", 'create'):
parser.add_option("-o", "--output", dest="file",
help="output XML to file", metavar="FILE", default=None)
-
+
if command in ("show", "list"):
parser.add_option("-f", "--format", dest="format", type="choice",
help="display format ([text]|xml)", default="text",
choices=("text", "xml"))
+ parser.add_option("-F", "--fileformat", dest="fileformat", type="choice",
+ help="output file format ([xml]|xmllist|hrnlist)", default="xml",
+ choices=("xml", "xmllist", "hrnlist"))
+
if command in ("delegate"):
parser.add_option("-u", "--user",
action="store_true", dest="delegate_user", default=False,
list = self.registry.List(hrn, user_cred)
except IndexError:
raise Exception, "Not enough parameters for the 'list' command"
-
- # filter on person, slice, site, node, etc.
+
+ # filter on person, slice, site, node, etc.
# THis really should be in the self.filter_records funct def comment...
list = filter_records(opts.type, list)
for record in list:
- print "%s (%s)" % (record['hrn'], record['type'])
+ print "%s (%s)" % (record['hrn'], record['type'])
if opts.file:
- file = opts.file
- if not file.startswith(os.sep):
- file = os.path.join(self.options.sfi_dir, file)
- save_records_to_file(file, list)
+ save_records_to_file(opts.file, list, opts.fileformat)
return
# show named registry record
hrn = args[0]
user_cred = self.get_user_cred().save_to_string(save_parents=True)
records = self.registry.Resolve(hrn, user_cred)
- print records
records = filter_records(opts.type, records)
if not records:
print "No record of type", opts.type
else:
print record.save_to_string()
if opts.file:
- file = opts.file
- if not file.startswith(os.sep):
- file = os.path.join(self.options.sfi_dir, file)
- save_records_to_file(file, records)
+ save_records_to_file(opts.file, records, opts.fileformat)
return
def delegate(self, opts, args):
if self.server_supports_call_id_arg(server):
call_args.append(unique_call_id())
result = server.ListResources(*call_args)
- format = opts.format
if opts.file is None:
- display_rspec(result, format)
+ display_rspec(result, opts.format)
else:
- file = opts.file
- if not file.startswith(os.sep):
- file = os.path.join(self.options.sfi_dir, file)
- save_rspec_to_file(result, file)
+ save_rspec_to_file(result, opts.file)
return
# created named slice with given rspec
all_keys = []
all_key_ids = []
slice_records = self.registry.Resolve(slice_urn, [user_cred.save_to_string(save_parents=True)])
- if slice_records and 'researcher' in slice_records[0]:
+ if slice_records and 'researcher' in slice_records[0] and slice_records[0]['researcher']!=[]:
slice_record = slice_records[0]
user_hrns = slice_record['researcher']
user_urns = [hrn_to_urn(hrn, 'user') for hrn in user_hrns]