예제 #1
0
    def main(self):

        # get XMPP configs
        xmpp_configs = pysc.unserialize_yaml(self.config["xmpp_config"],
                                             critical=True)
        self._jid = xmpp_configs["jid"]
        self._password = xmpp_configs["password"]
        self._recipients = xmpp_configs["recipients"] \
            if "recipients" in xmpp_configs else []
        self._rooms = xmpp_configs["rooms"] if "rooms" in xmpp_configs else []

        logger.debug("config: %s", self.config)
        mode = self.config["mode"]
        if mode == "service":
            message = SERVICE_MESSAGE_FMT.format(**self.config)
            logger.debug("shinken message: %s", message)
        elif mode == "host":
            message = HOST_MESSAGE_FMT.format(**self.config)
        else:
            raise ValueError("Invalid notification mode: %s", mode)

        # begin sending messages
        xmpp = SendMsg(self._jid, self._password, self._recipients,
                       self._rooms, message)
        if self._rooms:
            xmpp.register_plugin('xep_0045')  # MUC plugin
        if xmpp.connect():
            try:
                xmpp.process(block=True)
            except sleekxmpp.exceptions.XMPPError as err:
                logger.error("Could not send message, error: %s", err)
        else:
            logger.error("Could not connect to XMPP server")
예제 #2
0
    def __init__(self, config, facility):
        log.debug("Reading config file: %s", config)
        self.config = pysc.unserialize_yaml(config)

        self.prefix = self.config['backup']['prefix']

        self.facility = facility
예제 #3
0
파일: check.py 프로젝트: zozovp/states
    def __init__(self, dsn_file):
        try:
            loaded = unserialize_yaml(dsn_file, critical=True)
            sentry_dsn = loaded["dsn"]
            self._sentry_dsn = sentry_dsn
            logger.debug("sentry_dsn: %s", sentry_dsn)
        except IOError as err:
            logger.error(
                "Sentry monitoring DSN file %s does not exist"
                "or is unreadable. Error: %s", dsn_file, err)
            raise nagiosplugin.CheckError(
                "Invalid sentry monitoring DSN file: {}".format(dsn_file))

        dsn_parsed = raven.load(sentry_dsn)
        self._public_key = dsn_parsed["SENTRY_PUBLIC_KEY"]
        self._secret_key = dsn_parsed["SENTRY_SECRET_KEY"]
        transport_options = dsn_parsed["SENTRY_TRANSPORT_OPTIONS"]
        self._verify_ssl = False if (
            "verify_ssl" in transport_options
            and transport_options["verify_ssl"] == "0") else True

        # API format: GET /api/0/projects/{project_id}/groups/
        server = dsn_parsed["SENTRY_SERVERS"][0]
        project_id = dsn_parsed["SENTRY_PROJECT"]
        parsed = urlparse.urlparse(server)
        self._url = urlparse.urlunparse((
            parsed.scheme,
            parsed.netloc,
            "/api/0/projects/{}/groups/".format(project_id),
            parsed.params,
            parsed.query,
            parsed.fragment,
        ))
예제 #4
0
    def main(self):

        # get XMPP configs
        xmpp_configs = pysc.unserialize_yaml(
            self.config["xmpp_config"], critical=True)
        self._jid = xmpp_configs["jid"]
        self._password = xmpp_configs["password"]
        self._recipients = xmpp_configs["recipients"] \
            if "recipients" in xmpp_configs else []
        self._rooms = xmpp_configs["rooms"] if "rooms" in xmpp_configs else []

        logger.debug("config: %s", self.config)
        mode = self.config["mode"]
        if mode == "service":
            message = SERVICE_MESSAGE_FMT.format(**self.config)
            logger.debug("shinken message: %s", message)
        elif mode == "host":
            message = HOST_MESSAGE_FMT.format(**self.config)
        else:
            raise ValueError("Invalid notification mode: %s", mode)

        # begin sending messages
        xmpp = SendMsg(
            self._jid, self._password, self._recipients, self._rooms, message)
        if self._rooms:
            xmpp.register_plugin('xep_0045')  # MUC plugin
        if xmpp.connect():
            try:
                xmpp.process(block=True)
            except sleekxmpp.exceptions.XMPPError as err:
                logger.error("Could not send message, error: %s", err)
        else:
            logger.error("Could not connect to XMPP server")
예제 #5
0
파일: check.py 프로젝트: Quarky9/states
    def __init__(self, dsn_file):
        try:
            loaded = unserialize_yaml(dsn_file, critical=True)
            sentry_dsn = loaded["dsn"]
            self._sentry_dsn = sentry_dsn
            logger.debug("sentry_dsn: %s", sentry_dsn)
        except IOError as err:
            logger.error(
                "Sentry monitoring DSN file %s does not exist"
                "or is unreadable. Error: %s",
                dsn_file, err)
            raise nagiosplugin.CheckError(
                "Invalid sentry monitoring DSN file: {}".format(dsn_file))

        dsn_parsed = raven.load(sentry_dsn)
        self._public_key = dsn_parsed["SENTRY_PUBLIC_KEY"]
        self._secret_key = dsn_parsed["SENTRY_SECRET_KEY"]
        transport_options = dsn_parsed["SENTRY_TRANSPORT_OPTIONS"]
        self._verify_ssl = False if ("verify_ssl" in transport_options
                                     and transport_options["verify_ssl"] == "0"
                                     ) else True

        # API format: GET /api/0/projects/{project_id}/groups/
        server = dsn_parsed["SENTRY_SERVERS"][0]
        project_id = dsn_parsed["SENTRY_PROJECT"]
        parsed = urlparse.urlparse(server)
        self._url = urlparse.urlunparse((
            parsed.scheme,
            parsed.netloc,
            "/api/0/projects/{}/groups/".format(project_id),
            parsed.params,
            parsed.query,
            parsed.fragment,
        ))