Exemplo n.º 1
0
class EmailAction(BaseAction):
    def __init__(self, name, decisionParams, enforcementResult, singlePolicyResults, clients=None):

        super(EmailAction, self).__init__(name, decisionParams, enforcementResult, singlePolicyResults, clients)

        if clients is not None and "ResourceStatusClient" in clients:
            self.rsClient = clients["ResourceStatusClient"]
        else:
            self.rsClient = ResourceStatusClient()

    def run(self):
        """Checks it has the parameters it needs and writes the date to a cache file."""
        # Minor security checks

        element = self.decisionParams["element"]
        if element is None:
            return S_ERROR("element should not be None")

        name = self.decisionParams["name"]
        if name is None:
            return S_ERROR("name should not be None")

        statusType = self.decisionParams["statusType"]
        if statusType is None:
            return S_ERROR("statusType should not be None")

        previousStatus = self.decisionParams["status"]
        if previousStatus is None:
            return S_ERROR("status should not be None")

        status = self.enforcementResult["Status"]
        if status is None:
            return S_ERROR("status should not be None")

        reason = self.enforcementResult["Reason"]
        if reason is None:
            return S_ERROR("reason should not be None")

        if self.decisionParams["element"] == "Site":
            siteName = self.decisionParams["name"]
        else:
            elementType = self.decisionParams["elementType"]

            if elementType == "StorageElement":
                siteName = getSitesForSE(name)
            elif elementType == "ComputingElement":
                res = getCESiteMapping(name)
                if not res["OK"]:
                    return res
                siteName = S_OK(res["Value"][name])
            else:
                siteName = {"OK": True, "Value": "Unassigned"}

            if not siteName["OK"]:
                self.log.error("Resource %s does not exist at any site: %s" % (name, siteName["Message"]))
                siteName = "Unassigned Resources"
            elif not siteName["Value"]:
                siteName = "Unassigned Resources"
            else:
                siteName = (
                    siteName["Value"] if isinstance(siteName["Value"], six.string_types) else siteName["Value"][0]
                )

        # create record for insertion
        recordDict = {}
        recordDict["SiteName"] = siteName
        recordDict["ResourceName"] = name
        recordDict["Status"] = status
        recordDict["PreviousStatus"] = previousStatus
        recordDict["StatusType"] = statusType

        return self.rsClient.insert("ResourceStatusCache", recordDict)
Exemplo n.º 2
0
class EmailAction(BaseAction):
    def __init__(self,
                 name,
                 decisionParams,
                 enforcementResult,
                 singlePolicyResults,
                 clients=None):

        super(EmailAction,
              self).__init__(name, decisionParams, enforcementResult,
                             singlePolicyResults, clients)

        if clients is not None and 'ResourceStatusClient' in clients:
            self.rsClient = clients['ResourceStatusClient']
        else:
            self.rsClient = ResourceStatusClient()

    def run(self):
        ''' Checks it has the parameters it needs and writes the date to a cache file.
    '''
        # Minor security checks

        element = self.decisionParams['element']
        if element is None:
            return S_ERROR('element should not be None')

        name = self.decisionParams['name']
        if name is None:
            return S_ERROR('name should not be None')

        statusType = self.decisionParams['statusType']
        if statusType is None:
            return S_ERROR('statusType should not be None')

        previousStatus = self.decisionParams['status']
        if previousStatus is None:
            return S_ERROR('status should not be None')

        status = self.enforcementResult['Status']
        if status is None:
            return S_ERROR('status should not be None')

        reason = self.enforcementResult['Reason']
        if reason is None:
            return S_ERROR('reason should not be None')

        if self.decisionParams['element'] == 'Site':
            siteName = self.decisionParams['name']
        else:
            elementType = self.decisionParams['elementType']

            if elementType == 'StorageElement':
                siteName = getSitesForSE(name)
            elif elementType == 'ComputingElement':
                res = getCESiteMapping(name)
                if not res['OK']:
                    return res
                siteName = S_OK(res['Value'][name])
            else:
                siteName = {'OK': True, 'Value': 'Unassigned'}

            if not siteName['OK']:
                self.log.error('Resource %s does not exist at any site: %s' %
                               (name, siteName['Message']))
                siteName = "Unassigned Resources"
            elif not siteName['Value']:
                siteName = "Unassigned Resources"
            else:
                siteName = siteName['Value'] if isinstance(
                    siteName['Value'],
                    six.string_types) else siteName['Value'][0]

        # create record for insertion
        recordDict = {}
        recordDict['SiteName'] = siteName
        recordDict['ResourceName'] = name
        recordDict['Status'] = status
        recordDict['PreviousStatus'] = previousStatus
        recordDict['StatusType'] = statusType

        return self.rsClient.insert('ResourceStatusCache', recordDict)