def __syncFileCatalogs(self): ''' Sync FileCatalogs: compares CS with DB and does the necessary modifications. ''' catalogsCS = CSHelpers.getFileCatalogs() if not catalogsCS['OK']: return catalogsCS catalogsCS = catalogsCS['Value'] gLogger.verbose('%s File catalogs found in CS' % len(catalogsCS)) catalogsDB = self.rStatus.selectStatusElement( 'Resource', 'Status', elementType='Catalog', meta={'columns': ['name']}) if not catalogsDB['OK']: return catalogsDB catalogsDB = [catalogDB[0] for catalogDB in catalogsDB['Value']] # StorageElements that are in DB but not in CS toBeDeleted = list(set(catalogsDB).difference(set(catalogsCS))) gLogger.verbose('%s File catalogs to be deleted' % len(toBeDeleted)) # Delete storage elements for catalogName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement( 'Resource', catalogName) gLogger.verbose('... %s' % catalogName) if not deleteQuery['OK']: return deleteQuery #statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] statusTypes = self.rssConfig.getConfigStatusType('Catalog') sesTuple = self.rStatus.selectStatusElement( 'Resource', 'Status', elementType='Catalog', 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. catalogsStatusTuples = [(se, statusType) for se in catalogsCS for statusType in statusTypes] toBeAdded = list(set(catalogsStatusTuples).difference(set(sesTuple))) gLogger.verbose('%s File catalogs entries to be added' % len(toBeAdded)) for catalogTuple in toBeAdded: _name = catalogTuple[0] _statusType = catalogTuple[1] _status = 'Unknown' _reason = 'Synchronized' _elementType = 'Catalog' 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 __syncFileCatalogs(self): """ Sync FileCatalogs: compares CS with DB and does the necessary modifications. """ catalogsCS = CSHelpers.getFileCatalogs() if not catalogsCS["OK"]: return catalogsCS catalogsCS = catalogsCS["Value"] gLogger.verbose("%s File catalogs found in CS" % len(catalogsCS)) catalogsDB = self.rStatus.selectStatusElement( "Resource", "Status", elementType="Catalog", meta={"columns": ["Name"]}) if not catalogsDB["OK"]: return catalogsDB catalogsDB = [catalogDB[0] for catalogDB in catalogsDB["Value"]] # StorageElements that are in DB but not in CS toBeDeleted = list(set(catalogsDB).difference(set(catalogsCS))) gLogger.verbose("%s File catalogs to be deleted" % len(toBeDeleted)) # Delete storage elements for catalogName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement( "Resource", catalogName) gLogger.verbose("... %s" % catalogName) if not deleteQuery["OK"]: return deleteQuery # statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] statusTypes = self.rssConfig.getConfigStatusType("Catalog") result = self.rStatus.selectStatusElement( "Resource", "Status", elementType="Catalog", 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. catalogsStatusTuples = [(se, statusType) for se in catalogsCS for statusType in statusTypes] toBeAdded = list(set(catalogsStatusTuples).difference(set(sesTuple))) gLogger.verbose("%s File catalogs entries to be added" % len(toBeAdded)) for catalogTuple in toBeAdded: _name = catalogTuple[0] _statusType = catalogTuple[1] _status = self.defaultStatus _reason = "Synchronized" _elementType = "Catalog" 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 __syncFileCatalogs(self): ''' Sync FileCatalogs: compares CS with DB and does the necessary modifications. ''' catalogsCS = CSHelpers.getFileCatalogs() if not catalogsCS['OK']: return catalogsCS catalogsCS = catalogsCS['Value'] gLogger.verbose('%s File catalogs found in CS' % len(catalogsCS)) catalogsDB = self.rStatus.selectStatusElement('Resource', 'Status', elementType='Catalog', meta={'columns': ['Name']}) if not catalogsDB['OK']: return catalogsDB catalogsDB = [catalogDB[0] for catalogDB in catalogsDB['Value']] # StorageElements that are in DB but not in CS toBeDeleted = list(set(catalogsDB).difference(set(catalogsCS))) gLogger.verbose('%s File catalogs to be deleted' % len(toBeDeleted)) # Delete storage elements for catalogName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement( 'Resource', catalogName) gLogger.verbose('... %s' % catalogName) if not deleteQuery['OK']: return deleteQuery #statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] statusTypes = self.rssConfig.getConfigStatusType('Catalog') result = self.rStatus.selectStatusElement('Resource', 'Status', elementType='Catalog', 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. catalogsStatusTuples = [(se, statusType) for se in catalogsCS for statusType in statusTypes] toBeAdded = list(set(catalogsStatusTuples).difference(set(sesTuple))) gLogger.verbose('%s File catalogs entries to be added' % len(toBeAdded)) for catalogTuple in toBeAdded: _name = catalogTuple[0] _statusType = catalogTuple[1] _status = self.defaultStatus _reason = 'Synchronized' _elementType = 'Catalog' 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 __syncFileCatalogs(self): """ Sync FileCatalogs: compares CS with DB and does the necessary modifications. """ catalogsCS = CSHelpers.getFileCatalogs() if not catalogsCS["OK"]: return catalogsCS catalogsCS = catalogsCS["Value"] gLogger.verbose("%s File catalogs found in CS" % len(catalogsCS)) catalogsDB = self.rStatus.selectStatusElement( "Resource", "Status", elementType="Catalog", meta={"columns": ["name"]} ) if not catalogsDB["OK"]: return catalogsDB catalogsDB = [catalogDB[0] for catalogDB in catalogsDB["Value"]] # StorageElements that are in DB but not in CS toBeDeleted = list(set(catalogsDB).difference(set(catalogsCS))) gLogger.verbose("%s File catalogs to be deleted" % len(toBeDeleted)) # Delete storage elements for catalogName in toBeDeleted: deleteQuery = self.rStatus._extermineStatusElement("Resource", catalogName) gLogger.verbose("... %s" % catalogName) if not deleteQuery["OK"]: return deleteQuery # statusTypes = RssConfiguration.getValidStatusTypes()[ 'Resource' ] statusTypes = self.rssConfig.getConfigStatusType("Catalog") sesTuple = self.rStatus.selectStatusElement( "Resource", "Status", elementType="Catalog", 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. catalogsStatusTuples = [(se, statusType) for se in catalogsCS for statusType in statusTypes] toBeAdded = list(set(catalogsStatusTuples).difference(set(sesTuple))) gLogger.verbose("%s File catalogs entries to be added" % len(toBeAdded)) for catalogTuple in toBeAdded: _name = catalogTuple[0] _statusType = catalogTuple[1] _status = "Unknown" _reason = "Synchronized" _elementType = "Catalog" 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()