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)
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)
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