from sfa.util.record import *
from sfa.util.table import SfaTable
-from sfa.util.namespace import *
+from sfa.util.xrn import get_authority, hrn_to_urn
+from sfa.util.plxrn import email_to_hrn
from sfa.util.config import Config
from sfa.trust.certificate import convert_public_key, Keypair
from sfa.trust.trustedroot import *
import PLC.Shell
self.shell = PLC.Shell.Shell(globals = globals())
-
def create_top_level_auth_records(self, hrn):
+ """
+ Create top level records (includes root and sub authorities (local/remote)
+ """
urn = hrn_to_urn(hrn, 'authority')
# make sure parent exists
parent_hrn = get_authority(hrn)
if not auth_record:
auth_record = SfaRecord(hrn=hrn, gid=auth_info.get_gid_object(), type="authority", pointer=-1)
auth_record['authority'] = get_authority(auth_record['hrn'])
- self.logger.info("Import: inserting authority record for " + hrn)
+ self.logger.info("Import: inserting authority record for %s"%hrn)
table.insert(auth_record)
+ def create_interface_records(self):
+ """
+ Create a record for each SFA interface
+ """
+ # just create certs for all sfa interfaces even if they
+ # arent enabled
+ interface_hrn = self.config.SFA_INTERFACE_HRN
+ interfaces = ['authority+sa', 'authority+am', 'authority+sm']
+ table = SfaTable()
+ auth_info = self.AuthHierarchy.get_auth_info(interface_hrn)
+ pkey = auth_info.get_pkey_object()
+ for interface in interfaces:
+ interface_record = table.find({'type': interface, 'hrn': interface_hrn})
+ if not interface_record:
+ self.logger.info("Import: interface %s %s " % (interface_hrn, interface))
+ urn = hrn_to_urn(interface_hrn, interface)
+ gid = self.AuthHierarchy.create_gid(urn, create_uuid(), pkey)
+ record = SfaRecord(hrn=interface_hrn, gid=gid, type=interface, pointer=-1)
+ record['authority'] = get_authority(interface_hrn)
+ table.insert(record)
def import_person(self, parent_hrn, person):
+ """
+ Register a user record
+ """
hrn = email_to_hrn(parent_hrn, person['email'])
# ASN.1 will have problems with hrn's longer than 64 characters
if len(hrn) > 64:
hrn = hrn[:64]
- self.logger.info("Import: person " + hrn)
+ self.logger.info("Import: person %s"%hrn)
key_ids = []
if 'key_ids' in person and person['key_ids']:
key_ids = person["key_ids"]
slicename = _cleanup_string(slicename)
if not slicename:
- self.logger.error("Import: failed to parse slice name " + slice['name'])
+ self.logger.error("Import: failed to parse slice name %s" %slice['name'])
return
hrn = parent_hrn + "." + slicename
- self.logger.info("Import: slice " + hrn)
+ self.logger.info("Import: slice %s"%hrn)
pkey = Keypair(create=True)
urn = hrn_to_urn(hrn, 'slice')
slice_record['record_id'] = existing_record['record_id']
table.update(slice_record)
- def import_node(self, parent_hrn, node):
- nodename = node['hostname'].split(".")[0]
- nodename = _cleanup_string(nodename)
-
- if not nodename:
- self.logger.error("Import: failed to parse node name " + node['hostname'])
- return
-
- hrn = parent_hrn + "." + nodename
+ def import_node(self, hrn, node):
self.logger.info("Import: node %s" % hrn)
# ASN.1 will have problems with hrn's longer than 64 characters
if len(hrn) > 64:
hrn = ".".join([parent_hrn, "internet2", sitename])
urn = hrn_to_urn(hrn, 'authority')
- self.logger.info("Import: site " + hrn)
+ self.logger.info("Import: site %s"%hrn)
# create the authority
if not self.AuthHierarchy.auth_exists(urn):