def testRegisterAndLookupBridges(self): from AccessGrid.Registry.RegistryClient import RegistryClient from AccessGrid.Descriptions import BridgeDescription, QUICKBRIDGE_TYPE, UMTP_TYPE from AccessGrid.GUID import GUID rc = RegistryClient(url=GetRegistryUrl()) guid1 = GUID() name1 = "name1" host1 = "host1" listenPort1 = 20001 serverType1 = QUICKBRIDGE_TYPE desc1 = "description1" bridgeDesc1 = BridgeDescription(guid=guid1, name=name1, host=host1, port=listenPort1, serverType=serverType1, description=desc1) validSecs1 = rc.RegisterBridge(bridgeDesc1) guid2 = GUID() name2 = "name2" host2 = "host2" listenPort2 = 20002 serverType2 = UMTP_TYPE desc2 = "description2" bridgeDesc2 = BridgeDescription(guid=guid2, name=name2, host=host2, port=listenPort2, serverType=serverType2, description=desc2) validSecs2 = rc.RegisterBridge(bridgeDesc2) results = rc.LookupBridge(5) found1 = False found2 = False for result in results: if self._bridgeDescriptionsMatch(result, bridgeDesc1): found1 = True if self._bridgeDescriptionsMatch(result, bridgeDesc2): found2 = True assert found1 assert found2
def main(): prefs = Preferences() registryClient = RegistryClient('http://www.accessgrid.org/registry/peers.txt') bridgeList = prefs.GetBridges() bridgePinger = BridgePingThread(prefs,registryClient,bridgeList.values()) bridgePinger.start() while 1: bridges = prefs.GetBridges().values() bridges.sort(lambda x,y: BridgeDescription.sort(x, y, 1)) for b in bridges: print '%2.5f %s' % (b.rank, b.name) print 'sleeping for ', bridgePinger.refreshDelay time.sleep(bridgePinger.refreshDelay)
def main(): prefs = Preferences() registryClient = RegistryClient( 'http://www.accessgrid.org/registry/peers.txt') bridgeList = prefs.GetBridges() bridgePinger = BridgePingThread(prefs, registryClient, bridgeList.values()) bridgePinger.start() while 1: bridges = prefs.GetBridges().values() bridges.sort(lambda x, y: BridgeDescription.sort(x, y, 1)) for b in bridges: print '%2.5f %s' % (b.rank, b.name) print 'sleeping for ', bridgePinger.refreshDelay time.sleep(bridgePinger.refreshDelay)
def LookupBridge(self): ''' Query registry for a list of bridges. @return: command output @rtype: string ''' self._connectToRegistry() bridges = self.serverProxy.LookupBridge() # Create real bridge descriptions self.bridges = [] for b in bridges: if 'portMin' not in b.keys(): b['portMin'] = 0 b['portMax'] = 0 desc = BridgeDescription(b["guid"], b["name"], b["host"], b["port"], b["serverType"], b["description"], b["portMin"], b["portMax"]) self.bridges.append(desc) return self.bridges
def __init__(self, name, location, listenPort, qbexec, registryUrlList, portRange=None): if not os.path.exists(qbexec): raise Exception( "QuickBridge executable does not exist at this location:", qbexec) self.bridgeFactory = BridgeFactory(qbexec=qbexec, portRange=portRange, logger=log) self.providerProfile = ProviderProfile(name, location) self.listenPort = listenPort self.listeningServer = AsyncAGXMLRPCServerThreaded( ("", listenPort), intervalSecs=1, callback=self.MaintenanceCallback, logRequests=0) self._RegisterRemoteFunctions() self.registryClients = [] for registryUrl in registryUrlList: self.registryClients.append(RegistryClient(url=registryUrl)) hostname = SystemConfig.instance().GetHostname() self.bridgeDescription = BridgeDescription( guid=GUID(), name=name, host=hostname, port=self.listenPort, serverType=QUICKBRIDGE_TYPE, description="", portMin=self.bridgeFactory.GetPortMin(), portMax=self.bridgeFactory.GetPortMax()) self._RegisterWithRegistry() self.running = False
def GetBridges(self): # Get bridges from the local config directory self.bridges = [] bridges = {} if os.path.exists(self.configPath): config = LoadConfig(self.config.GetBridges()) else: # Cache does not exist, return return self.bridges # Parse config dict and create bridge descriptions for key in config.keys(): bridgeid = key.split(".")[0] val = key.split(".")[1] if not bridges.has_key(bridgeid): bridges[bridgeid] = BridgeDescription(bridgeid, "", "", "", "", "") if val == "name": bridges[bridgeid].name = config[key] elif val == "host": bridges[bridgeid].host = config[key] elif val == "port": bridges[bridgeid].port = config[key] elif val == "serverType": bridges[bridgeid].serverType = config[key] elif val == "description": bridges[bridgeid].description = config[key] elif val == "status": bridges[bridgeid].status = config[key] elif val == "rank": bridges[bridgeid].rank = float(config[key]) elif val == "portMin": bridges[bridgeid].portMin = int(config[key]) elif val == "portMax": bridges[bridgeid].portMax = int(config[key]) elif val == "userRank": bridges[bridgeid].userRank = float(config[key]) for b in bridges.values(): self.bridges.append(b) return self.bridges