Пример #1
0
    def getHostnameByFSUUID(self,uuid,_user="",cached=True) :
        """
        returns hostname of a fileserver by uuid
        """
        self.Logger.debug("called with %s, cached=%s" % (uuid,cached))
        self.Logger.debug("self._CFG=%s" % (self._CFG))
        if cached :
            # local Cache first
            for hn in self.localCache["FSUUIDs"] :
                if self.localCache["FSUUIDs"][hn] == uuid :
                    return hn
            # then DB 
            if self._CFG.DB_CACHE:
                from DBManager import DBManager
                from afs.model.FileServer import FileServer
                thisDBManager=DBManager(self._CFG)
                fs=thisDBManager.getFromCache(FileServer,uuid=uuid)
                self.Logger.debug("looking up hostname in DB_Cache for uuid=%s" % uuid)
                if fs != None :
                    self.localCache["FSUUIDs"][fs.servernames[0]] = fs.uuid                  
                    return fs.servernames[0]

        # not found in local cache and not in DB Cache, or cacheing disabled.
        # get it from live-system
        from afs.dao.VLDbDAO import VLDbDAO
        _vlDAO=VLDbDAO()
        name_or_ip=None
        for fs in _vlDAO.getFsServList(_cfg=self._CFG,_user="" ) :
            if fs['uuid'] == uuid :
               name_or_ip = fs['name_or_ip']
        if name_or_ip == None :
            raise LookupUtilError("No Server with uuid=%s registered in live-system" % uuid)
        # store it in localCache 
        self.Logger.debug("getHostnameByFSUUID: got name_or_ip =%s from live-system" % name_or_ip)
        name_or_ip=self.getDNSInfo(name_or_ip)["names"][0]
        self.localCache["FSUUIDs"][name_or_ip] = uuid                  
        self.Logger.debug("returning: %s" % name_or_ip)
        return name_or_ip