def METHOD_NAME(self):
    self.versions['qla2xxx'] = None
    self.versions['qla2xxx_fw'] = None
    import glob
    hosts = glob.glob('/sys/bus/pci/drivers/qla2*/*:*:*/host*')
    if len(hosts) == 0:
        return
    hosts_proc = map(lambda x: '/proc/scsi/qla2xxx/'+os.path.basename(x).replace('host', ''), hosts)
    hosts = map(lambda x: '/sys/class/fc_host/'+os.path.basename(x)+'/symbolic_name', hosts)
    for i, host in enumerate(hosts):
        if os.path.exists(host):
            with open(host, 'r') as f:
                buff = f.read()
            l = buff.split()
            for e in l:
                if e.startswith("DVR:"):
                    self.versions['qla2xxx'] = e.replace("DVR:", "")
                elif e.startswith("FW:"):
                    v = e.replace("FW:", "")
                    # store the lowest firmware version
                    if self.versions['qla2xxx_fw'] is None or V(self.versions['qla2xxx_fw']) > V(v):
                        self.versions['qla2xxx_fw'] = v
        elif os.path.exists(hosts_proc[i]):
            with open(hosts_proc[i], 'r') as f:
                buff = f.read()
            for line in buff.split('\n'):
                if "Firmware version" not in line:
                    continue
                l = line.split()
                n_words = len(l)
                idx = l.index("Driver") + 2
                if idx <= n_words:
                    self.versions['qla2xxx'] = l[idx]
                idx = l.index("Firmware") + 2
                if idx <= n_words:
                    v = l[idx]
                    if self.versions['qla2xxx_fw'] is None or V(self.versions['qla2xxx_fw']) > V(v):
                        self.versions['qla2xxx_fw'] = v