def get_vendor(self, vmhba, executor): handler = comp(*reversed((command.cmdlet.raiseOnNonZeroReturnCode, command.cmdlet.raiseWhenOutputIsNone, command.cmdlet.stripOutput, _parse_vmkchdev_l))) lspci = command.UnixBaseCmd("vmkchdev -l | grep %s" % vmhba, handler=handler) result = executor.process(lspci) result = result.handler(result) return vendors.find_name_by_id_in_hex(result)
def parse_vendor_from_driverid(driverid): '''Parses vendor by extracting vendor id from provided driver id @param driverid: driver id string returned either by `fcstat fcx`, `lsdev -vpd -dev fcx` or `lscfg -vpl fcx` commands @type driverid: str @return: vendor string @rtype: basestring @raise KeyError: if no vendor available for passed id @raise ValueError: if produced vendor id is not convertible to int ''' #The 1st 4 chars represent PCI vendor ID (in big-endian order) vendor = driverid[0:4] #conver to little-endian vendor = vendor[2:] + vendor[:2] return vendors.find_name_by_id_in_hex(vendor)
def get_vendor_by_device_id(self, device_id, executor): '''Returns vendor name by device id @param device_id: id of device in form <domain>:<bus>:<slot> @type device_id: basestring @param executor: instance of a command executor @type executor: command.Executor @return: vendor name @rtype: basestring ''' handler = comp(*reversed((command.cmdlet.raiseOnNonZeroReturnCode, command.cmdlet.raiseWhenOutputIsNone, command.cmdlet.stripOutput, fptools.methodcaller('splitlines'), _parse_lspci))) lspci = command.UnixBaseCmd("lspci -v -m -n -s %s" % device_id, handler=handler) result = executor.process(lspci) return vendors.find_name_by_id_in_hex(result.get('vendor'))