Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
contego / home / tvault / .virtenv / lib / python2.7 / site-packages / nova / pci / request.pyc
Size: Mime:
ó
±EYc@s¸dZddlZddlZddlmZddlZddlZddlmZddl	m
Z
ddlmZ
ddlmZddlmZdd	lmZd
ZdZiejje
j6ZejjZejjejjejjgZdgZid
d6e d6iidd6dd6dd6d6idd6ed6d6idd6ej!d6d6idd6ej!d6d6idd6ed6d6d6dgd6Z"d„Z#d„Z$d „Z%dS(!sG Example of a PCI alias::

        | pci_alias = '{
        |   "name": "QuicAssist",
        |   "product_id": "0443",
        |   "vendor_id": "8086",
        |   "device_type": "type-PCI",
        |   }'

    Aliases with the same name and the same device_type are OR operation::

        | pci_alias = '{
        |   "name": "QuicAssist",
        |   "product_id": "0442",
        |   "vendor_id": "8086",
        |   "device_type": "type-PCI",
        |   }'

    These 2 aliases define a device request meaning: vendor_id is "8086" and
    product id is "0442" or "0443".

    iÿÿÿÿN(t	jsonutils(t	exception(t_(tmodel(tobjects(tfields(tutilstphysical_networktdev_typetpcitobjectttypetadditionalPropertieststringit	minLengthit	maxLengthtnametenumtcapability_typetpatternt
product_idt	vendor_idtdevice_typet
propertiestrequiredcCs6tj}i}yÜxÕ|D]Í}tj|ƒ}tj|tƒ|jdƒjƒ}|jddƒ}|rx||d<n||kr”|g||<q||dd|dkrÄ||j
|ƒqtdƒ|}tj
d|ƒ‚qWWnDtj
k
r‚n.tk
r1}tj
dtj|ƒƒ‚nX|S(s4Parse and validate PCI aliases from the nova config.RRRis#Device type mismatch for alias '%s'treasonN(tCONFt	pci_aliasRtloadst
jsonschematvalidatet
_ALIAS_SCHEMAtpoptstriptNonetappendRRtPciInvalidAliast	Exceptiontsixt	text_type(tjaliasestaliasest	jsonspecstspecRRRte((sE/home/tvault/.virtenv/lib/python2.7/site-packages/nova/pci/request.pyt_get_alias_from_configbs*	

cCsºtƒ}g}x¤g|jdƒD]}|jdƒ^q"D]w\}}|jƒ}||krttjd|ƒ‚q;tjdt|ƒdtj	||ƒd|ƒ}|j
|ƒq;W|S(s>Generate complete pci requests from pci aliases in extra_spec.t,t:taliastcountR+t
alias_name(R-tsplitR!RtPciRequestAliasNotDefinedRtInstancePCIRequesttinttcopytdeepcopyR#(t
alias_spectpci_aliasestpci_requestsR+RR1trequest((sE/home/tvault/.virtenv/lib/python2.7/site-packages/nova/pci/request.pyt_translate_alias_to_requestss	8		cCsIg}d|kr9d|dkr9t|ddƒ}ntjd|ƒS(sGet flavor's pci request.

    The pci_passthrough:alias scope in flavor extra_specs
    describes the flavor's pci requests, the key is
    'pci_passthrough:alias' and the value has format
    'alias_name_x:count, alias_name_y:count, ... '. The alias_name is
    defined in 'pci_alias' configurations.

    The flavor's requirement is translated into pci requests list,
    each entry in the list is a dictionary. The dictionary has
    three keys. The 'specs' gives the pci device properties
    requirement, the 'count' gives the number of devices, and the
    optional 'alias_name' is the corresponding alias definition name.

    Example:
    Assume alias configuration is::

        |   {'vendor_id':'8086',
        |    'device_id':'1502',
        |    'name':'alias_1'}

    The flavor extra specs includes: 'pci_passthrough:alias': 'alias_1:2'.

    The returned pci_requests are::

        | pci_requests = [{'count':2,
        |                'specs': [{'vendor_id':'8086',
        |                           'device_id':'1502'}],
        |                'alias_name': 'alias_1'}]

    :param flavor: the flavor to be checked
    :returns: a list of pci requests
    textra_specsspci_passthrough:aliastrequests(R=RtInstancePCIRequests(tflavorR;((sE/home/tvault/.virtenv/lib/python2.7/site-packages/nova/pci/request.pytget_pci_requests_from_flavor”s"(&t__doc__R7Rtoslo_serializationRR&t	nova.conftnovaRt	nova.i18nRtnova.networkRt
network_modelRtnova.objectsRt
obj_fieldstnova.pciRtPCI_NET_TAGtPCI_DEVICE_TYPE_TAGt
PciDeviceTypetSRIOV_PFtVNIC_TYPE_DIRECT_PHYSICALtDEVICE_TYPE_FOR_VNIC_TYPEtconfRtSTANDARDtSRIOV_VFt_ALIAS_DEV_TYPEt_ALIAS_CAP_TYPEtFalsetPCI_VENDOR_PATTERNRR-R=RB(((sE/home/tvault/.virtenv/lib/python2.7/site-packages/nova/pci/request.pyt<module>%sX