From 640ff61422bc0ee3966941b93d9889ddbbd38d77 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Thu, 30 Jul 2026 18:17:14 -0600 Subject: more files --- src/caas/services/icingapollservice.py | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/caas/services/icingapollservice.py (limited to 'src/caas/services/icingapollservice.py') diff --git a/src/caas/services/icingapollservice.py b/src/caas/services/icingapollservice.py new file mode 100644 index 0000000..d1796d0 --- /dev/null +++ b/src/caas/services/icingapollservice.py @@ -0,0 +1,47 @@ +from .helpers import Jinja +from .ansibleservice import AnsibleService +from ..models import IcingaBmc +from django.conf import settings +import logging + + +logger = logging.getLogger("caas") + + +class IcingaPollService(AnsibleService): + def __init__(self, target, git, branch, playbook, zmq, url): + super().__init__("icinga_poll", target, git, branch, playbook, zmq) + self.url = url + + def deploy(self): + logger.debug("%s Enter" % self.target) + try: + icinga_poll_kwargs = {"ilo_host_address": self.target} + icinga_poll = IcingaBmc.objects.get(**icinga_poll_kwargs) + except IcingaBmc.DoesNotExist: + logger.error("%s FAILED: while running icinga_poll playbook: failed to look up BMC" % self.target) + return -1 + + self.target = icinga_poll.ilo_hostname + # host_vars file + hostvars_config = {"bmc_ip": icinga_poll.ilo_host_address, + "bmc_username": icinga_poll.bmc_username, + "bmc_password": icinga_poll.bmc_password, + "icinga_api_url": settings.ICINGA_API_URL, + "icinga_api_username": settings.ICINGA_API_USERNAME, + "icinga_api_password": settings.ICINGA_API_PASSWORD, + "middleware_endpoint": settings.CAAS_MIDDLEWARE_ENDPOINT, + "middleware_username": settings.CAAS_MIDDLEWARE_USERNAME, + "middleware_password": settings.CAAS_MIDDLEWARE_PASSWORD, + "middleware_url": self.url} + hostvars_content = Jinja.render("icinga_poll_host_vars.j2", **hostvars_config) + hostvars = self.target + # inventory file + inventory_config = {"vendor_name": icinga_poll.vendor_name, "target": self.target} + inventory_content = Jinja.render("icinga_poll_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 + -- cgit v1.3