lemur/lemur/dns_providers/service.py

75 lines
1.9 KiB
Python
Raw Normal View History

2018-04-27 20:18:41 +02:00
import json
2018-04-25 20:19:34 +02:00
from flask import current_app
from lemur import database
2018-04-11 01:04:07 +02:00
from lemur.dns_providers.models import DnsProviders
def render(args):
2018-04-11 01:04:07 +02:00
"""
Helper that helps us render the REST Api responses.
:param args:
:return:
"""
query = database.session_query(DnsProviders)
return database.sort_and_page(query, DnsProviders, args)
def get(dns_provider_id):
2018-04-27 20:18:41 +02:00
return database.get(DnsProviders, dns_provider_id)
def get_friendly(dns_provider_id):
"""
Retrieves a dns provider by its lemur assigned ID.
2018-04-11 01:04:07 +02:00
:param dns_provider_id: Lemur assigned ID
:rtype : DnsProvider
2018-04-11 01:04:07 +02:00
:return:
"""
2018-04-27 20:18:41 +02:00
dns_provider = get(dns_provider_id)
dns_provider_friendly = {
"name": dns_provider.name,
"description": dns_provider.description,
"provider_type": dns_provider.provider_type,
"options": dns_provider.options,
}
if dns_provider.provider_type == "route53":
dns_provider_friendly["account_id"] = json.loads(dns_provider.credentials).get("account_id")
return dns_provider_friendly
def delete(dns_provider_id):
"""
Deletes a DNS provider.
:param dns_provider_id: Lemur assigned ID
"""
database.delete(get(dns_provider_id))
2018-04-25 20:19:34 +02:00
def get_types():
provider_config = current_app.config.get('ACME_DNS_PROVIDER_TYPES')
if not provider_config:
raise Exception("No DNS Provider configuration specified.")
2018-04-27 20:18:41 +02:00
provider_config["total"] = len(provider_config.get("items"))
2018-04-25 20:19:34 +02:00
return provider_config
2018-04-27 20:18:41 +02:00
def create(data):
provider_name = data.get("name")
credentials = {}
for item in data.get("provider_type", {}).get("requirements", []):
credentials[item["name"]] = item["value"]
dns_provider = DnsProviders(
name=provider_name,
description=data.get("description"),
provider_type=data.get("provider_type").get("name"),
credentials=json.dumps(credentials),
)
created = database.create(dns_provider)
return created.id