Jump to: navigation, search

Difference between revisions of "PCI configration Database and API"

(API for whitelist)
 
(46 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
+
merge back to:
===API for whitelist===
+
https://wiki.openstack.org/wiki/PCI_passthrough_SRIOV_support
not only the whitelist, the alias API also meaningful for administrator's pespective.  the horizon could utilized the alias db to find what kind of device is avaliable to the tenants.
 
 
 
white list/ alias/ group on demand is all some kind of (k, v) pairs, PCI API can exploit  this to achive high flexibility.
 
 
 
here is the very draft idea about API.
 
 
 
# Numbered list item
 
1)  if database is not NULL ,configration is ommit and given deprecated  warning.
 
2)  after next use the config, change take effect.
 
 
 
===DB for pci configration===
 
  talbe: pci_config{
 
                id
 
                compute_node_id
 
                object : whitelist/alias/group on demand
 
                key
 
                value
 
                value_type:  string, RE, list  # for further enhancement
 
            }
 
 
 
alias and on-demand group key is  global.
 
 
 
DB API:
 
    pci_config_get(context, obj_name):
 
 
 
    pci_config_get_by_node(context, obj_name, node_id):
 
 
 
    pci_config_update(context, obj_name, node_id, vlaues):
 
        update the one object one time, ie, the white list on host "A":  pci_config_update(context, 'whitelist', "A", {"vendor_id":"v1", "proudect_id":"p1", "address":"a1"  }):
 
 
 
===PCI releated Objects===
 
  Objects: white list/ alias/ group keys(on demand grop)
 
  objects property:  sets of k,v
 
   
 
===API interface===
 
    config-object-name:  whitelist/alias/group
 
 
 
    GET/v2/​{tenant_id}​/os-pci-config
 
    show the pci configraion objects name.
 
    {"pci_config": ['alias', 'whitelist', 'group']}
 
 
 
    GET/v2/​{tenant_id}​/os-pci-config/{config-object-name}
 
    show the pci configraion object's detail
 
    i.e {config-object-name} is pci_alias:
 
      {"pci_alias": [{'product_id':'8086', 'group':'nic-g1', 'compute-node-id':""}]}
 
 
    GET/v2/​{tenant_id}​/os-pci-config/{config-object-name}/{compute-node-id'}
 
    show the pci configraion object's detail
 
    i.e {config-object-name} is pci_whitelist:
 
      {"pci_whitelist": {'product_id':'8086', 'group':'nic-g1', 'compute-node-id':"3"}}
 
 
 
 
 
    PUT/v2/​{tenant_id}​/os-pci-config/{config-object-name}/{compute-node-id}
 
    ie.   i.e {config-object-name} is pci_whitelist:
 
    {"pci_whitelist": {'product_id':'8086', 'address':'a1' , 'group':'nic-g1'}}
 
    PUT/v2/​{tenant_id}​/os-pci-config/{config-object-name}/
 
    change a global configration.
 
   
 
    DELETE/v2/​{tenant_id}​/os-pci-config/{config-object-name}/{compute_node_id}
 
    DELETE/v2/​{tenant_id}​/os-pci-config/{config-object-name}/
 
 
 
  UPDATE//v2/​{tenant_id}​/os-pci-config/{config-object-name}/
 
  UPDATE//v2/​{tenant_id}​/os-pci-config/{config-object-name}/{compute_node_id}
 
    make config 'config-object-name' take effect.
 

Latest revision as of 06:31, 11 December 2013

merge back to: https://wiki.openstack.org/wiki/PCI_passthrough_SRIOV_support