def refreshLiveData(self, cellname="") : 
     """
     update livedata for the cell :
     partition free and used space, DBVersions, list of Servers
     """
     if cellname == "" : cellname = self._CFG.CELL_NAME
     cell=Cell()
     cell.FileServers=self.getFileServers()
     cell.DBServers=self.getDBServers()
     cell.PTDBSyncSite, cell.PTDBVersion,cell.PTDBState=self.getUbikDBInfo(cell.DBServers[0],7002)
     cell.VLDBSyncSite, cell.VLDBVersion,cell.VLDBState=self.getUbikDBInfo(cell.DBServers[0],7003)
     cell.size,cell.used,cell.free=self.getUsage()
     return True 
    def getCellInfo(self, cellname="", _user="", cached=False) :
        """
        return full Cellobject.
        """
        if cellname == "" : cellname = self._CFG.CELL_NAME
        self.Logger.debug("Using cellname : %s " % cellname)
        if cached :
            cell=self.DBManager.getFromCache(Cell,Name = cellname)
            if cell == None :
               self.Logger.info("getCellInfo: Cannot get cached Cell. Returning none.")
               return cell
            self.Logger.debug("getCellInfo: Cell.udate=%s" % cell.udate)
            # update Sums etc. from DB_CACHE
            cell.Name=cellname
            self.Logger.debug("getCellInfo: Cell.FileServers=%s" % cell.FileServers)
            cell.numRW = cell.numRO = cell.numBK = cell.numOffline = 0
            numVolDict=self.bulk_getNumVolumes()
            for f in cell.FileServers :
                self.Logger.debug("getCellInfo: f=%s" % f)
                uuid = afs.LookupUtil[self._CFG.CELL_NAME].getFSUUID(f)
                if numVolDict.has_key(uuid) :
                    cell.numRW += numVolDict[uuid].get("RW",0)
                    cell.numRO += numVolDict[uuid].get("RO",0)
                    cell.numBK += numVolDict[uuid].get("BK",0)
            cell.numOffline = -1
            cell.numUsers,cell.numGroups = self.getPTInfo(cached=True)
            cell.allocated,cell.allocated_stale = self.getAllocated()
            cell.size,cell.used,cell.free=self.getUsage(cached=True)
            cell.Projects=[] # Projects are in DB_CACHE only
            for p in self.PS.getProjectList() :
                cell.Projects.append(p.name)
            self.Logger.debug("Cell=%s" % cell)
            return cell

        # refresh whole new CellObj
        cell=Cell()
        cell.Name=cellname
        cell.FileServers=self.getFileServers()
        cell.DBServers=self.getDBServers()
        cell.PTDBSyncSite, cell.PTDBVersion,cell.PTDBState=self.getUbikDBInfo(cell.DBServers[0],7002)
        cell.VLDBSyncSite, cell.VLDBVersion,cell.VLDBState=self.getUbikDBInfo(cell.DBServers[0],7003)
        cell.numRW = cell.numRO = cell.numBK = cell.numOffline = 0
        for f in cell.FileServers :
            numRW,numRO,numBK,numOffline = self.FS.getNumVolumes(name_or_ip=f,cached=True)
            cell.numRW += numRW
            cell.numRO += numRO
            cell.numBK += numBK
            cell.numOffline += numOffline
        cell.numUsers,cell.numGroups = self.getPTInfo()
        cell.size,cell.used,cell.free=self.getUsage()
        # some information are only available if DB_CACHE is used.
        cell.allocated,cell.allocated_stale = -1,-1
        cell.Projects=[] # Projects are in DB_CACHE only

        if self._CFG.DB_CACHE :
            for p in self.PS.getProjectList() :
                cell.Projects.append(p.name)
            cell.allocated,cell.allocated_stale = self.getAllocated()
            self.Logger.debug("Cell=%s" % Cell)
            self.DBManager.setIntoCache(Cell,cell,Name=self._CFG.CELL_NAME)
        return cell