New firmware_utils.py with get_firmware_info function.
Change-Id: Ie4ab784eb4ab452abd18ee34e42a64cfec782626
Signed-off-by: Michael Walsh <micwalsh@us.ibm.com>
diff --git a/lib/firmware_utils.py b/lib/firmware_utils.py
new file mode 100755
index 0000000..2964814
--- /dev/null
+++ b/lib/firmware_utils.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+r"""
+This module contains functions which pertain to firmware.
+"""
+
+import bmc_ssh_utils as bsu
+import var_funcs as vf
+
+
+def get_hard_disk_info(device="/dev/sdb"):
+
+ r"""
+ Get firmware information for the given device on the OS and return it as a
+ dictionary.
+
+ Description of argument(s):
+ device The device to be passed to the hdparm and lsblk commands (e.g.
+ "/dev/sdb").
+
+ Example result:
+
+ sda_info:
+ [model_number]: MTFDDAK1T9TCB 00LY461 00LY570IBM
+ [serial_number]: 179C413F
+ [firmware_revision]: MJ06
+ [transport]: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
+ [used]: unknown (minor revision code 0x006d)
+ [supported]: enhanced erase
+ [likely_used]: 10
+ [lba_user_addressable_sectors]: 268435455
+ [lba48_user_addressable_sectors]: 3750748848
+ [logical_sector_size]: 512 bytes
+ [physical_sector_size]: 4096 bytes
+ [logical_sector-0_offset]: 0 bytes
+ [device_size_with_m_=_1024*1024]: 1831420 MBytes
+ [device_size_with_m_=_1000*1000]: 1920383 MBytes (1920 GB)
+ [form_factor]: 2.5 inch
+ [nominal_media_rotation_rate]: Solid State Device
+ [queue_depth]: 32
+ [standby_timer_values]: spec'd by Standard, with device specific minimum
+ [r/w_multiple_sector_transfer]: Max = 16 Current = 16
+ [advanced_power_management_level]: 254
+ [dma]: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
+ [cycle_time]: no flow control=120ns IORDY flow control=120ns
+ [pio]: pio0 pio1 pio2 pio3 pio4
+ [security]:
+ [not_expired]: security count
+ [logical_unit_wwn_device_identifier]: 500a0751179c413f
+ [naa]: 5
+ [ieee_oui]: 00a075
+ [unique_id]: 1179c413f
+ [checksum]: correct
+ [name]: sda1
+ [maj:min]: 8:1
+ [rm]: 1
+ [size]: 4M
+ [ro]: 0
+ [type]: part
+ [mountpoint]:
+
+ """
+
+ cmd_buf = "hdparm -I " + device + " | egrep \":.+\" | sed -re" +\
+ " \"s/[ \t]+/ /g\""
+ stdout, stderr, rc = bsu.os_execute_command(cmd_buf)
+
+ firmware_dict = vf.key_value_outbuf_to_dict(stdout)
+
+ cmd_buf = "lsblk -P " + device + " | sed -re 's/\" /\"\\n/g'"
+ stdout, stderr, rc = bsu.os_execute_command(cmd_buf)
+ firmware_dict.update(vf.key_value_outbuf_to_dict(stdout, delim='=',
+ strip=" \""))
+
+ return firmware_dict