mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-11-14 01:20:27 +00:00
65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
|
import traceback
|
||
|
from flask import current_app
|
||
|
from urllib.parse import urljoin
|
||
|
|
||
|
from ..lib import utils
|
||
|
from .base import db
|
||
|
from .setting import Setting
|
||
|
|
||
|
|
||
|
class Server(object):
|
||
|
"""
|
||
|
This is not a model, it's just an object
|
||
|
which be assigned data from PowerDNS API
|
||
|
"""
|
||
|
def __init__(self, server_id=None, server_config=None):
|
||
|
self.server_id = server_id
|
||
|
self.server_config = server_config
|
||
|
# PDNS configs
|
||
|
self.PDNS_STATS_URL = Setting().get('pdns_api_url')
|
||
|
self.PDNS_API_KEY = Setting().get('pdns_api_key')
|
||
|
self.PDNS_VERSION = Setting().get('pdns_version')
|
||
|
self.API_EXTENDED_URL = utils.pdns_api_extended_uri(self.PDNS_VERSION)
|
||
|
|
||
|
def get_config(self):
|
||
|
"""
|
||
|
Get server config
|
||
|
"""
|
||
|
headers = {}
|
||
|
headers['X-API-Key'] = self.PDNS_API_KEY
|
||
|
|
||
|
try:
|
||
|
jdata = utils.fetch_json(urljoin(
|
||
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||
|
'/servers/{0}/config'.format(self.server_id)),
|
||
|
headers=headers,
|
||
|
timeout=int(Setting().get('pdns_api_timeout')),
|
||
|
method='GET')
|
||
|
return jdata
|
||
|
except Exception as e:
|
||
|
current_app.logger.error(
|
||
|
"Can not get server configuration. DETAIL: {0}".format(e))
|
||
|
current_app.logger.debug(traceback.format_exc())
|
||
|
return []
|
||
|
|
||
|
def get_statistic(self):
|
||
|
"""
|
||
|
Get server statistics
|
||
|
"""
|
||
|
headers = {}
|
||
|
headers['X-API-Key'] = self.PDNS_API_KEY
|
||
|
|
||
|
try:
|
||
|
jdata = utils.fetch_json(urljoin(
|
||
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||
|
'/servers/{0}/statistics'.format(self.server_id)),
|
||
|
headers=headers,
|
||
|
timeout=int(Setting().get('pdns_api_timeout')),
|
||
|
method='GET')
|
||
|
return jdata
|
||
|
except Exception as e:
|
||
|
current_app.logger.error(
|
||
|
"Can not get server statistics. DETAIL: {0}".format(e))
|
||
|
current_app.logger.debug(traceback.format_exc())
|
||
|
return []
|