summaryrefslogtreecommitdiff
path: root/src/caas/services/nicfirmwareversionservice.py
blob: b8a9d43537320708e4a41c98443a11ded45bc1df (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
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