def __syncFTS(self): ''' Sync FTS: compares CS with DB and does the necessary modifications. ''' ftsCS = CSHelpers.getFTS() if not ftsCS['OK']: return ftsCS ftsCS = ftsCS['Value'] gLogger.verbose('%s FTS endpoints found in CS' % len(ftsCS)) ftsDB = self.rStatus.selectStatusElement('Resource', 'Status', elementType='FTS', meta={'columns': ['name']}) if not ftsDB['OK']: return ftsDB ftsDB = [fts[0] for fts in ftsDB['Value']] # StorageElements that are in DB but not in CS toBeDeleted = list(set(ftsDB).difference(set(ftsCS))) gLogger.verbose('%s FTS endpoints to be deleted' % len(toBeDeleted)) # Delete storage elements for ftsName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement( 'Resource', ftsName) gLogger.verbose('... %s' % ftsName) if not deleteQuery['OK']: return deleteQuery statusTypes = self.rssConfig.getConfigStatusType('FTS') #statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] sesTuple = self.rStatus.selectStatusElement( 'Resource', 'Status', elementType='FTS', meta={'columns': ['name', 'statusType']}) if not sesTuple['OK']: return sesTuple sesTuple = sesTuple['Value'] # For each ( se, statusType ) tuple not present in the DB, add it. ftsStatusTuples = [(se, statusType) for se in ftsCS for statusType in statusTypes] toBeAdded = list(set(ftsStatusTuples).difference(set(sesTuple))) gLogger.verbose('%s FTS endpoints entries to be added' % len(toBeAdded)) for ftsTuple in toBeAdded: _name = ftsTuple[0] _statusType = ftsTuple[1] _status = 'Unknown' _reason = 'Synchronized' _elementType = 'FTS' query = self.rStatus.addIfNotThereStatusElement( 'Resource', 'Status', name=_name, statusType=_statusType, status=_status, elementType=_elementType, reason=_reason) if not query['OK']: return query return S_OK()
def __syncFTS(self): """ Sync FTS: compares CS with DB and does the necessary modifications. """ ftsCS = CSHelpers.getFTS() if not ftsCS["OK"]: return ftsCS ftsCS = ftsCS["Value"] gLogger.verbose("%s FTS endpoints found in CS" % len(ftsCS)) ftsDB = self.rStatus.selectStatusElement("Resource", "Status", elementType="FTS", meta={"columns": ["Name"]}) if not ftsDB["OK"]: return ftsDB ftsDB = [fts[0] for fts in ftsDB["Value"]] # StorageElements that are in DB but not in CS toBeDeleted = list(set(ftsDB).difference(set(ftsCS))) gLogger.verbose("%s FTS endpoints to be deleted" % len(toBeDeleted)) # Delete storage elements for ftsName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement( "Resource", ftsName) gLogger.verbose("... %s" % ftsName) if not deleteQuery["OK"]: return deleteQuery statusTypes = self.rssConfig.getConfigStatusType("FTS") # statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] result = self.rStatus.selectStatusElement( "Resource", "Status", elementType="FTS", meta={"columns": ["Name", "StatusType"]}) if not result["OK"]: return result sesTuple = [(x[0], x[1]) for x in result["Value"]] # For each ( se, statusType ) tuple not present in the DB, add it. ftsStatusTuples = [(se, statusType) for se in ftsCS for statusType in statusTypes] toBeAdded = list(set(ftsStatusTuples).difference(set(sesTuple))) gLogger.verbose("%s FTS endpoints entries to be added" % len(toBeAdded)) for ftsTuple in toBeAdded: _name = ftsTuple[0] _statusType = ftsTuple[1] _status = self.defaultStatus _reason = "Synchronized" _elementType = "FTS" query = self.rStatus.addIfNotThereStatusElement( "Resource", "Status", name=_name, statusType=_statusType, status=_status, elementType=_elementType, tokenOwner=self.tokenOwner, reason=_reason, ) if not query["OK"]: return query return S_OK()
def __syncFTS(self): ''' Sync FTS: compares CS with DB and does the necessary modifications. ''' ftsCS = CSHelpers.getFTS() if not ftsCS['OK']: return ftsCS ftsCS = ftsCS['Value'] gLogger.verbose('%s FTS endpoints found in CS' % len(ftsCS)) ftsDB = self.rStatus.selectStatusElement('Resource', 'Status', elementType='FTS', meta={'columns': ['Name']}) if not ftsDB['OK']: return ftsDB ftsDB = [fts[0] for fts in ftsDB['Value']] # StorageElements that are in DB but not in CS toBeDeleted = list(set(ftsDB).difference(set(ftsCS))) gLogger.verbose('%s FTS endpoints to be deleted' % len(toBeDeleted)) # Delete storage elements for ftsName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement( 'Resource', ftsName) gLogger.verbose('... %s' % ftsName) if not deleteQuery['OK']: return deleteQuery statusTypes = self.rssConfig.getConfigStatusType('FTS') #statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] result = self.rStatus.selectStatusElement('Resource', 'Status', elementType='FTS', meta={'columns': ['Name', 'StatusType']}) if not result['OK']: return result sesTuple = [(x[0], x[1]) for x in result['Value']] # For each ( se, statusType ) tuple not present in the DB, add it. ftsStatusTuples = [(se, statusType) for se in ftsCS for statusType in statusTypes] toBeAdded = list(set(ftsStatusTuples).difference(set(sesTuple))) gLogger.verbose('%s FTS endpoints entries to be added' % len(toBeAdded)) for ftsTuple in toBeAdded: _name = ftsTuple[0] _statusType = ftsTuple[1] _status = self.defaultStatus _reason = 'Synchronized' _elementType = 'FTS' query = self.rStatus.addIfNotThereStatusElement('Resource', 'Status', name=_name, statusType=_statusType, status=_status, elementType=_elementType, tokenOwner=self.tokenOwner, reason=_reason) if not query['OK']: return query return S_OK()
def __syncFTS(self): """ Sync FTS: compares CS with DB and does the necessary modifications. """ ftsCS = CSHelpers.getFTS() if not ftsCS["OK"]: return ftsCS ftsCS = ftsCS["Value"] gLogger.verbose("%s FTS endpoints found in CS" % len(ftsCS)) ftsDB = self.rStatus.selectStatusElement("Resource", "Status", elementType="FTS", meta={"columns": ["name"]}) if not ftsDB["OK"]: return ftsDB ftsDB = [fts[0] for fts in ftsDB["Value"]] # StorageElements that are in DB but not in CS toBeDeleted = list(set(ftsDB).difference(set(ftsCS))) gLogger.verbose("%s FTS endpoints to be deleted" % len(toBeDeleted)) # Delete storage elements for ftsName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement("Resource", ftsName) gLogger.verbose("... %s" % ftsName) if not deleteQuery["OK"]: return deleteQuery statusTypes = self.rssConfig.getConfigStatusType("FTS") # statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] sesTuple = self.rStatus.selectStatusElement( "Resource", "Status", elementType="FTS", meta={"columns": ["name", "statusType"]} ) if not sesTuple["OK"]: return sesTuple sesTuple = sesTuple["Value"] # For each ( se, statusType ) tuple not present in the DB, add it. ftsStatusTuples = [(se, statusType) for se in ftsCS for statusType in statusTypes] toBeAdded = list(set(ftsStatusTuples).difference(set(sesTuple))) gLogger.verbose("%s FTS endpoints entries to be added" % len(toBeAdded)) for ftsTuple in toBeAdded: _name = ftsTuple[0] _statusType = ftsTuple[1] _status = "Unknown" _reason = "Synchronized" _elementType = "FTS" query = self.rStatus.addIfNotThereStatusElement( "Resource", "Status", name=_name, statusType=_statusType, status=_status, elementType=_elementType, reason=_reason, ) if not query["OK"]: return query return S_OK()