[V1,1/6] nics/net_device: add driver/firmware

Message ID 20210322024616.14499-2-haiyangx.zhao@intel.com (mailing list archive)
State Accepted
Headers
Series framework: add dirver/firmware/pkg in result |

Commit Message

Zhao, HaiyangX March 22, 2021, 2:46 a.m. UTC
  add attribute driver/firmware and the related methods for NetDevice.

Signed-off-by: Haiyang Zhao <haiyangx.zhao@intel.com>
---
 nics/net_device.py | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)
  

Patch

diff --git a/nics/net_device.py b/nics/net_device.py
index 6a26d1eb..98d31237 100644
--- a/nics/net_device.py
+++ b/nics/net_device.py
@@ -71,7 +71,9 @@  class NetDevice(object):
         self.intf2_name = None
         self.get_interface_name()
         self.socket = self.get_nic_socket()
-        self.pkg = {}
+        self.driver_version = ''
+        self.firmware = ''
+        self.pkg = None
 
     def stop(self):
         pass
@@ -123,6 +125,7 @@  class NetDevice(object):
         """
         Get the NIC pkg.
         """
+        self.pkg = {'type': '', 'version': ''}
         out = self.__send_expect('dmesg | grep "DDP package" | tail -1', '# ')
         if 'could not load' in out:
             print(RED(out))
@@ -140,6 +143,36 @@  class NetDevice(object):
                 self.pkg['version'] = pkg_info[1].strip()
         return self.pkg
 
+    @nic_has_driver
+    def get_driver_firmware(self):
+        """
+        Get NIC driver and firmware version.
+        """
+        get_driver_firmware = getattr(
+            self, 'get_driver_firmware_%s' %
+                  self.__get_os_type())
+        get_driver_firmware()
+
+    def get_driver_firmware_linux(self):
+        """
+        Get NIC driver and firmware version.
+        """
+        rexp = 'version:\s.+'
+        pattern = re.compile(rexp)
+        out = self.__send_expect('ethtool -i {} | grep version'.format(self.intf_name), '# ')
+        driver_firmware = pattern.findall(out)
+        if len(driver_firmware) > 1:
+            self.driver_version = driver_firmware[0].split(': ')[-1].strip()
+            self.firmware = driver_firmware[1].split(': ')[-1].strip()
+
+        return self.driver_version, self.firmware
+
+    def get_driver_firmware_freebsd(self):
+        """
+        Get the NIC driver and firmware version.
+        """
+        NotImplemented
+
     def get_nic_socket(self):
         """
         Get socket id of specified pci device.