예제 #1
0
 def test_get_appname_from_path(self):
     apath = "/opt/splunk/etc/apps/dummy_modinput/bin/dummy_modinput.py"
     appname = utils.get_appname_from_path(apath)
     self.assertEquals(appname, "dummy_modinput")
     apath = "/opt/splunk/etc/xxx/dummy_modinput/bin/dummy_modinput.py"
     appname = utils.get_appname_from_path(apath)
     self.assertIsNone(appname)
def handle_ckpts(client_id, meta_configs):
    import json
    import glob
    import state_store as ss

    cur_dir = op.dirname(op.abspath(__file__))
    modinput = op.join(cur_dir, ".modinput")
    if not op.exists(modinput):
        with open(modinput, "w") as f:
            f.write(json.dumps({"id": client_id}))
        return

    with open(modinput) as f:
        prev_client_id = json.load(f)["id"]

    if prev_client_id != client_id:
        with open(modinput, "w") as f:
            f.write(json.dumps({"id": client_id}))

        _LOGGER.warn("Box account has been changed. Remove previous ckpts.")
        ckpt_files = glob.glob(op.join(meta_configs["checkpoint_dir"], "*"))
        store = ss.StateStore(meta_configs,
                              utils.get_appname_from_path(cur_dir))
        for ckpt in ckpt_files:
            store.delete_state(ckpt)
예제 #3
0
    def __init__(self, meta_configs, stanza_configs):
        """
        @meta_configs: a dict like object, implement dict.get/[] like
        interfaces to get the value for a key. meta_configs shall at least
        contain
        {"server_uri": uri, "checkpoint_dir": dir, "session_key": key}
        key/value pairs
        @stanza_configs: a list like object containing a list of dict
        like object. Each element shall implement dict.get/[] like interfaces
        to get the value for a key. Each element in the list shall at least
        contain
        """

        import timer_queue as tq
        import ta_configure_manager as conf_mgr
        import servers
        import ta_conf_client as tcc

        self.meta_configs = meta_configs
        appname = utils.get_appname_from_path(op.abspath(__file__))
        meta_configs["appname"] = appname
        self.wakeup_queue = Queue.Queue()
        self.conf_manager = conf_mgr.TAConfigureManager(meta_configs)
        self.timer_queue = tq.TimerQueue()
        self.pub_server = servers.PubServer(stanza_configs)
        self.rep_server = servers.RepServer(stanza_configs,
                                            self._handle_request)
        self.conf_client = tcc.TAConfClient(stanza_configs["repserver"],
                                            meta_configs["server_uri"],
                                            meta_configs["session_key"])
        self._state_logger = utils.setup_logging("ta_state")
        self._started = False
def handle_ckpts(client_id, meta_configs):
    import json
    import glob
    import state_store as ss

    cur_dir = op.dirname(op.abspath(__file__))
    modinput = op.join(cur_dir, ".modinput")
    if not op.exists(modinput):
        with open(modinput, "w") as f:
            f.write(json.dumps({"id": client_id}))
        return

    with open(modinput) as f:
        prev_client_id = json.load(f)["id"]

    if prev_client_id != client_id:
        with open(modinput, "w") as f:
            f.write(json.dumps({"id": client_id}))

        _LOGGER.warn("Box account has been changed. Remove previous ckpts.")
        ckpt_files = glob.glob(op.join(meta_configs["checkpoint_dir"], "*"))
        store = ss.StateStore(meta_configs,
                              utils.get_appname_from_path(cur_dir))
        for ckpt in ckpt_files:
            store.delete_state(ckpt)
예제 #5
0
파일: log.py 프로젝트: chenziliang/src
    def __init__(self, namespace=None, default_level=logging.INFO):
        self._loggers = {}
        self._default_level = default_level
        if namespace is None:
            namespace = utils.get_appname_from_path(op.abspath(__file__))

        if namespace:
            namespace = namespace.lower()
        self._namespace = namespace
 def _create_job(self, job):
     appname = utils.get_appname_from_path(op.abspath(__file__))
     job["appname"] = appname
     job["event_writer"] = self._event_writer
     job["state_store"] = ss.StateStore(
         job, appname, use_kv_store=job.get("use_kv_store"))
     hipchat = self._rest_to_cls["users"](job)
     #job["rest_endpoint"]
     print "Created hipchat job"
     return HipChatCollectionJob(job["rest_endpoint"], job, hipchat.collect_data)
 def _update_stanza_configs(self, defaults):
     self.decrypt_existing_credentials(defaults, self.host_user_passwds)
     appname = utils.get_appname_from_path(op.abspath(__file__))
     for sc in self.stanza_configs:
         for k in defaults:
             if k not in sc or not sc[k]:
                 sc[k] = defaults[k]
         sc["duration"] = int(sc["duration"])
         sc.update(self.meta_configs)
         sc["appname"] = appname
 def _update_stanza_configs(self, defaults):
     self.decrypt_existing_credentials(defaults, self.host_user_passwds)
     appname = utils.get_appname_from_path(op.abspath(__file__))
     for sc in self.stanza_configs:
         for k in defaults:
             if k not in sc or not sc[k]:
                 sc[k] = defaults[k]
         sc["duration"] = int(sc["duration"])
         sc.update(self.meta_configs)
         sc["appname"] = appname
 def _create_job(self, job):
     appname = utils.get_appname_from_path(op.abspath(__file__))
     job["appname"] = appname
     job["event_writer"] = self._event_writer
     job["state_store"] = ss.StateStore(
         job, appname, use_kv_store=job.get("use_kv_store"))
     hipchat = self._rest_to_cls["users"](job)
     #job["rest_endpoint"]
     print "Created hipchat job"
     return HipChatCollectionJob(job["rest_endpoint"], job,
                                 hipchat.collect_data)
    def _get_default_configs(self):
        """
        Get default configuration of this TA
        If default/box.conf doesn't contain the
        default config assign the default configuration
        """

        #print "GETTING DEFAULTS"

        defaults = {}
        appname = utils.get_appname_from_path(op.abspath(__file__))
        conf_mgr = conf.ConfManager(self.meta_configs["server_uri"],
                                    self.meta_configs["session_key"])
        hipchat_conf = conf_mgr.get_conf("nobody", appname, "hipchat")
        #print "appname:",appname,"conf_mgr:",conf_mgr,"hipchat_conf:",hipchat_conf
        # if not box_conf:
        # _LOGGER.error("Failed to get box.conf")
        # raise Exception("Failed to get box.conf")

        for stanza in hipchat_conf:
            #print "stanza: " + stanza
            if stanza["stanza"] in ("hipchat_account", "hipchat_default"):
                defaults.update(stanza)

        booleans = [("use_thread_pool", 1)]
        ints = [
            ("priority", 10),
            ("collection_interval", 30),
            ("priority", 10),
            ("record_count", 500),
        ]
        strs = [("loglevel", "INFO")]

        to_int = lambda v: int(v) if v else None
        all_defaults = ((booleans, utils.is_true), (ints, to_int), (strs, str))

        for default_kvs, convert_func in all_defaults:
            for k, v in default_kvs:
                if k not in defaults:
                    defaults[k] = v
                else:
                    defaults[k] = convert_func(defaults[k])

        defaults["created_after"] = self._get_datetime(
            defaults.get("created_after"))

        self.meta_configs["loglevel"] = defaults["loglevel"]
        defaults["duration"] = defaults["collection_interval"]
        return defaults
    def _get_default_configs(self):
        """
        Get default configuration of this TA
        If default/box.conf doesn't contain the
        default config assign the default configuration
        """

        #print "GETTING DEFAULTS"

        defaults = {}
        appname = utils.get_appname_from_path(op.abspath(__file__))
        conf_mgr = conf.ConfManager(self.meta_configs["server_uri"],
                                    self.meta_configs["session_key"])
        hipchat_conf = conf_mgr.get_conf("nobody", appname, "hipchat")
        #print "appname:",appname,"conf_mgr:",conf_mgr,"hipchat_conf:",hipchat_conf
        # if not box_conf:
            # _LOGGER.error("Failed to get box.conf")
            # raise Exception("Failed to get box.conf")

        for stanza in hipchat_conf:
            #print "stanza: " + stanza
            if stanza["stanza"] in ("hipchat_account", "hipchat_default"):
                defaults.update(stanza)

        booleans =[("use_thread_pool", 1)]
        ints = [("priority", 10),("collection_interval", 30), ("priority", 10), ("record_count", 500), ]
        strs = [("loglevel", "INFO")]

        to_int = lambda v: int(v) if v else None
        all_defaults = ((booleans, utils.is_true), (ints, to_int), (strs, str))

        for default_kvs, convert_func in all_defaults:
            for k, v in default_kvs:
                if k not in defaults:
                    defaults[k] = v
                else:
                    defaults[k] = convert_func(defaults[k])

        defaults["created_after"] = self._get_datetime(
            defaults.get("created_after"))

        self.meta_configs["loglevel"] = defaults["loglevel"]
        defaults["duration"] = defaults["collection_interval"]
        return defaults