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