Exemple #1
0
    def get_hostname_by_fsuuid(self, uuid, _user = "", cached = True) :
        """
        returns hostname of a fileserver by uuid
        """
        self._logger.debug("called with %s, cached=%s" % (uuid, cached))
        if cached :
            # local Cache first
            for hostname in self.memory_cache["fsuuids"] :
                if not is_name(hostname) : 
                    continue
                if self.memory_cache["fsuuids"][hostname] == uuid :
                    self._logger.debug("returning from local cache: %s" % \
                        hostname)
                    return hostname
            # then DB 
            if self._config.DB_CACHE:
                from afs.util.DBManager import DBManager
                from afs.model.FileServer import FileServer
                this_dbmanager = DBManager(self._config)
                fileserver = this_dbmanager.get_from_cache(FileServer, \
                    uuid = uuid)
                self._logger.debug("looking up hostname in db_cache " + \
                   "for uuid=%s" % uuid)
                if fileserver != None :
                    self.memory_cache["fsuuids"][fileserver.servernames[0]] = \
                        fileserver.uuid
                    return fileserver.servernames[0]

        # not found in local cache and not in DB Cache, or cacheing disabled.
        # get it from live-system
        from afs.lla.VLDBLLA import VLDBLLA
        _vl_lla = VLDBLLA()
        name_or_ip = None
        for fileserver in _vl_lla.getFsServList(\
            _cfg = self._config, _user="" ) :
            if fileserver['uuid'] == uuid :
                name_or_ip = fileserver['name_or_ip']
        if name_or_ip == None :
            raise LookupUtilError("No Server with uuid=%s " + \
                "registered in live-system" % uuid)
        # store it in memory_cache 
        self._logger.debug("get_hostname_by_fsuuid: got " + \
            " name_or_ip = %s from live-system" % name_or_ip)
        name_or_ip = self.get_dns_info(name_or_ip)["names"][0]
        self.memory_cache["fsuuids"][name_or_ip] = uuid                  
        self._logger.debug("returning: %s" % name_or_ip)
        return name_or_ip