- request_hash=None
- if self.hashrequest:
- arg_list = [slice_cred, slice_hrn]
- request_hash = self.key.compute_hash(arg_list)
- return self.slicemgr.reset_slice(slice_cred, slice_hrn, request_hash)
-
- #
- #
- # Display, Save, and Filter RSpecs and Records
- # - to be replace by EMF-generated routines
- #
- #
-
- def display_rspec(self,rspec, format = 'rspec'):
- if format in ['dns']:
- spec = RSpec()
- spec.parseString(rspec)
- hostnames = []
- nodespecs = spec.getDictsByTagName('NodeSpec')
- for nodespec in nodespecs:
- if nodespec.has_key('name') and nodespec['name']:
- if isinstance(nodespec['name'], ListType):
- hostnames.extend(nodespec['name'])
- elif isinstance(nodespec['name'], StringTypes):
- hostnames.append(nodespec['name'])
- result = hostnames
- elif format in ['ip']:
- spec = RSpec()
- spec.parseString(rspec)
- ips = []
- ifspecs = spec.getDictsByTagName('IfSpec')
- for ifspec in ifspecs:
- if ifspec.has_key('addr') and ifspec['addr']:
- ips.append(ifspec['addr'])
- result = ips
- else:
- result = rspec
-
- print result
- return
-
- def display_list(self,results):
- for result in results:
- print result
-
- def save_rspec_to_file(self,rspec, filename):
- if not filename.startswith(os.sep):
- filename = self.options.sfi_dir + filename
- if not filename.endswith(".rspec"):
- filename = filename + ".rspec"
-
- f = open(filename, 'w')
- f.write(rspec)
- f.close()
- return
-
- def display_records(self,recordList, dump = False):
- ''' Print all fields in the record'''
- for record in recordList:
- self.display_record(record, dump)
-
- def display_record(self,record, dump = False):
- if dump:
- record.dump()
- else:
- info = record.getdict()
- print "%s (%s)" % (info['hrn'], info['type'])
- return
-
- def filter_records(self,type, records):
- filtered_records = []
- for record in records:
- if (record['type'] == type) or (type == "all"):
- filtered_records.append(record)
- return filtered_records
-
- def save_records_to_file(self,filename, recordList):
- index = 0
- for record in recordList:
- if index>0:
- self.save_record_to_file(filename + "." + str(index), record)
- else:
- self.save_record_to_file(filename, record)
- index = index + 1
-
- def save_record_to_file(self,filename, record):
- if record['type'] in ['user']:
- record = UserRecord(dict = record)
- elif record['type'] in ['slice']:
- record = SliceRecord(dict = record)
- elif record['type'] in ['node']:
- record = NodeRecord(dict = record)
- elif record['type'] in ['authority', 'ma', 'sa']:
- record = AuthorityRecord(dict = record)
- else:
- record = GeniRecord(dict = record)
- if not filename.startswith(os.sep):
- filename = self.options.sfi_dir + filename
- str = record.save_to_string()
- file(filename, "w").write(str)
- return
-
- def load_record_from_file(self,filename):
- str = file(filename, "r").read()
- record = GeniRecord(string=str)
- return record