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
Beispiel #2
0
 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
Beispiel #4
0
    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
Beispiel #5
0
    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