Concept
1. pci_alias is configed in nova.conf on the controller node, for example,
pci_alias={"vendor_id":"8086", "product_id":"10c9", "name":"a1"}
It's your request pci device type, which will be used by the flavor while you creating an instance.
2. pci_passthrough_whitelist is configed in nova.conf on the compute node,for example,
pci_passthrough_whitelist=[{ "vendor_id":"8086","product_id":"10c9"}]
This means the pci devices you permit to be used by vms on the compute nodes, the others are forbidden.
User scenarios
1. Config pci_passthrough_whitelist on the compute node and pci_alias on the controller node, which means the devices you permit to be assigned to vms.
2. Create a floavor and set the "pci_passthrough:alias",for example,
nova flavor-key gzm set "pci_passthrough:alias"="a1:2". one more request is supported too,like this, nova flavor-key gzm set "pci_passthrough:alias"="a1:2,b1:1".
3. Show details of the flavor, you'll see ,
nova flavor-show gzm +----------------------------+--------------------------------------+ | Property | Value | +----------------------------+--------------------------------------+ | name | gzm | | ram | 1024 | | OS-FLV-DISABLED:disabled | False | | vcpus | 2 | | extra_specs | {u'pci_passthrough:alias': u'a1:2'} | | swap | | | os-flavor-access:is_public | True | | rxtx_factor | 1.0 | | OS-FLV-EXT-DATA:ephemeral | 0 | | disk | 10 | | id | 62686729-aa43-4fc6-99e0-b50bb84e2f60 | +----------------------------+--------------------------------------+
4. Create instance using the flavor above,then you'll see two pci devices have been assigned to the instance and you won't see them on the old compute node.
5. Query pci device in nova DB, you'll see the status of devices applyed to the request changed to "allocated".