From: Frank Brehm Date: Mon, 22 Jan 2018 14:59:31 +0000 (+0100) Subject: Retrieving version of PowerDNS server by API X-Git-Tag: 0.1.2~11 X-Git-Url: https://git.uhu-banane.net/?a=commitdiff_plain;h=d35ce70cf79298d01e2c63fbf5b2bf2cc4098701;p=pixelpark%2Fadmin-tools.git Retrieving version of PowerDNS server by API --- diff --git a/pp_lib/pdns_app.py b/pp_lib/pdns_app.py index fa54c2b..91cf038 100644 --- a/pp_lib/pdns_app.py +++ b/pp_lib/pdns_app.py @@ -32,7 +32,7 @@ from .cfg_app import PpCfgAppError, PpConfigApplication from .pdns_zone import PdnsApiZone from .pdns_record import PdnsApiRecord, PdnsSoaData, PdnsApiRrset -__version__ = '0.6.3' +__version__ = '0.6.4' LOG = logging.getLogger(__name__) _LIBRARY_NAME = "pp-pdns-api-client" @@ -118,6 +118,7 @@ class PpPDNSApplication(PpConfigApplication): self._api_host = self.api_hosts['global'] self._api_port = self.default_api_port self._api_servername = self.default_api_servername + self._api_server_version = 'unknown' self._user_agent = '{}/{}'.format(_LIBRARY_NAME, self.version) self._timeout = self.default_timeout @@ -213,6 +214,12 @@ class PpPDNSApplication(PpConfigApplication): raise PpPDNSAppError("Invalid API server name {!r} given.".format(value)) self._api_servername = str(value).strip() + # ----------------------------------------------------------- + @property + def api_server_version(self): + "The version of the PowerDNS server, how provided by API." + return self._api_server_version + # ----------------------------------------------------------- @property def user_agent(self): @@ -280,6 +287,7 @@ class PpPDNSApplication(PpConfigApplication): res['environment'] = self.environment res['timeout'] = self.timeout res['user_agent'] = self.user_agent + res['api_server_version'] = self.api_server_version return res @@ -466,6 +474,7 @@ class PpPDNSApplication(PpConfigApplication): logging.getLogger("requests").setLevel(logging.WARNING) super(PpPDNSApplication, self).pre_run() + self.get_api_server_version() # ------------------------------------------------------------------------- def _run(self): @@ -488,6 +497,25 @@ class PpPDNSApplication(PpConfigApplication): if self.verbose > 1: LOG.debug("executing post_run() ...") + # ------------------------------------------------------------------------- + def get_api_server_version(self): + + path = "/servers/{}".format(self.api_servername) + try: + json_response = self.perform_request(path) + except (PDNSApiNotFoundError, PDNSApiValidationError) as e: + LOG.error("Could not found server info.") + return None + if self.verbose > 2: + LOG.debug("Got a response:\n{}".format(pp(json_response))) + + if 'version' in json_response: + self._api_server_version = json_response['version'] + LOG.info("PowerDNS server version {!r}.".format(self.api_server_version)) + return self.api_server_version + LOG.error("Did not found version info in server info:\n{}".format(pp(json_response))) + return None + # ------------------------------------------------------------------------- def _build_url(self, path):