コード例 #1
0
 def __init__(self):
     self.session_key = self._get_session_key()
     self.logger = log.Logs().get_logger(self._get_log_file())
     self.snow_account = self._get_service_now_account()
     loglevel = self.snow_account.get("loglevel", "INFO")
     log.Logs().set_level(loglevel)
     self.subcommand = "create"
     self.sys_id = None
コード例 #2
0
def run():
    """
    Main loop. Run this TA for ever
    """

    try:
        snow_conf = snow_config.SnowConfig()
    except Exception as ex:
        _LOGGER.error("Failed to setup config for Snow TA: %s", ex.message)
        _LOGGER.error(traceback.format_exc())
        raise

    if snow_conf.stanza_configs:
        loglevel = snow_conf.default_configs.get("loglevel", "INFO")
        if loglevel != "INFO":
            log.Logs().set_level(loglevel)
    else:
        _LOGGER.info("No data collection for Snow is found in the "
                     "inputs.conf. Do nothing and Quit the TA")
        return

    if not all(snow_conf.default_configs[k]
               for k in ("url", "username", "password")):
        _LOGGER.info("No ServiceNow account is configured, exiting...")
        return

    snow_config.handle_modinput_checkpoint(snow_conf.meta_configs,
                                           snow_conf.stanza_configs)

    data_loader = dl.GlobalDataLoader.get_data_loader(snow_conf.meta_configs,
                                                      snow_conf.stanza_configs,
                                                      jf.JobFactory())
    _setup_signal_handler(data_loader)
    conf_monitor = snow_config.SnowConfMonitor(data_loader)
    data_loader.add_timer(conf_monitor.check_changes, time.time(), 60)
    checker = opm.OrphanProcessChecker(data_loader.tear_down)
    data_loader.add_timer(checker.check_orphan, time.time(), 2)
    data_loader.run()
コード例 #3
0
"""
Create scheduling jobs
"""

import socket

import framework.log as log
import snow_consts as sc
from snow_data_loader import Snow

_LOGGER = log.Logs().get_logger("main")

__all__ = ["JobFactory"]


class _CollectionJob(object):

    def __init__(self, config, endpoint, data_collect_func):
        self._config = config
        self._func = data_collect_func
        self._endpoint = endpoint
        if config.get("exclude", None):
            excludes = config["exclude"].lower().split(",")
            excludes = [ex.strip() for ex in excludes]
        else:
            excludes = ()
        self.excludes = excludes
        if not config.get("host", None):
            config["host"] = socket.gethostname()

    def __call__(self):
コード例 #4
0
ファイル: rest.py プロジェクト: richacole19/Hello-World
import urllib
import json
from traceback import format_exc
import sys
import os.path as op

sys.path.insert(0, op.dirname(op.dirname(op.abspath(__file__))))

import framework.utils as utils
from httplib2 import (socks, ProxyInfo, Http)

import framework.log as log
import framework.ta_consts as c

_LOGGER = log.Logs().get_logger(c.ta_util)


def splunkd_request(splunkd_uri,
                    session_key,
                    method="GET",
                    headers=None,
                    data=None,
                    timeout=30,
                    retry=1):
    """
    @return: httplib2.Response and content
    """

    headers = headers if headers is not None else {}
    headers["Authorization"] = "Splunk {0}".format(session_key)
    content_type = headers.get("Content-Type")
コード例 #5
0
import json
import traceback
import re

import splunk.clilib.cli_common as scc
import splunk.admin as admin

from framework import utils
from framework import credentials as cred
from framework import configure as conf
import framework.log as log
import snow_config as sc

utils.remove_http_proxy_env_vars()

_LOGGER = log.Logs().get_logger("setup")


class SetupRestHandler(admin.MConfigHandler):
    snow_args = ("url", "username", "password", "collection_interval",
                 "since_when", "loglevel", "proxy_url", "proxy_port",
                 "proxy_username", "proxy_password", "proxy_enabled",
                 "proxy_rdns", "proxy_type")
    encrypted = "<encrypted>"
    userpass_sep = "``"
    dummy = "dummy"

    def setup(self):
        """
        Set up supported arguments
        """
コード例 #6
0
import os
import threading
import time
import traceback

import framework.log as log

_LOGGER = log.Logs().get_logger("util")


class OrphanProcessChecker(object):
    def __init__(self, callback=None):
        """
        Only work for Linux platform. On Windows platform, is_orphan is always
        False
        """

        if os.name == "nt":
            self._ppid = 0
        else:
            self._ppid = os.getppid()
        self._callback = callback

    def is_orphan(self):
        if os.name == "nt":
            return False
        res = self._ppid != os.getppid()
        if res:
            _LOGGER.warn("Process=%s has become orphan", os.getpid())
        return res