import sys
from sfa.senslab.OARrestapi import OARapi
from sfa.senslab.LDAPapi import LDAPapi
+from sfa.senslab.slabdriver import SlabDriver
from sfa.util.config import Config
-from sfa.util.xrn import hrn_to_urn, get_authority
+from sfa.util.xrn import hrn_to_urn, get_authority,Xrn,get_leaf
from sfa.util.table import SfaTable
+from sfa.util.record import SfaRecord
from sfa.trust.hierarchy import Hierarchy
+from sfa.trust.certificate import Keypair
+from sfa.trust.gid import create_uuid
+
AuthHierarchy = Hierarchy()
table = SfaTable()
-
+if not table.exists():
+ table.create()
+
def create_top_level_auth_records(hrn):
"""
Create top level records (includes root and sub authorities (local/remote)
node_record['record_id'] = existing_record['record_id']
table.update(node_record)
-
+# person is already a sfa record
def import_person(person):
existing_records = table.find({'hrn': person['hrn'], 'type': 'user'})
if not existing_records:
- table.insert(person_record)
+ table.insert(person)
else:
existing_record = existing_records[0]
person['record_id'] = existing_record['record_id']
- table.update(person_record)
+ table.update(person)
for record in record_list:
table.remove(record)
-
+def hostname_to_hrn(root_auth,hostname):
+ # keep only the first part of the DNS name
+ #hrn='.'.join( [auth,hostname.split(".")[0] ] )
+ # escape the '.' in the hostname
+ hrn='.'.join( [root_auth,Xrn.escape(hostname)] )
+ return hrn_to_urn(hrn,'node')
+
def main():
config = Config()
print interface_hrn, root_auth
# initialize registry db table
- table = SfaTable()
- if not table.exists():
- table.create()
+ #table = SfaTable()
+ #if not table.exists():
+ #table.create()
# create root authority
- SenslabImporter.create_top_level_auth_records(root_auth)
+ create_top_level_auth_records(root_auth)
# create s user record for the slice manager
#Do we need this?
existing_records[(result['hrn'], result['type'])] = result
existing_hrns.append(result['hrn'])
- #Get Senslab nodes
- nodes_dict = OARImporter.GetNodes()
- print "\r\n NODES8DICT ",nodes_dict
+ #Get Senslab nodes
+
+ Driver = SlabDriver(config)
+ nodes_dict = Driver.GetNodes()
+ #print "\r\n NODES8DICT ",nodes_dict
- persons_list = SenslabUsers.GetPersons()
- print "\r\n PERSONS_LIST ",persons_list
+ ldap_person_list = Driver.GetPersons()
+ print "\r\n PERSONS_LIST ",ldap_person_list
- keys_list = SenslabUsers.GetKeys()
- print "\r\n KEYSS_LIST ",keys_list
+
#slices_list = SenslabUsers.GetSlices()
#print "\r\n SLICES_LIST ",slices_list
#(site_hrn, 'authority') not in existing_records:
#print "SITE HRN UNKNOWN" , site, site_hrn
#site_hrn = SenslabImporter.import_site(interface_hrn, site)
-
- print "\r\n \r\n ===========IMPORT NODE_RECORDS ==========\r\n site %s \r\n \t nodes_dict %s" %(site,nodes_dict)
+
# import node records
#for node_id in site['node_ids']:
#for[node['node_id'] for node in nodes_dict]:
#print '\r\n \t **NODE_ID %s node %s '%( node_id, node)
#continue
for node in nodes_dict:
- #if node_id is node['node_id']:
- #node = nodes_dict[node_id]
- print '\r\n \t NODE_ID %s node %s '%( node_id, node)
- hrn = hostname_to_hrn(interface_hrn, root_auth, node['hostname'])
- break
-
- if hrn not in existing_hrns or \
- (hrn, 'node') not in existing_records:
- print "\t\t NODE HRN NOT in existing records!" ,hrn
- import_node(hrn, node)
+ hrn = hostname_to_hrn( root_auth, node['hostname'])
+ if hrn not in existing_hrns or \
+ (hrn, 'node') not in existing_records:
+ print "\t\t NODE HRN NOT in existing record, importing it" ,hrn
+ import_node(hrn, node)
# import persons
- for person in persons_list:
- print >>sys.stderr, "\r\n\r\n^^^^^^^^^^^^^PERSON hrn %s person %s site hrn %s" %(hrn,person)
- SenslabImporter.import_person( site_hrn, person,keys_list)
- if hrn not in existing_hrns or \
- (hrn, 'user') not in existing_records or update_record:
- import_person(site_hrn, person)
+ for person in ldap_person_list:
+ if person['hrn'] not in existing_hrns or \
+ (person['hrn'], 'user') not in existing_records :
+ import_person( person)
# import slices
#for slice_id in site['slice_ids']:
#print >>sys.stderr, "\r\n\r\n \t ^^^^^^^\\\\\\\\\\\\\\\^^^^^^ slice_id %s " %(slice_id)
login_base = get_leaf(get_authority(record_hrn))
nodename = Xrn.unescape(get_leaf(record_hrn))
print "type: node : nodename %s" %(nodename)
- for node in nodes_dict.values():
+ for node in nodes_dict:
if node['hostname'] == nodename :
found = True
break