Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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()