X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fserver%2Finterface.py;h=dbc548914c9b9319aa4deec4e7f2a361d88fecfe;hb=58d1f7648212cd6897b8b53ce80c2014b08c19bc;hp=489d88b4de4c7c99bad5a66308e41fda498b7be6;hpb=d4da882859aeee96d7f61f5245c6691d0c11c65f;p=sfa.git diff --git a/sfa/server/interface.py b/sfa/server/interface.py index 489d88b4..dbc54891 100644 --- a/sfa/server/interface.py +++ b/sfa/server/interface.py @@ -7,7 +7,6 @@ from sfa.util.faults import * from sfa.util.storage import * from sfa.util.namespace import * from sfa.trust.gid import GID -from sfa.util.table import SfaTable from sfa.util.record import SfaRecord import traceback import sfa.util.xmlrpcprotocol as xmlrpcprotocol @@ -60,6 +59,13 @@ class Interfaces(dict): interfaces = self.interface_info.values()[0].values()[0] if not isinstance(interfaces, list): interfaces = [self.interfaces] + # set the url and urn + for interface in interfaces: + hrn, address, port = interface['hrn'], interface['addr'], interface['port'] + url = 'http://%(address)s:%(port)s' % locals() + interface['url'] = url + interface['urn'] = hrn_to_urn(hrn, 'authority') + self.interfaces = {} required_fields = self.default_fields.keys() for interface in interfaces: @@ -143,13 +149,13 @@ class Interfaces(dict): defined in the config file (registries.xml). Removes old records from the db. """ + # import SfaTable here so this module can be loaded by CompoenetAPI + from sfa.util.table import SfaTable if not gids: return - # get hrns we expect to find - # ignore records for local interfaces - ignore_interfaces = [self.api.config.SFA_INTERFACE_HRN] - hrns_expected = [gid.get_hrn() for gid in gids \ - if gid.get_hrn() not in ignore_interfaces] + + # hrns that should have a record + hrns_expected = [gid.get_hrn() for gid in gids] # get hrns that actually exist in the db table = SfaTable() @@ -158,7 +164,8 @@ class Interfaces(dict): # remove old records for record in records: - if record['hrn'] not in hrns_expected: + if record['hrn'] not in hrns_expected and \ + record['hrn'] != self.api.config.SFA_INTERFACE_HRN: table.remove(record) # add new records @@ -184,12 +191,8 @@ class Interfaces(dict): required_fields = self.default_fields.keys() for interface in self.interfaces.values(): # make sure the required fields are present and not null - if not all([interface.get(key) for key in required_fields]): - continue - - hrn, address, port = interface['hrn'], interface['addr'], interface['port'] - url = 'http://%(address)s:%(port)s' % locals() + url = interface['url'] # check which client we should use # sfa.util.xmlrpcprotocol is default client_type = 'xmlrpcprotocol' @@ -199,6 +202,6 @@ class Interfaces(dict): client_type = 'geniclientlight' connections[hrn] = GeniClientLight(url, self.api.key_file, self.api.cert_file) else: - connections[hrn] = xmlrpcprotocol.get_server(url, self.api.key_file, self.api.cert_file) + connections[interface['hrn']] = xmlrpcprotocol.get_server(url, self.api.key_file, self.api.cert_file) return connections