from sfa.util.version import version_core
from sfa.util.cache import Cache
-from sfa.storage.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord
+#from sfa.storage.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord
+from sfa.storage.persistentobjs import RegRecord
from sfa.rspecs.rspec import RSpec
from sfa.rspecs.rspec_converter import RSpecConverter
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')
+ record_obj=RegRecord (dict=record)
+ f.write('<record hrn="' + record.hrn + '" type="' + record.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")
+ record_obj=RegRecord (dict=record)
+ f.write(record.hrn + "\n")
f.close()
else:
# this should never happen
def save_record_to_file(filename, record):
if record['type'] in ['user']:
- record = UserRecord(dict=record)
+ # UserRecord
+ record = RegRecord(dict=record)
elif record['type'] in ['slice']:
- record = SliceRecord(dict=record)
+ # SliceRecord
+ record = RegRecord(dict=record)
elif record['type'] in ['node']:
- record = NodeRecord(dict=record)
+ # NodeRecord
+ record = RegRecord(dict=record)
elif record['type'] in ['authority', 'ma', 'sa']:
- record = AuthorityRecord(dict=record)
+ # AuthorityRecord
+ record = RegRecord(dict=record)
else:
- record = SfaRecord(dict=record)
+ record = RegRecord(dict=record)
str = record.save_to_string()
f=codecs.open(filename, encoding='utf-8',mode="w")
f.write(str)
f=codecs.open(filename, encoding="utf-8", mode="r")
str = f.read()
f.close()
- record = SfaRecord(string=str)
+ record = RegRecord()
+ record.load_from_xml(str)
return record
class Sfi:
- required_options=['verbose', 'debug', 'registry', 'sm', 'auth', 'user']
+ # dirty hack to make this class usable from the outside
+ required_options=['verbose', 'debug', 'registry', 'sm', 'auth', 'user', 'user_private_key']
@staticmethod
def default_sfi_dir ():
self.sliceapi_proxy=SfaServerProxy(cm_url, self.private_key, self.my_gid)
else:
# otherwise use what was provided as --sliceapi, or SFI_SM in the config
+ if not self.sm_url.startswith('http://') or self.sm_url.startswith('https://'):
+ self.sm_url = 'http://' + self.sm_url
self.logger.info("Contacting Slice Manager at: %s"%self.sm_url)
self.sliceapi_proxy = SfaServerProxy(self.sm_url, self.private_key, self.my_gid,
timeout=self.options.timeout, verbose=self.options.debug)
self.logger.error("No record of type %s"% options.type)
for record in records:
if record['type'] in ['user']:
- record = UserRecord(dict=record)
+ # UserRecord
+ record = RegRecord(dict=record)
elif record['type'] in ['slice']:
- record = SliceRecord(dict=record)
+ # SliceRecord
+ record = RegRecord(dict=record)
elif record['type'] in ['node']:
- record = NodeRecord(dict=record)
+ # NodeRecord
+ record = RegRecord(dict=record)
elif record['type'].startswith('authority'):
- record = AuthorityRecord(dict=record)
+ # AuthorityRecord
+ record = RegRecord(dict=record)
else:
- record = SfaRecord(dict=record)
+ record = RegRecord(dict=record)
+
if (options.format == "text"):
record.dump()
else:
- print record.save_to_string()
+ print record.save_as_xml()
if options.file:
save_records_to_file(options.file, records, options.fileformat)
return
sys.exit(1)
record_filepath = args[0]
rec_file = self.get_record_file(record_filepath)
- record = load_record_from_file(rec_file).as_dict()
+ record = load_record_from_file(rec_file).todict()
return self.registry().Register(record, auth_cred)
def update(self, options, args):
sys.exit(1)
rec_file = self.get_record_file(args[0])
record = load_record_from_file(rec_file)
- if record['type'] == "user":
- if record.get_name() == self.user:
+ if record.type == "user":
+ if record.hrn == self.user:
cred = self.my_credential_string
else:
cred = self.my_authority_credential_string()
- elif record['type'] in ["slice"]:
+ elif record.type in ["slice"]:
try:
- cred = self.slice_credential_string(record.get_name())
+ cred = self.slice_credential_string(record.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.get_type() in ["authority"]:
+ elif record.type in ["authority"]:
cred = self.my_authority_credential_string()
- elif record.get_type() == 'node':
+ elif record.type == 'node':
cred = self.my_authority_credential_string()
else:
- raise "unknown record type" + record.get_type()
- record = record.as_dict()
- return self.registry().Update(record, cred)
+ raise "unknown record type" + record.type
+ record_dict = record.todict()
+ return self.registry().Update(record_dict, cred)
def remove(self, options, args):
"remove registry record by name (Remove)"