summaryrefslogtreecommitdiff
path: root/src/caas/services/icingapollservice.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/caas/services/icingapollservice.py')
-rw-r--r--src/caas/services/icingapollservice.py47
1 files changed, 47 insertions, 0 deletions
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
+