X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=geni%2Faggregate.py;h=3fb3566baba0571576942528b893986361415481;hb=8da5e3e07dc6ecb5eced01c115aad5e380213c97;hp=fe1a5e80b7c57077c5368051404f3845eb5e161e;hpb=71292384c47fb9dd70ef782ffe799d6d235fb204;p=sfa.git diff --git a/geni/aggregate.py b/geni/aggregate.py index fe1a5e80..3fb3566b 100644 --- a/geni/aggregate.py +++ b/geni/aggregate.py @@ -25,7 +25,7 @@ class Aggregate(GeniServer): # @param key_file private key filename of registry # @param cert_file certificate filename containing public key (could be a GID file) - def __init__(self, ip, port, key_file, cert_file, config = "/usr/share/geniwrapper/geni/util/geni_config"): + def __init__(self, ip, port, key_file, cert_file): GeniServer.__init__(self, ip, port, key_file, cert_file) self.server.interface = 'aggregate' @@ -36,14 +36,32 @@ class Aggregates(dict): required_fields = ['hrn', 'addr', 'port'] - def __init__(self, api): + def __init__(self, api, file = "/etc/geni/aggregates.xml"): dict.__init__(self, {}) self.api = api - aggregates_file = self.api.server_basedir + os.sep + 'aggregates.xml' + + # create default connection dict connection_dict = {} for field in self.required_fields: connection_dict[field] = '' - self.aggregate_info = XmlStorage(aggregates_file, {'aggregates': {'aggregate': [connection_dict]}}) + aggregates_dict = {'aggregates': {'aggregate': [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.aggregate_info = XmlStorage(f, aggregates_dict) + loaded = True + except: pass + + # if file is missing, just recreate it in the right place + if not loaded: + self.aggregate_info = XmlStorage(file, aggregates_dict) self.aggregate_info.load() self.connectAggregates() @@ -82,7 +100,7 @@ class Aggregates(dict): # set up a connection to the local registry # connect to registry using GeniClient - address = self.api.config.GENI_AGGREGATE_HOSTNAME + address = self.api.config.GENI_AGGREGATE_HOST port = self.api.config.GENI_AGGREGATE_PORT url = 'http://%(address)s:%(port)s' % locals() self[self.api.hrn] = GeniClient(url, self.api.key_file, self.api.cert_file)