From 25fb4c7d5dde3e812d9502d95de09d85c3925bd2 Mon Sep 17 00:00:00 2001 From: Roman Prykhodchenko Date: Wed, 20 May 2020 17:39:06 +0200 Subject: [PATCH] Log request data and response content in DNSaaS client --- src/ralph/dns/dnsaas.py | 45 ++++++++++++++++++++++++++++++-------- src/ralph/settings/base.py | 1 + 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/ralph/dns/dnsaas.py b/src/ralph/dns/dnsaas.py index c6f2b247cf..eeeb7b98fc 100644 --- a/src/ralph/dns/dnsaas.py +++ b/src/ralph/dns/dnsaas.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +import json import logging from urllib.parse import urlencode, urljoin @@ -199,6 +200,37 @@ def create_dns_record(self, record, service=None): data['service_uid'] = service.uid return self._post(url, data)[1] + def _send_request_to_dnsaas(self, request_method, url, json_data=None): + try: + response = self.session.request( + method=request_method, + url=url, + json=json_data, + timeout=float(settings.DNSAAS_TIMEOUT) + ) + logger.info( + "Sent {} request to DNSaaS to {}".format( + request_method, url + ), + extra={ + 'request_data': json.dumps(json_data), + 'response_status': response.status_code, + 'response_content': response.text + } + ) + + return response + except Exception: + logger.exception( + "Sending {} request to DNSaaS to {} failed.".format( + request_method, url + ), + extra={ + 'request_data': json.dumps(json_data) + } + ) + raise + def _post(self, url, data): """ Send post data to URL. @@ -210,26 +242,21 @@ def _post(self, url, data): Returns: tuple (response status code, dict data) """ - logger.info("Sending POST request to DNSaaS to {}".format(url)) - response = self.session.post(url, json=data) + response = self._send_request_to_dnsaas('POST', url, json_data=data) return response.status_code, self._response2result(response) def _delete(self, url): - logger.info("Sending DELETE request to DNSaaS to {}".format(url)) - response = self.session.delete(url) + response = self._send_request_to_dnsaas('DELETE', url) return response.status_code, self._response2result(response) def _get(self, url): - logger.info("Sending GET request to DNSaaS to {}".format(url)) - response = self.session.get(url) + response = self._send_request_to_dnsaas('GET', url) return response.status_code, self._response2result(response) def _patch(self, url, data): - logger.info("Sending PATCH request to DNSaaS to {}".format(url)) - - response = self.session.patch(url, json=data) + response = self._send_request_to_dnsaas('PATCH', url, json_data=data) return response.status_code, self._response2result(response) def delete_dns_record(self, record_id): diff --git a/src/ralph/settings/base.py b/src/ralph/settings/base.py index 4477366aaf..dc5e753f3d 100644 --- a/src/ralph/settings/base.py +++ b/src/ralph/settings/base.py @@ -512,6 +512,7 @@ def get_sentinels(sentinels_string): ENABLE_DNSAAS_INTEGRATION = bool_from_env('ENABLE_DNSAAS_INTEGRATION') DNSAAS_URL = os.environ.get('DNSAAS_URL', '') DNSAAS_TOKEN = os.environ.get('DNSAAS_TOKEN', '') +DNSAAS_TIMEOUT = os.environ.get('DNSAAS_TIMEOUT', 10) DNSAAS_AUTO_PTR_ALWAYS = os.environ.get('DNSAAS_AUTO_PTR_ALWAYS', 2) DNSAAS_AUTO_PTR_NEVER = os.environ.get('DNSAAS_AUTO_PTR_NEVER', 1) # user in dnsaas which can do changes, like update TXT records etc.