diff options
Diffstat (limited to 'src/caas/services/icingapollservice.py')
| -rw-r--r-- | src/caas/services/icingapollservice.py | 47 |
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 + |
