Skip to content
This repository was archived by the owner on Mar 18, 2025. It is now read-only.

POST call return error if API token is invalid #137

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions signalfx/ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import logging
import pprint
import requests
from requests.exceptions import ConnectionError
from requests.exceptions import ConnectionError, HTTPError
import six
from six.moves import queue
import threading
Expand Down Expand Up @@ -57,6 +57,7 @@ def __init__(self, token, endpoint=DEFAULT_INGEST_ENDPOINT,
self._compress = compress

self._extra_dimensions = {}
self._response = None

self._queue = queue.Queue()
self._thread_running = False
Expand Down Expand Up @@ -183,7 +184,7 @@ def send_event(self, event_type, category=None, dimensions=None,
self._add_extra_dimensions(data)
return self._send_event(event_data=data, url='{0}/{1}'.format(
self._endpoint, self._INGEST_ENDPOINT_EVENT_SUFFIX),
session=self._session)
session=self._session)

def _send_event(self, event_data=None, url=None, session=None):
raise NotImplementedError('Subclasses should implement this!')
Expand Down Expand Up @@ -272,18 +273,20 @@ def _post(self, data, url, session=None, timeout=None):
uncompressed_bytes, len(data))

try:
response = session.post(url, data=data, timeout=timeout)
self._response = session.post(url, data=data, timeout=timeout)
except ConnectionError:
if session is self._session:
_logger.debug('Connection error attempting reconnect')
self._reconnect()
session = self._session
response = session.post(url, data=data, timeout=timeout)
self._response = session.post(url, data=data, timeout=timeout)
else:
raise
_logger.debug('Sending to SignalFx %s (%d %s)',
'succeeded' if response.ok else 'failed',
response.status_code, response.text)
try:
self._response.raise_for_status()
except HTTPError as e:
logging.error(e)
return False


class ProtoBufSignalFxIngestClient(_BaseSignalFxIngestClient):
Expand Down
11 changes: 9 additions & 2 deletions tests/test_data_reporting.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,16 @@
import sys
import signalfx
import time
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--token", choices=["valid", "invalid"], default="valid", type=str, help="Provider Name")
args = parser.parse_args()

MY_TOKEN = os.environ['SIGNALFX_API_TOKEN']
if args.token == "invalid":
MY_TOKEN = "123-12345678-123456789"
else:
MY_TOKEN = os.environ['SIGNALFX_API_TOKEN']
sfx = signalfx.SignalFx().ingest(MY_TOKEN)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

Expand Down Expand Up @@ -44,7 +51,7 @@

# Sending events
sfx.send_event(
event_type='deployments',
event_type='deployments_test',
category='USER_DEFINED',
dimensions={
'host': 'myhost',
Expand Down