mirror of
https://github.com/MAGICGrants/truenas-apps.git
synced 2026-01-09 20:47:58 -05:00
* set supported repos * update tests * dawarich: add support for pg18 * postgis: renovate * adventurelog: add support for pg 18 * pgvectors * librechat: add support for postgres 18 * chatwoot: enable support for pg 18 * renovate * fix test - update lib * remove suffix * bump
80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
from render import Render
|
|
|
|
try:
|
|
from .error import RenderError
|
|
from .validations import allowed_dns_opt_or_raise
|
|
except ImportError:
|
|
from error import RenderError
|
|
from validations import allowed_dns_opt_or_raise
|
|
|
|
|
|
class Dns:
|
|
def __init__(self, render_instance: "Render"):
|
|
self._render_instance = render_instance
|
|
self._dns_options: set[str] = set()
|
|
self._dns_searches: set[str] = set()
|
|
self._dns_nameservers: set[str] = set()
|
|
|
|
self._auto_add_dns_opts_from_values()
|
|
self._auto_add_dns_searches_from_values()
|
|
self._auto_add_dns_nameservers_from_values()
|
|
|
|
def _get_dns_opt_keys(self):
|
|
return [self._get_key_from_opt(opt) for opt in self._dns_options]
|
|
|
|
def _get_key_from_opt(self, opt):
|
|
return opt.split(":")[0]
|
|
|
|
def _auto_add_dns_opts_from_values(self):
|
|
values = self._render_instance.values
|
|
for dns_opt in values.get("network", {}).get("dns_opts", []):
|
|
self.add_dns_opt(dns_opt)
|
|
|
|
def _auto_add_dns_searches_from_values(self):
|
|
values = self._render_instance.values
|
|
for dns_search in values.get("network", {}).get("dns_searches", []):
|
|
self.add_dns_search(dns_search)
|
|
|
|
def _auto_add_dns_nameservers_from_values(self):
|
|
values = self._render_instance.values
|
|
for dns_nameserver in values.get("network", {}).get("dns_nameservers", []):
|
|
self.add_dns_nameserver(dns_nameserver)
|
|
|
|
def add_dns_search(self, dns_search):
|
|
if dns_search in self._dns_searches:
|
|
raise RenderError(f"DNS Search [{dns_search}] already added")
|
|
self._dns_searches.add(dns_search)
|
|
|
|
def add_dns_nameserver(self, dns_nameserver):
|
|
if dns_nameserver in self._dns_nameservers:
|
|
raise RenderError(f"DNS Nameserver [{dns_nameserver}] already added")
|
|
self._dns_nameservers.add(dns_nameserver)
|
|
|
|
def add_dns_opt(self, dns_opt):
|
|
# eg attempts:3
|
|
key = allowed_dns_opt_or_raise(self._get_key_from_opt(dns_opt))
|
|
if key in self._get_dns_opt_keys():
|
|
raise RenderError(f"DNS Option [{key}] already added")
|
|
self._dns_options.add(dns_opt)
|
|
|
|
def has_dns_opts(self):
|
|
return len(self._dns_options) > 0
|
|
|
|
def has_dns_searches(self):
|
|
return len(self._dns_searches) > 0
|
|
|
|
def has_dns_nameservers(self):
|
|
return len(self._dns_nameservers) > 0
|
|
|
|
def render_dns_searches(self):
|
|
return sorted(self._dns_searches)
|
|
|
|
def render_dns_opts(self):
|
|
return sorted(self._dns_options)
|
|
|
|
def render_dns_nameservers(self):
|
|
return sorted(self._dns_nameservers)
|