diff options
| author | ckonstanski <kostcarl@isu.edu> | 2026-07-30 18:17:14 -0600 |
|---|---|---|
| committer | ckonstanski <kostcarl@isu.edu> | 2026-07-30 18:17:14 -0600 |
| commit | 640ff61422bc0ee3966941b93d9889ddbbd38d77 (patch) | |
| tree | abf1c08f5d38ee53ec8b29dc4f425722517505e6 /src/caas/services/nicfirmwareupgradenowservice.py | |
| parent | 22dae02a86c1fce71091bfa5289cf99abba1b217 (diff) | |
Diffstat (limited to 'src/caas/services/nicfirmwareupgradenowservice.py')
| -rw-r--r-- | src/caas/services/nicfirmwareupgradenowservice.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/caas/services/nicfirmwareupgradenowservice.py b/src/caas/services/nicfirmwareupgradenowservice.py new file mode 100644 index 0000000..d31fd74 --- /dev/null +++ b/src/caas/services/nicfirmwareupgradenowservice.py @@ -0,0 +1,68 @@ +from .helpers import Jinja +from .ansibleservice import AnsibleService +from .firmwareservice import FirmwareService +from .wrinstallnowservice import WrInstallNowService +from ..models import FirmwareBatch, WrBatch, WrInstallSchedule, FirmwareUpgradeSchedule +from django.conf import settings +import logging +import datetime + + +logger = logging.getLogger("caas") + + +class NicFirmwareUpgradeNowService(AnsibleService): + def __init__(self, target, git, branch, playbook, zmq): + super().__init__("nic", target, git, branch, playbook, zmq) + + def deploy(self): + try: + firmwarebatch_kwargs = {"ilo_host_address": self.target} + firmwarebatch = FirmwareBatch.objects.get(**firmwarebatch_kwargs) + except FirmwareBatch.DoesNotExist: + errmsg = "FAILED: while checking Intel NIC firmware version: cannot find server with ilo_host_address: %s" % self.target + logger.error(errmsg) + return -1 + completed = datetime.datetime.utcnow() + if firmwarebatch.intel_nic_firmware_version == settings.INTEL_NIC_FIRMWARE_VERSION: + try: + wrbatch_kwargs = {"ilo_host_address": firmwarebatch.ilo_host_address} + wrbatch = WrBatch.objects.get(**wrbatch_kwargs) + except WrBatch.DoesNotExist: + logger.error("FAILED: while scheduling Wind River installation: cannot find wrbatch with identifier: %s" % icingabmc.ilo_host_address) + raise + try: + wr_kwargs = {"cluster_id": wrbatch.cluster_id} + wr = WrInstallSchedule.objects.get(**wr_kwargs) + except WrInstallSchedule.DoesNotExist: + return "FAILED: while performing Wind River playbook callback: cannot find WrInstallSchedule associated with the cluster with cluster_id: %s" % cluster.pk + # never run an installation on top of a finished subcloud + if wr.kirke_ticket_number is None: + if wr.kirke_ticket_completed is None: + wr.kirke_ticket_completed = completed + wr.date_completed = None + wr.kirke_ticket_number = None + wr.save() + wrinstallnow = WrInstallNowService("wr", + firmwarebatch.ilo_host_address, + settings.ANSIBLE["wr"]["git"], + settings.ANSIBLE["wr"]["branch"], + settings.ANSIBLE["wr"]["playbook"], + settings.ANSIBLE["wr"]["zmq"]) + wrinstallnow.deploy() + else: + try: + nic_kwargs = {"server_id": firmwarebatch.pk} + nic = FirmwareUpgradeSchedule.objects.get(**nic_kwargs) + except FirmwareUpgradeSchedule.DoesNotExist: + logger.error("FAILED: while deploying Wind River installation: cannot find FirmwareUpgradeSchedule with ID: %s" % icingabmc.pk) + raise + if nic.kirke_ticket_completed is None: + nic.kirke_ticket_completed = completed + nic.date_completed = None + nic.kirke_ticket_number = None + nic.save() + firmwareservice = FirmwareService(firmwarebatch.ilo_host_address, self.git, self.branch, self.playbook, self.zmq) + firmwareservice.deploy() + # The playbook callback will trigger the wr install + return 0 |
