Пример #1
0
    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
Пример #2
0
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)
Пример #3
0
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
Пример #5
0
 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
Пример #6
0
    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
Пример #7
0
    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