[Kimchi-devel] [PATCH v7 1/4] Host device passthrough: List all types of host devices

Zhou Zheng Sheng zhshzhou at linux.vnet.ibm.com
Mon Jul 14 02:10:31 UTC 2014


on 2014/07/13 22:34, Aline Manera wrote:
> On 07/09/2014 04:01 AM, Zhou Zheng Sheng wrote:
>> The URI /host/devices only presents scsi_host (particularly fc_host)
>> device information. To implement host PCI pass through, we should list
>> all
>> types of host devices. This patch adds support for parsing various host
>> devices information, and listing them on /host/devices. So the user is
>> free
>> to choose any listed PCI device to pass through to guest. Since the
>> patch changes the device information dictionary format, the existing code
>> consuming the device information is also changed accordingly.
>>
>> To get all types of host device, access the following URL.
>>
>> curl -k -u root -H "Content-Type: application/json" \
>>    -H  "Accept: application/json" \
>>    https://127.0.0.1:8001/host/devices
>>
>> To get only fc_host devices, change the URL to
>>    "https://127.0.0.1:8001/host/devices?_cap=fc_host"
>>
>> To get only pci device, change the URL to
>>    "https://127.0.0.1:8001/host/devices?_cap=pci"
>>
>> v1:
>>    Parse the node device XML using xpath.
>>
>> v2:
>>    Write a "dictize" function and parse the node device XML using
>> dictize.
>>
>> v3:
>>    Fix a naming mistake.
>>
>> v4:
>>    It is observed that sometimes the parent devices is not listed by
>>    libvirt but the child device is listed. In previous version we catch
>>    this exception and ignore it. The root cause is unknown, and we failed
>>    to re-produce the problem. In v4 we do not catch it. It seems to be
>>    related to USB removable disk, and the problem is gone after we
>>    upgraded Linux kernel.
>>
>> Signed-off-by: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
>> ---
>>   docs/API.md                            |  11 +-
>>   src/kimchi/hostdev.py                  | 205
>> +++++++++++++++++++++++++++++++++
>>   src/kimchi/mockmodel.py                |   7 +-
>>   src/kimchi/model/host.py               |  15 +--
>>   src/kimchi/model/libvirtstoragepool.py |  18 +--
>>   src/kimchi/xmlutils.py                 |  26 ++++-
>>   tests/test_rest.py                     |   6 +-
>>   tests/test_storagepool.py              |   7 +-
>>   8 files changed, 258 insertions(+), 37 deletions(-)
>>   create mode 100644 src/kimchi/hostdev.py
>>
>> diff --git a/docs/API.md b/docs/API.md
>> index 4f51dd0..6b7c2d4 100644
>> --- a/docs/API.md
>> +++ b/docs/API.md
>> @@ -877,12 +877,11 @@ stats history
>>   * **GET**: Retrieve information of a single pci device.
>>              Currently only scsi_host devices are supported:
>>       * name: The name of the device.
>> -    * adapter_type: The capability type of the scsi_host device
>> (fc_host).
>> -                    Empty if pci device is not scsi_host.
>> -    * wwnn: The HBA Word Wide Node Name.
>> -            Empty if pci device is not scsi_host.
>> -    * wwpn: The HBA Word Wide Port Name
>> -            Empty if pci device is not scsi_host.
>> +    * path: Path of device in sysfs.
>> +    * adapter: Host adapter information. Empty if pci device is not
>> scsi_host.
>> +        * type: The capability type of the scsi_host device (fc_host,
>> vport_ops).
>> +        * wwnn: The HBA Word Wide Node Name. Empty if pci device is
>> not fc_host.
>> +        * wwpn: The HBA Word Wide Port Name. Empty if pci device is
>> not fc_host.
>>
>>   ### Collection: Host Packages Update
>>
>> diff --git a/src/kimchi/hostdev.py b/src/kimchi/hostdev.py
> 
> As it is strictly related to libvirt, it should be under /src/kimchi/model
> 

Thanks Aline. I agree.

>> new file mode 100644
>> index 0000000..0785802
>> --- /dev/null
>> +++ b/src/kimchi/hostdev.py


-- 
Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou at linux.vnet.ibm.com
Telephone: 86-10-82454397




More information about the Kimchi-devel mailing list