X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=geni%2Fgimport.py;h=ef6534c23672048b358429d2af3cdf2ea76d0a26;hb=1558d5577c91788ef01eab10f6dfadef7c51b511;hp=0d8e19d780c3c90a3b84b0d85958ec8693932239;hpb=4778b712a9cb2d837a8d3237372377668da59572;p=sfa.git diff --git a/geni/gimport.py b/geni/gimport.py index 0d8e19d7..ef6534c2 100755 --- a/geni/gimport.py +++ b/geni/gimport.py @@ -22,14 +22,34 @@ from geni.util.hierarchy import * from geni.util.record import * from geni.util.genitable import * from geni.util.misc import * +from geni.util.config import * -shell = None +# get PL account settings from config module +pl_auth = get_pl_auth() + +# connect to planetlab +if "Url" in pl_auth: + from geni.util import remoteshell + shell = remoteshell.RemoteShell() +else: + import PLC.Shell + shell = PLC.Shell.Shell(globals = globals()) ## # Two authorities are specified: the root authority and the level1 authority. -root_auth = "planetlab" -level1_auth = "planetlab.us" +#root_auth = "plc" +#level1_auth = None + +#root_auth = "planetlab" +#level1_auth = "planetlab.us" +config = Config() + +root_auth = config.GENI_REGISTRY_ROOT_AUTH +level1_auth = config.GENI_REGISTRY_LEVEL1_AUTH +if not level1_auth or level1_auth in ['']: + level1_auth = None +keyconvert_fn = config.GENI_BASE_DIR + os.sep + "keyconvert/keyconvert" def un_unicode(str): @@ -78,6 +98,8 @@ def connect_shell(): import PLC.Shell shell = PLC.Shell.Shell(globals = globals()) + return shell + def get_auth_table(auth_name): AuthHierarchy = Hierarchy() auth_info = AuthHierarchy.get_auth_info(auth_name) @@ -110,7 +132,11 @@ def get_pl_pubkey(key_id): os.write(ssh_f, key_str) os.close(ssh_f) - cmd = "../keyconvert/keyconvert " + ssh_fn + " " + ssl_fn + if not os.path.exists(keyconvert_fn): + report.trace(" keyconvert utility " + str(keyconvert_fn) + " does not exist"); + sys.exit(-1) + + cmd = keyconvert_fn + " " + ssh_fn + " " + ssl_fn print cmd os.system(cmd) @@ -137,7 +163,11 @@ def get_pl_pubkey(key_id): return None def person_to_hrn(parent_hrn, person): - personname = person['last_name'] + "_" + person['first_name'] + # the old way - Lastname_Firstname + #personname = person['last_name'] + "_" + person['first_name'] + + # the new way - use email address up to the "@" + personname = person['email'].split("@")[0] personname = cleanup_string(personname) @@ -211,7 +241,7 @@ def import_slice(parent_hrn, slice): def import_node(parent_hrn, node): AuthHierarchy = Hierarchy() - nodename = node['hostname'] + nodename = node['hostname'].split(".")[0] nodename = cleanup_string(nodename) if not nodename: @@ -253,17 +283,11 @@ def import_site(parent_hrn, site): table = get_auth_table(parent_hrn) - sa_record = table.resolve("sa", hrn) - if not sa_record: - sa_record = GeniRecord(name=hrn, gid=auth_info.get_gid_object(), type="sa", pointer=site['site_id']) - report.trace(" inserting sa record for " + hrn) - table.insert(sa_record) - - ma_record = table.resolve("ma", hrn) - if not ma_record: - ma_record = GeniRecord(name=hrn, gid=auth_info.get_gid_object(), type="ma", pointer=site['site_id']) - report.trace(" inserting ma record for " + hrn) - table.insert(ma_record) + auth_record = table.resolve("authority", hrn) + if not auth_record: + auth_record = GeniRecord(name=hrn, gid=auth_info.get_gid_object(), type="authority", pointer=site['site_id']) + report.trace(" inserting authority record for " + hrn) + table.insert(auth_record) for person_id in site['person_ids']: persons = shell.GetPersons(pl_auth, [person_id]) @@ -289,21 +313,17 @@ def import_site(parent_hrn, site): def create_top_level_auth_records(hrn): parent_hrn = get_authority(hrn) - print hrn, ":", parent_hrn + print hrn, ":", parent_hrn + if not parent_hrn: + parent_hrn = hrn auth_info = AuthHierarchy.get_auth_info(parent_hrn) table = get_auth_table(parent_hrn) - sa_record = table.resolve("sa", hrn) - if not sa_record: - sa_record = GeniRecord(name=hrn, gid=auth_info.get_gid_object(), type="sa", pointer=-1) - report.trace(" inserting sa record for " + hrn) - table.insert(sa_record) - - ma_record = table.resolve("ma", hrn) - if not ma_record: - ma_record = GeniRecord(name=hrn, gid=auth_info.get_gid_object(), type="ma", pointer=-1) - report.trace(" inserting ma record for " + hrn) - table.insert(ma_record) + auth_record = table.resolve("authority", hrn) + if not auth_record: + auth_record = GeniRecord(name=hrn, gid=auth_info.get_gid_object(), type="authority", pointer=-1) + report.trace(" inserting authority record for " + hrn) + table.insert(auth_record) def main(): global AuthHierarchy @@ -311,6 +331,8 @@ def main(): process_options() + print "Base Directory: ", config.GENI_BASE_DIR + AuthHierarchy = Hierarchy() TrustedRoots = TrustedRootList() @@ -318,10 +340,15 @@ def main(): if not AuthHierarchy.auth_exists(root_auth): AuthHierarchy.create_auth(root_auth) - #create_top_level_auth_records(root_auth) - if not AuthHierarchy.auth_exists(level1_auth): - AuthHierarchy.create_auth(level1_auth) - create_top_level_auth_records(level1_auth) + + create_top_level_auth_records(root_auth) + if level1_auth: + if not AuthHierarchy.auth_exists(level1_auth): + AuthHierarchy.create_auth(level1_auth) + create_top_level_auth_records(level1_auth) + import_auth = level1_auth + else: + import_auth = root_auth print "Import: adding", root_auth, "to trusted list" root = AuthHierarchy.get_auth_info(root_auth) @@ -331,7 +358,7 @@ def main(): sites = shell.GetSites(pl_auth) for site in sites: - import_site(level1_auth, site) + import_site(import_auth, site) if __name__ == "__main__": main()