From: Tony Mack Date: Tue, 4 May 2010 21:59:58 +0000 (+0000) Subject: implement import X-Git-Tag: sfa-0.9-11~6^2~9 X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=commitdiff_plain;h=4107e5c9c0938b68759068863b6aa92b93dc25ba implement import --- diff --git a/sfa/server/sfa-ca.py b/sfa/server/sfa-ca.py index 30afe4be..8f4fafc1 100755 --- a/sfa/server/sfa-ca.py +++ b/sfa/server/sfa-ca.py @@ -127,13 +127,45 @@ def export_gid(options): if not outfile: outfile = os.path.abspath('./%s.gid' % gid.get_hrn()) + # save it gid.save_to_file(outfile, save_parents=True) - - pass def import_gid(options): + """ + Import the specified gid into the registry (db and authorities + hierarchy) overwriting any previous gid. + """ from sfa.util.table import SfaTable - pass + from sfa.util.record import SfaRecord + # load the gid + gidfile = os.path.abspath(options.importgid) + if not gidfile or not os.path.isfile(gidfile): + print "No such gid: %s" % gidfile + sys.exit(1) + gid = GID(filename=gidfile) + + # check if it exists within the hierarchy + hierarchy = Hierarchy() + if not hierarchy.auth_exists(gid.get_hrn()): + print "%s not found in hierarchy" % gid.get_hrn() + sys.exit(1) + + # check if record exists in db + table = SfaTable() + records = table.find({'hrn': gid.get_hrn(), 'type': 'authority'}) + if not records: + print "%s not found in record database" % get.get_hrn() + sys.exit(1) + # update the database record + record = records[0] + record['gid'] = gid.save_to_string(save_parents=True) + table.update(record) + + # update the hierarchy + auth_info = hierarchy.get_auth_info(gid.get_hrn()) + filename = auth_info.gid_filename + gid.save_to_file(filename, save_parents=True) + if __name__ == '__main__': main()