diff options
Diffstat (limited to 'src/caas/services/bmcservice.py')
| -rw-r--r-- | src/caas/services/bmcservice.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/caas/services/bmcservice.py b/src/caas/services/bmcservice.py new file mode 100644 index 0000000..43fdb51 --- /dev/null +++ b/src/caas/services/bmcservice.py @@ -0,0 +1,50 @@ +from .helpers import Jinja +from .ansibleservice import AnsibleService +from ..models import IcingaBmc +from django.conf import settings +import logging + + +logger = logging.getLogger("caas") + + +class BmcService(AnsibleService): + def __init__(self, target, git, branch, playbook, zmq): + super().__init__("bmc", target, git, branch, playbook, zmq) + + def deploy(self): + logger.debug("%s Enter" % self.target) + try: + bmc_kwargs = {"ilo_host_address": self.target} + bmc = IcingaBmc.objects.get(**bmc_kwargs) + except IcingaBmc.DoesNotExist: + errmsg = "%s FAILED: while running BMC playbook: failed to look up BMC" % self.target + logger.error(errmsg) + return -1 + # The ansible target is the hostname, but until now we only had the ilo IP. + self.target = bmc.ilo_hostname + # host_vars file + hostvars_config = {"bmc_ip": bmc.ilo_host_address, + "bmc_password_admin_default": bmc.bmc_password_admin_default, + "bmc_password_admin": bmc.bmc_password_admin, + "bmc_username": bmc.bmc_username, + "bmc_password": bmc.bmc_password, + "dns_nameservers": (" ").join(settings.DNS_SERVERS), + "syslog_server": settings.SYSLOG_SERVER, + "syslog_server_port": settings.SYSLOG_SERVER_PORT, + "ntp_servers": (" ").join(settings.NTP_SERVERS), + "middleware_endpoint": settings.CAAS_MIDDLEWARE_ENDPOINT, + "middleware_username": settings.CAAS_MIDDLEWARE_USERNAME, + "middleware_password": settings.CAAS_MIDDLEWARE_PASSWORD} + hostvars_content = Jinja.render("bmc_host_vars.j2", **hostvars_config) + hostvars = self.target + # inventory file + inventory_config = {"vendor_name": bmc.vendor_name, + "target": self.target} + inventory_content = Jinja.render("bmc_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 + |
