def _send_request(self, uri, results, sourcetype, verify_entries=True, index_result=True, init_time=2): err, sleep_time = 1, init_time valid, result = True, None for _ in xrange(6): resp, content = self._do_rest(uri, self.headers) if resp and resp.status in (200, 201): err = 0 result = _json_loads(content) if verify_entries: if not result or not result["entries"]: valid = False if valid and index_result: results.append(_JObject(result, self.config["url"], sourcetype, self._loader)) break elif not resp: time.sleep(2) self.http = rest.build_http_connection(self.config) elif resp.status == 429: _LOGGER.warn("Throttling %d seconds", sleep_time) time.sleep(sleep_time) sleep_time = sleep_time * 2 elif resp.status == 401: err = 401 self._stopped = True break elif resp.status in (403, 404, 405, 500, 503): err = resp.status break return err, result
def test_build_http_connection(self): config = { "username": "", "password": "", "proxy_url": "", "proxy_port": "", "proxy_username": "", "proxy_password": "", } http = rest.build_http_connection(config) self.assertIsNotNone(http) try: resp, content = http.request("https://www.splunk.com") except Exception: pass else: self.assertIn(resp.status, (200, 201))
def collect_data(self): if self._lock.locked(): _LOGGER.info("Last request for endpoint=%s has not been done yet", self.config["rest_endpoint"]) return True, None if self.http is None: self.http = rest.build_http_connection(self.config) ret = self._check_if_job_is_due() if not ret: return True, None if self._shutdown(): return True, None with self._lock: done, objs = self._do_collect() return done, objs
def _send_request(self, uri, results, sourcetype, verify_entries=True, index_result=True, init_time=2): err, sleep_time = 1, init_time valid, result = True, None for _ in xrange(6): resp, content = self._do_rest(uri, self.headers) if resp and resp.status in (200, 201): err = 0 result = _json_loads(content) if verify_entries: if not result or not result["entries"]: valid = False if valid and index_result: results.append( _JObject(result, self.config["url"], sourcetype, self._loader)) break elif not resp: time.sleep(2) self.http = rest.build_http_connection(self.config) elif resp.status == 429: _LOGGER.warn("Throttling %d seconds", sleep_time) time.sleep(sleep_time) sleep_time = sleep_time * 2 elif resp.status == 401: err = 401 self._stopped = True break elif resp.status in (403, 404, 405, 500, 503): err = resp.status break return err, result