summaryrefslogtreecommitdiff
path: root/src/caas/services/icingaservice.py
blob: 4d1ff6718dcaf00e636795a1df71ee07c1ae2e7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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