summaryrefslogtreecommitdiff
path: root/src/caas/services/nicfirmwareupgradenowservice.py
diff options
context:
space:
mode:
authorckonstanski <kostcarl@isu.edu>2026-07-30 18:17:14 -0600
committerckonstanski <kostcarl@isu.edu>2026-07-30 18:17:14 -0600
commit640ff61422bc0ee3966941b93d9889ddbbd38d77 (patch)
treeabf1c08f5d38ee53ec8b29dc4f425722517505e6 /src/caas/services/nicfirmwareupgradenowservice.py
parent22dae02a86c1fce71091bfa5289cf99abba1b217 (diff)
more filesHEADmaster
Diffstat (limited to 'src/caas/services/nicfirmwareupgradenowservice.py')
-rw-r--r--src/caas/services/nicfirmwareupgradenowservice.py68
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