Esempio n. 1
0
# -*- coding: utf-8 -*-
import os
import time

from om.config import Config
from om.handler import Handler
from om.plugin import list_native_plugins
from om.utils.logger import get_logger

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

log = get_logger("supervisor")


class ConfigChangeHandler(FileSystemEventHandler):
    def __init__(self, supervisor, config_file='config.json'):
        self.supervisor = supervisor
        self.config_file = config_file

    def on_created(self, event):
        if event.src_path.endswith(self.config_file):
            self.supervisor.reload_config()

    def on_modified(self, event):
        if event.src_path.endswith(self.config_file):
            self.supervisor.reload_config()


class Supervisor(object):
    '''Schedules the remote metrics calls for monitored hosts. Delegates handling of
Esempio n. 2
0
# -*- coding: utf-8 -*-

from om.plugin import list_plugins, list_default_plugins
from om.executor import Executor
from om.utils.logger import get_logger

log = get_logger("machine")


class Machine(object):

    def __init__(self, host, machine_ssh, machine_metrics):
        self.host = host
        self.machine_ssh = machine_ssh
        self.plugins = Machine.load_plugins(machine_metrics)

    def run_plugins(self):
        executor = Executor(self.host, **self.machine_ssh)
        executor.start()
        res = [plugin.execute(executor) for plugin in self.plugins]
        executor.stop()
        return res

    def __repr__(self):
        return "<Machine executor='%s' plugins=%s>" % \
               (self.executor, self.plugins)

    @staticmethod
    def load_plugins(configs):
        if not configs:
            plugins = list_default_plugins()
Esempio n. 3
0
# -*- coding: utf-8 -*-

import time
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

import sqlite3
import redis

from om.utils.logger import get_logger

log = get_logger("metrics")


class Handler(object):
    '''Base class for handlers
    '''
    def __init__(self):
        self._enabled = True

    @classmethod
    def _handles(cls, result):
        return lambda handler: handler.handles(result)

    @classmethod
    def _handle(cls, result):
        return lambda handler: handler.handle(result)

    @property
    def enabled(self):
Esempio n. 4
0
# -*- coding: utf-8 -*-

import os, errno
import json
import getpass

from om.handler import JSONStdoutHandler, StdoutHandler, MailHandler, RedisHandler, Sqlite3Handler
from om.machine import Machine
from om.utils.logger import get_logger

log = get_logger("config")



def mkdir_p(path):
    try:
        os.makedirs(path)
    except os.error, e:
        if e.errno != errno.EEXIST:
            raise

class Config(object):

    def __init__(self, path):
        self._config = {}
        self._load_config(path)
        self._handlers = []
        self._hosts = []

    def __getitem__(self, key):
        return self._config.__getitem__(key)