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