summaryrefslogtreecommitdiff
path: root/src/caas/services/icingaservice.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/icingaservice.py
parent22dae02a86c1fce71091bfa5289cf99abba1b217 (diff)
more filesHEADmaster
Diffstat (limited to 'src/caas/services/icingaservice.py')
-rw-r--r--src/caas/services/icingaservice.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/caas/services/icingaservice.py b/src/caas/services/icingaservice.py
new file mode 100644
index 0000000..4d1ff67
--- /dev/null
+++ b/src/caas/services/icingaservice.py
@@ -0,0 +1,46 @@
+from .helpers import Jinja
+from .ansibleservice import AnsibleService
+from .macaddressservice import MacAddressService
+from ..models import IcingaBmc, IcingaRouter
+from django.conf import settings
+import logging
+
+
+logger = logging.getLogger("caas")
+
+
+class IcingaService(AnsibleService):
+ def __init__(self, target, git, branch, playbook, zmq):
+ super().__init__("icinga", target, git, branch, playbook, zmq)
+
+ def deploy(self, mockciq = False):
+ logger.debug("%s Enter" % self.target)
+ # host_vars file
+ hostvars_config = {"icinga_routers": [], "icinga_bmcs": []}
+ for router in IcingaRouter.objects.all():
+ hostvars_config["icinga_routers"].append({"name": router.csr_hostname,
+ "address6": router.oam_default_gateway})
+ server_kwargs = {"date_completed": None}
+ servers = IcingaBmc.objects.filter(**server_kwargs)
+ for server in servers:
+ hostvars_config["icinga_bmcs"].append({"name": server.ilo_hostname,
+ "address6": server.ilo_host_address,
+ "preauth": True if mockciq or server.bmc_password_admin_default is None or MacAddressService.get_server_mac_address(server.ilo_host_address) is None else False,
+ "bmc_password_admin_default": server.bmc_password_admin_default,
+ "bmc_password_admin": server.bmc_password_admin,
+ "bmc_username": server.bmc_username,
+ "bmc_password": server.bmc_password,
+ "middleware_endpoint": settings.CAAS_MIDDLEWARE_ENDPOINT,
+ "middleware_username": settings.CAAS_MIDDLEWARE_USERNAME,
+ "middleware_password": settings.CAAS_MIDDLEWARE_PASSWORD})
+
+ hostvars_content = Jinja.render("icinga_host_vars.j2", **hostvars_config)
+ hostvars = self.target
+ # inventory file
+ inventory_config = {"target": self.target}
+ inventory_content = Jinja.render("icinga_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