diff options
Diffstat (limited to 'src/caas/services/nicfirmwareversionservice.py')
| -rw-r--r-- | src/caas/services/nicfirmwareversionservice.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/caas/services/nicfirmwareversionservice.py b/src/caas/services/nicfirmwareversionservice.py new file mode 100644 index 0000000..b8a9d43 --- /dev/null +++ b/src/caas/services/nicfirmwareversionservice.py @@ -0,0 +1,37 @@ +import datetime +from .helpers import Address +from ..models import FirmwareUpgradeSchedule, Server +from django.conf import settings +import logging + + +logger = logging.getLogger("caas") + +class NicFirmwareVersionService(): + @staticmethod + def set_server_nic_firmware_version(ilo_host_address, intel_nic_firmware_version): + try: + server_kwargs = {"ilo_host_address": ilo_host_address} + server = Server.objects.get(**server_kwargs) + except Server.DoesNotExist: + errmsg = "FAILED: while upgrading Intel NIC firmware: cannot find server with ilo_host_address: %s" % ilo_host_address + logger.error(errmsg) + return -1 + + try: + firmware_kwargs = {"server_id": server.pk} + firmware = FirmwareUpgradeSchedule.objects.get(**firmware_kwargs) + except FirmwareUpgradeSchedule.DoesNotExist: + errmsg = "FAILED: while upgrading Intel NIC firmware: cannot find FirmwareUpgradeSchedule associated with the server with ilo_hostname: %s" % server.ilo_hostname + logger.error(errmsg) + return -1 + + if intel_nic_firmware_version == settings.INTEL_NIC_FIRMWARE_VERSION: + firmware.date_completed = datetime.datetime.now() + else: + firmware.date_last_failed = datetime.datetime.now() + + server.intel_nic_firmware_version = intel_nic_firmware_version + server.save() + firmware.save() + return 0 |
