コード例 #1
0
ファイル: process.py プロジェクト: isyippee/warner
# coding: utf8
from warner.cfg import Config
import commands
from warner.utils import compare, operation
from warner.log import getLogger

LOG = getLogger(__name__)
CONF = Config()


class Process:
    def __init__(self, args):
        self.args = args
        self.process_name = self.args["custom"]["process_name"]
        self.alarm_args = self.args["alarm"]

    def _alarm(self, value):
        operator = self.alarm_args["operator"]
        results = []
        for item in self.alarm_args["items"]:
            comparison_operator = item["comparison_operator"]
            threshold = item["threshold"]
            results.append(compare(comparison_operator, threshold, value))
        content = {
            "text": "hello:\nprocess %s is killed!" % self.process_name,
            "subject": "alarm! by warner."
        }
        return operation(operator, results), content

    def run(self):
        value = None
コード例 #2
0
ファイル: utils.py プロジェクト: isyippee/warner
# coding: utf8
import os
from warner import log
import importlib
import operator

LOG = log.getLogger(__name__)
COMPARATORS = {
    'gt': operator.gt,
    'lt': operator.lt,
    'ge': operator.ge,
    'le': operator.le,
    'eq': operator.eq,
    'ne': operator.ne,
}

XOR_COMPARATORS = {'and': all, 'or': any}


def setup_extensions(fpath):
    (pprefix, psuffix) = os.path.split(fpath)
    (_, psuf) = os.path.split(pprefix)
    extensions = {}
    pfs = []
    for (pd, pc, pfs) in os.walk(fpath):
        if pc:
            LOG.warning("There is a directory(%s)" % str(pc))
        if not pfs:
            LOG.warning("This is an empty directory.(%s)" % str(pd))
            return
    for pf in pfs: