summaryrefslogtreecommitdiff
path: root/src/caas/services/dnsservice.py
diff options
context:
space:
mode:
authorckonstanski <kostcarl@isu.edu>2026-07-30 18:17:14 -0600
committerckonstanski <kostcarl@isu.edu>2026-07-30 18:17:14 -0600
commit640ff61422bc0ee3966941b93d9889ddbbd38d77 (patch)
treeabf1c08f5d38ee53ec8b29dc4f425722517505e6 /src/caas/services/dnsservice.py
parent22dae02a86c1fce71091bfa5289cf99abba1b217 (diff)
more filesHEADmaster
Diffstat (limited to 'src/caas/services/dnsservice.py')
-rw-r--r--src/caas/services/dnsservice.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/caas/services/dnsservice.py b/src/caas/services/dnsservice.py
new file mode 100644
index 0000000..bd8c388
--- /dev/null
+++ b/src/caas/services/dnsservice.py
@@ -0,0 +1,60 @@
+from django.conf import settings
+from .helpers import Jinja, Hostname
+from .ansibleservice import AnsibleService
+from ..models import Server, Cluster
+import logging
+
+
+logger = logging.getLogger("caas")
+
+
+class DnsService(AnsibleService):
+ def __init__(self, target, git, branch, playbook, zmq):
+ super().__init__("dns", target, git, branch, playbook, zmq)
+
+ def deploy(self):
+ logger.debug("%s Enter" % self.target)
+ try:
+ server_kwargs = {"ilo_host_address": self.target}
+ server = Server.objects.get(**server_kwargs)
+ except Server.DoesNotExist:
+ errmsg = "%s FAILED: while running DNS playbook: failed to look up server" % self.target
+ logger.error(errmsg)
+ return -1
+ try:
+ cluster_kwargs = {"id": server.cluster.pk}
+ cluster = Cluster.objects.get(**cluster_kwargs)
+ except Cluster.DoesNotExist:
+ errmsg = "%s FAILED: while running DNS playbook: failed to look up cluster" % self.target
+ logger.error(errmsg)
+ return -1
+ server.oam_hostname = Hostname.make_oam_hostname(server.ilo_hostname)
+ if cluster.oam_vip_hostname is None:
+ cluster.oam_vip_hostname = Hostname.make_vip_hostname(server.ilo_hostname, cluster.cluster_name)
+ cluster.save()
+ server.save()
+ # The ansible target is the ilo hostname, but until now we only had the ilo IP.
+ self.target = server.ilo_hostname
+ # host_vars file
+ hostvars_config = {"ilo_hostname": server.ilo_hostname,
+ "ilo_host_address": server.ilo_host_address,
+ "oam_hostname": server.oam_hostname,
+ "oam_host_address": server.oam_host_address,
+ "oam_vip_hostname": cluster.oam_vip_hostname,
+ "oam_vip_address": cluster.oam_vip_address,
+ "cluster_name": cluster.cluster_name,
+ "dns_admin_endpoint": settings.DNS_ADMIN_ENDPOINT,
+ "dns_domain": settings.DNS_DOMAIN,
+ "infoblox_username": settings.INFOBLOX_USERNAME,
+ "infoblox_password": settings.INFOBLOX_PASSWORD}
+ hostvars_content = Jinja.render("dns_host_vars.j2", **hostvars_config)
+ hostvars = server.ilo_hostname
+ # inventory file
+ inventory_config = {"target": self.target}
+ inventory_content = Jinja.render("dns_inventory.j2", **inventory_config)
+ inventory = "%s.yaml" % self.target
+ logger.debug("%s Sending playbook to queue" % self.target)
+ self.run_playbook(inventory, inventory_content, hostvars, hostvars_content)
+ logger.debug("%s Sent playbook to queue" % self.target)
+ return 0
+