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