X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=geni%2Fregistry.py;h=3bbbe0adf3d53175d366daa98bdf884eeb59cb4b;hb=8ca10be7ebbe612c21875ef914a6b1d9b5447872;hp=307637a555ca2d05339bd225e012d7615bd21292;hpb=bd70c4d07220538daaaec6eab47ee16090e70dfd;p=sfa.git diff --git a/geni/registry.py b/geni/registry.py index 307637a5..3bbbe0ad 100644 --- a/geni/registry.py +++ b/geni/registry.py @@ -46,14 +46,33 @@ class Registries(dict): required_fields = ['hrn', 'addr', 'port'] - def __init__(self, api): + def __init__(self, api, file = "/etc/geni/registries.xml"): dict.__init__(self, {}) self.api = api - registries_file = self.api.server_basedir + os.sep + 'registries.xml' + + # create default connection dict connection_dict = {} for field in self.required_fields: - connection_dict[field] = '' - self.registry_info = XmlStorage(registries_file, {'registries': {'registry': [connection_dict]}}) + connection_dict[field] = '' + registries_dict = {'registries': {'registry': [connection_dict]}} + + # get possible config file locations + loaded = False + path = os.path.dirname(os.path.abspath(__file__)) + filename = file.split(os.sep)[-1] + alt_file = path + os.sep + filename + files = [file, alt_file] + + for f in files: + try: + if os.path.isfile(f): + self.registry_info = XmlStorage(f, registries_dict) + loaded = True + except: pass + + # if file is missing, just recreate it in the right place + if not loaded: + self.registry_info = XmlStorage(file, registries_dict) self.registry_info.load() self.connectRegistries()