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    
Size: Mime:
ó
±EYc@sZdZddlZddlZddlZddlmZddlmZddlm	Z
ddlZddlmZddl
mZddl
mZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZe
jeƒZej j!Z!dZ"d„Z#de$fd„ƒYZ%dS(sVIF drivers for libvirt.iÿÿÿÿN(t	exception(tprocessutils(tlog(t_(t_LE(t	linux_net(tmodel(tos_vif_util(tobjects(tutils(tconfig(tdesigner(tosinfoiiicCsÎitjtjtjtjtjtjgd6tjtjtjtjtjtjgd6tjtjtjtjtjgd6gd6gd6}|dkrŸt	S||krÀt
jd|ƒ‚n|||kS(Ntqemutkvmtxentlxctumltvirt(t
network_modeltVIF_MODEL_VIRTIOtVIF_MODEL_NE2K_PCItVIF_MODEL_PCNETtVIF_MODEL_RTL8139tVIF_MODEL_E1000tVIF_MODEL_SPAPR_VLANtVIF_MODEL_NETFRONTtNonetTrueRtUnsupportedVirtType(t	virt_typet	vif_modeltvalid_models((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytis_vif_model_valid_for_virt2s2



tLibvirtGenericVIFDrivercBs·eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„Zd„Z
ed„ƒZd
„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d „Z#d!„Z$d"„Z%d#„Z&d$„Z'd%„Z(d&„Z)d'„Z*d(„Z+d)„Z,d*„Z-d+„Z.d,„Z/d-„Z0d.„Z1d/„Z2d0„Z3d1„Z4d2„Z5d3„Z6d4„Z7d5„Z8d6„Z9d7„Z:d8„Z;d9„Z<d:„Z=d;„Z>d<„Z?d=„Z@d>„ZAd?„ZBd@„ZCdA„ZDdB„ZEdC„ZFdD„ZGdE„ZHdF„ZIdG„ZJdH„ZKdI„ZLdJ„ZMdK„ZNRS(Ls*Generic VIF driver for libvirt networking.cCs|jddƒS(Ns2.1qt2q(treplace(tselftvif_type((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_normalize_vif_typeUscCs'd|kr|dSd|dtj S(Ntdevnametnictid(RtNIC_NAME_LEN(R%tvif((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_vif_devnameXscCs|j|ƒ}||dS(Ni(R-(R%R,tprefixR(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_vif_devname_with_prefix]scCstjƒ}d}d}d}	|r9tj|ƒj}n|dkri|dkritjjritj	}n|tj	kr|dkrd}nt
||ƒs·tjd|d|ƒ‚n|dkrù|tj	krù|j
||ƒ\}
}	|
pó|}ntj|||||	ƒ|S(NRR
RR(skvmsqemu(tvconfigtLibvirtConfigGuestInterfaceRRtHardwarePropertiesRtCONFtlibvirttuse_virtio_for_bridgesRR!RtUnsupportedHardwaret_get_virtio_mq_settingsRtset_vif_guest_frontend_config(R%tinstancetmact
image_metat	inst_typeRtconfRtdrivertvhost_queuest	vhost_drv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_base_configas2			cCs.tjƒ}|dd}tj||ƒ|S(Ntprofiletpci_slot(R0tLibvirtConfigGuestHostdevPCIRt'set_vif_host_backend_hostdev_pci_config(R%R,R=RC((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_base_hostdev_pci_configŠscCsšd}d}t|tjƒs3tjj|ƒ}n|j}|jdƒrd}|jƒ}|r„|j|krx|n|j}q|j}n||fS(sjA methods to set the number of virtio queues,
           if it has been requested in extra specs.
        thw_vif_multiqueue_enabledtvhostN(	Rt
isinstanceRt	ImageMetat	from_dictt
propertiestgett_get_max_tap_queuestvcpus(R%R;tflavorR>R?t	img_propstmax_tap_queues((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyR7s	cCs[ttjƒdjdƒdƒ}|dkr3dS|dkrCdS|dkrSdSdSdS(	Nit.iiiiii(tinttostunametsplitR(R%tkernel_version((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyRN¤s#cCs|ddS(Ntnetworktbridge((R%R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_bridge_name´scCs|jdƒp|dS(Ntovs_interfaceidR*(RM(R%R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_ovs_interfaceid·scCsd|tj S(Ntqbr(RR+(R%tiface_id((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_br_nameºscCs d|tj d|tj fS(Nsqvb%ssqvo%s(RR+(R%R_((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_veth_pair_names½scCs
tjdkS(Ns%nova.virt.firewall.NoopFirewallDriver(R3tfirewall_driver(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytis_no_op_firewallÁscCs$|jƒrtS|jƒr tStS(N(tis_neutron_filtering_enabledtFalseRcR(R%R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_firewall_requiredÅs
cCs!|jr
tS|jƒrtStS(N(thas_traffic_filteringReRcR(R%R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_firewall_required_os_vifÌs
	c
Csž|j||d|||ƒ}tj||j|ƒ|j|ƒƒ|djddƒ}d|jd|}	|j|ƒrŠ|	|_ntj	||ƒ|S(s'Get VIF configurations for bridge type.taddresst:tsnova-instance-t-(
RARt"set_vif_host_backend_bridge_configR[R-R$tnameRft
filternametset_vif_bandwidth_config(
R%R9R,R;R<RthostR=tmac_idRn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_bridgeÓscCsFtj|ƒ}|j|dƒ|dd<|j||||||ƒS(NR*RYRZ(tcopytdeepcopyR`Rs(R%R9R,R;R<RRqtnewvif((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_ivs_hybridås	c	CsB|j||d|||ƒ}|j|ƒ}tj||ƒ|S(NRi(RAR-Rt$set_vif_host_backend_ethernet_config(	R%R9R,R;R<RRqR=tdev((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_ivs_ethernetðs		cCsW|j|ƒs|jƒr7|j||||||ƒS|j||||||ƒSdS(N(Rftis_hybrid_plug_enabledRwRz(R%R9R,R;R<RRq((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_ivsýsc	Csv|j||d|||ƒ}|d}tj||djdƒ|d|d|d|dƒtj||ƒ|S(	NRit
qbg_paramsRYt	interfacet	manageridttypeidt
typeidversiont
instanceid(RARt"set_vif_host_backend_802qbg_configtget_metaRp(	R%R9R,R;R<RRqR=tparams((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_802qbgs
cCsŠ|j||d|||ƒ}|d}|d}	d}
|dtjkrUd}
ntj||
|d|	tjƒtj||ƒ|S(NRiRBtdetailstdirectt	vnic_typethostdevRC(RARtVNIC_TYPE_DIRECTRt"set_vif_host_backend_802qbh_configtVIF_DETAILS_PROFILEIDRp(R%R9R,R;R<RRqR=RBtvif_detailstnet_type((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_802qbhs

	
cCsŠ|j||d|||ƒ}|d}|d}	d}
|dtjkrUd}
ntj||
|d|	tjƒtj||ƒ|S(NRiRBR‡RˆR‰RŠRC(RARR‹Rtset_vif_host_backend_hw_vebtVIF_DETAILS_VLANRp(R%R9R,R;R<RRqR=RBRŽR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_hw_veb0s

	
cCs
|j|ƒS(N(RF(R%R9R,R;R<RRq((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_hostdev_physicalCsc
Cs|j||d|||ƒ}|d}|jtjƒ}	|jtjƒ}
|jtjƒ}g}|	dkr„|jtjƒn|
dkr£|jtjƒn|dkrÂ|jtjƒnt|ƒdkrót	j
d|dd|ƒ‚ntj||	|
ƒtj
||ƒ|S(NRiR‡itvif_idR*tmissing_params(RARMRtVIF_DETAILS_MACVTAP_SOURCEtVIF_DETAILS_MACVTAP_MODEtVIF_DETAILS_PHYS_INTERFACERtappendtlenRt"VifDetailsMissingMacvtapParametersRt"set_vif_host_backend_direct_configRp(
R%R9R,R;R<RRqR=RŽtmacvtap_srctmacvtap_modetphys_interfaceR–((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_macvtapGs,
	

c	CsR|j||d|||ƒ}|j|ƒ}tj||ƒtj||ƒ|S(NRi(RAR-RRxRp(	R%R9R,R;R<RRqR=Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_iovisorfsc	CsB|j||d|||ƒ}|j|ƒ}tj||ƒ|S(NRi(RAR-RRx(	R%R9R,R;R<RRqR=Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_midonetrs
c	CsB|j||d|||ƒ}|j|ƒ}tj||ƒ|S(NRi(RAR-RRx(	R%R9R,R;R<RRqR=Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_tap|s
cCs`|d}|jtjdƒ}|jtjƒ}|dkrVtjd|dƒ‚n||fS(NR‡tserverR•R*(RMRtVIF_DETAILS_VHOSTUSER_MODEtVIF_DETAILS_VHOSTUSER_SOCKETRRt"VifDetailsMissingVhostuserSockPath(R%R,RŽtmodet	sock_path((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_get_vhostuser_settings†s
		c
Cs||j||d|||ƒ}|j|ƒ\}}	tj|||	ƒ|jtƒsxtjdƒd|_	d|_
n|S(NRis-Queues are not a vhostuser supported feature.(RAR«Rt%set_vif_host_backend_vhostuser_configthas_min_versiontMIN_LIBVIRT_VHOSTUSER_MQtLOGtdebugRtdriver_nameR?(
R%R9R,R;R<RRqR=R©Rª((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_vhostusers
	cCs
|j|ƒS(N(RF(R%R9R,R;R<RRq((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_ib_hostdevŸsc	CsR|j||d|||ƒ}|j|ƒ}tj||ƒtj||ƒ|S(NRi(RAR-RRxRp(	R%R9R,R;R<RRqR=Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytget_config_vrouter£scCsjd|_|j|_|j|_|j|ƒrf|jjddƒ}d|jd|}||_	ndS(NRZRjRksnova-instance-Rl(
Rtbridge_namet
source_devtvif_namet
target_devRhRiR$RnRo(R%R9R,R=RrRn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_set_config_VIFBridge­s	cCs8d|_|j|_|j|_|j|||ƒdS(NRZ(RRµR¶R·R¸t_set_config_VIFPortProfile(R%R9R,R=((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_set_config_VIFOpenVSwitch·s	cCs d|_|jd|jƒdS(Ntopenvswitchtinterfaceid(t	vporttypetadd_vport_paramtinterface_id(R%RBR=((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt%_set_config_VIFPortProfileOpenVSwitch½s		cCsld|jjƒ}t||dƒ}|sXtjdi|jjƒd6|d6ƒ‚n||j|ƒdS(Nt_set_config_s7Unsupported VIF port profile type %(obj)s func %(func)stobjtfunc(tport_profiletobj_nametgetattrRRt
NovaException(R%R9R,R=tprofilefuncRÄ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyRºÂs$c
Cs”|j||j|||ƒ}d|jƒ}t||dƒ}	|	sptjdi|jƒd6|d6ƒ‚n|	|||ƒtj||ƒ|S(s—Get the domain config for a VIF

        :param instance: nova.objects.Instance
        :param vif: os_vif.objects.vif.VIFBase subclass
        :param image_meta: nova.objects.ImageMeta
        :param inst_type: nova.objects.Flavor
        :param virt_type: virtualization type
        :param host: nova.virt.libvirt.host.Host

        :returns: nova.virt.libvirt.config.LibvirtConfigGuestInterface
        RÂs*Unsupported VIF type %(obj)s func %(func)sRÃRÄN(	RARiRÆRÇRRRÈRRp(
R%R9R,R;R<RRqR=tviffuncRÄ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_get_config_os_vifÍs!cCsñ|d}tjdi|d6|d6|d6|d6ƒ|dkrZtjtdƒƒ‚ntj|ƒ}|dk	r‘|j||||||ƒS|j	|ƒ}	t
|d|	dƒ}
|
sØtjtd	ƒ|ƒ‚n|
||||||ƒS(
NttypesOvif_type=%(vif_type)s instance=%(instance)s vif=%(vif)s virt_type=%(virt_type)sR&R9R,RsEvif_type parameter must be present for this vif_driver implementations
get_config_%ssUnexpected vif_type=%s(R¯R°RRRÈRRtnova_to_osvif_vifRËR'RÇ(R%R9R,R;R<RRqR&tvif_objtvif_slugRÄ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt
get_configìs$
	
c

Csï|j|ƒ}|j|dƒ}|j|dƒ\}}tj|ƒstjdd|dtƒtjdd|ddtƒtjdd|ddtƒtjd	d
|dddtd
ddgƒd|}tj	j
|ƒrtjd	|dddtd
ddgƒqntj|ƒsë|djdƒ}	tj|||	ƒtjddd|ddtƒtjdd||dtƒ|dkr¼tj
|j|ƒ|||d|j|	ƒqë|dkrëtj|||d|jƒqëndS(NR*tbrctltaddbrtrun_as_roottsetfditstptoffttees+/sys/class/net/%s/bridge/multicast_snoopingt
process_inputt0tcheck_exit_codeis'/proc/sys/net/ipv6/conf/%s/disable_ipv6t1RYtmtutiptlinktsettuptaddiftovsRitivs(R]R`RaRt
device_existsR	texecuteRRUtpathtexistsR„t_create_veth_pairtcreate_ovs_vif_portR[tuuidtcreate_ivs_vif_port(
R%R9R,tportR_tbr_nametv1_nametv2_nametdisv6RÜ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_plug_bridge_with_port	sB	

	

cCs|j||ddƒdS(s=Plug using hybrid strategy

        Create a per-VIF linux bridge, then link that bridge to the OVS
        integration bridge via a veth device, setting up the other end
        of the veth device just like a normal OVS port.  Then boot the
        VIF on the linux bridge using standard libvirt mechanisms.
        RìRâN(Rñ(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_ovs_hybrid.scCsL|j|ƒ}|j|ƒ}tj|ƒtj|||d|jƒdS(NRi(R]R-Rtcreate_tap_devRëRê(R%R9R,R_Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_ivs_ethernet8s

cCs|j||ddƒdS(sKPlug using hybrid strategy (same as OVS)

        Create a per-VIF linux bridge, then link that bridge to the OVS
        integration bridge via a veth device, setting up the other end
        of the veth device just like a normal IVS port.  Then boot the
        VIF on the linux bridge using standard libvirt mechanisms.
        RìRãN(Rñ(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_ivs_hybrid?scCsB|j|ƒs|jƒr.|j||ƒn|j||ƒdS(N(RfR{RõRô(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_ivsIsc
Cs±|jƒ}|s/tjd|ddƒ‚n|dd}|d}|d}y,tjdd	|||tj|d
tƒWn-tj	k
r¬t
jtdƒd|ƒnXdS(
Ntnetwork_uuidRYR*RBRCRêRitebrctlsadd-portRÓs$Failed while plugging ib hostdev vifR9(tget_physical_networkRtNetworkMissingPhysicalNetworkR	RåRtVIF_TYPE_IB_HOSTDEVRRtProcessExecutionErrorR¯R(R%R9R,tfabricRCt	device_idtvnic_mac((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_ib_hostdevOs	

	cCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_802qbgbscCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_802qbhescCsJ|dtjkrFtj|ddd|dd|dtjƒndS(NR‰RBRCtmac_addrRitvlanR‡(RtVNIC_TYPE_MACVTAPRtset_vf_interface_vlanR’(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_hw_vebhs

cCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_hostdev_physicaloscCsf|d}|jtjƒ}|rb|jtjƒ}|jtjƒ}tjj||d|ƒndS(NR‡R~(RMRR’R—R™RtLinuxBridgeInterfaceDrivertensure_vlan(R%R9R,RŽRt	vlan_nametphys_if((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_macvtaprs
	cCsz|j|ƒ}|d}y-tj|ƒtjdd||dtƒWn-tjk
rutj	t
dƒd|ƒnXdS(sZPlug into MidoNet's network port

        Bind the vif to a MidoNet virtual port.
        R*smm-ctls--bind-portRÓsFailed while plugging vifR9N(R-RRóR	RåRRRüR¯RR(R%R9R,Rytport_id((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_midonet|s

cCsÈ|j|ƒ}|d}tj|ƒ|dd}|j}yWtjddd|dtƒtjddd|d||d	d
|d|dtƒ	Wn-tjk
rÃt	j
tdƒd
|ƒnXdS(sPlug using PLUMgrid IO Visor Driver

        Connect a network device to their respective
        Virtual Domain in PLUMgrid Platform.
        R*RYtifc_ctltgatewaytadd_portRÓtifupt	access_vmRis	pgtag2=%ss	pgtag1=%ssFailed while plugging vifR9N(R-RRót
project_idR	RåRRRüR¯RR(R%R9R,RyR_tnet_idt	tenant_id((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_iovisorŠs

	
cCss|j|ƒ}|djtjƒ}tj||ƒ|jdƒ}|rY|jdƒnd}tj||ƒdS(s&Plug a VIF_TYPE_TAP virtual interface.R‡RYRÜN(	R-RMRtVIF_DETAILS_TAP_MAC_ADDRESSRRóR„Rt_set_device_mtu(R%R9R,RyR:RYRÜ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_tapŸsc
CsR|j|ƒ}tj|ƒr"dS|djtjtƒ}|j|ƒ\}}|dkrbdnd}y¶tj|||ƒ|r|j	ƒrÌ|j
||ƒtjdd|j
|dƒ|dtƒq|j|ƒ}|d	jd
ƒ}	tj|j|ƒ|||d|j|	ƒnWn-tjk
rMtjtdƒd
|ƒnXdS(s7Create a fp netdevice interface with a vhostuser socketNR‡R¥tclientRÑRáR*RÓRYRÜRisFailed while plugging vifR9(R-RRäRMRtVIF_DETAILS_VHOSTUSER_OVS_PLUGReR«t
create_fp_devR{RòR	RåR`RR]R„RéR[RêRRüR¯RR(
R%R9R,Rytovs_plugt
sockmode_qemutsockpatht
sockmode_portR_RÜ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_vhostuser_fp¨s0
	c	Csx|j|ƒ}tjj|dtjƒ}|djdƒ}tj|j	|ƒ|||d|j
|dtjƒdS(s,Plug a VIF_TYPE_VHOSTUSER into an ovs bridgeR‡RYRÜRitinterface_typeN(R]RURætbasenameRR§R„RRéR[RêtOVS_VHOSTUSER_INTERFACE_TYPE(R%R9R,R_t	port_nameRÜ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_vhostuser_ovsÇs	
cCsh|djtjtƒ}|djtjtƒ}|rK|j||ƒn|rd|j||ƒndS(NR‡(RMRtVIF_DETAILS_VHOSTUSER_FP_PLUGReRR#R((R%R9R,tfp_plugR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_vhostuserÓs
	
	c
Cs|j|ƒ}d}d}|dd}xœ|D]”}|dsFq0n|dd}|dsdq0n|ddkr”|ddk	r”|d}q”n|dd	kr0|ddk	rÄ|d}qÄq0q0Wd
}	tjjdkréd}	nd
|d|j|dd|j|||j|d|d|	ddf}
y'tj	|ƒt
jd|
dtƒWn-t
jk
rŠtjtdƒd|ƒnXdS(s\Plug into Contrail's network port

        Bind the vif to a Contrail virtual port.
        s0.0.0.0RYtsubnetstipsiRitversioniit
NovaVMPortRt
NameSpacePorts¾--oper=add --uuid=%s --instance_uuid=%s --vn_uuid=%s --vm_project_uuid=%s --ip_address=%s --ipv6_address=%s --vm_name=%s --mac=%s --tap_name=%s --port_type=%s --tx_vlan_id=%d --rx_vlan_id=%dR*R(iÿÿÿÿsvrouter-port-controlRÓsFailed while plugging vifR9N(R-RR3R4RRêRtdisplay_nameRRóR	RåRRRüR¯RR(R%R9R,Rytip_addrtip6_addrR,tsubnetR-tptypetcmd_args((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytplug_vrouterßs<


	

cCsDtj|ƒ}ytj||ƒWn<tjk
ra}tdƒi|d6}tj|ƒ‚nX|j	dƒ}|r†|j
dƒnd}|dk	r¯tj
|d|ƒnt|ƒtjjjkr@t|dƒr@t|jtjjjƒr@d|jtj d|jtj g}	x!|	D]}
tj
|
|ƒq#WndS(	Ns1Failure running os_vif plugin plug method: %(ex)stexRYRÜRZRÅsqvb%ssqvo%s(Rtnova_to_osvif_instancetos_viftplugt
osv_exceptiont
ExceptionBaseRRRÈRMR„RRRRÌRR,t	VIFBridgethasattrRIRÅtVIFPortProfileOpenVSwitchR*RR+(R%R9R,traw_vift
instance_infoR8tmsgRYRÜtvethstveth((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_plug_os_vifs&		
cCsÝ|d}tjdi|d6|d6|d6ƒ|dkrStjtdƒƒ‚ntj|ƒ}|dk	r…|j|||ƒdS|j	|ƒ}t
|d|dƒ}|sÌtjtdƒ|ƒ‚n|||ƒdS(	NRÌs7vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)sR&R9R,sEvif_type parameter must be present for this vif_driver implementationsplug_%ss1Plug vif failed because of unexpected vif_type=%s(R¯R°RRtVirtualInterfacePlugExceptionRRRÍRFR'RÇ(R%R9R,R&RÎRÏRÄ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyR;!s$
		
cCsãy¯|j|dƒ}|j|dƒ\}}tj|ƒr•tjdd||dtƒtjddd|ddtƒtjdd	|dtƒntj|j|ƒ|ƒWn-t	j
k
rÞtjt
d
ƒd|ƒnXdS(
s’UnPlug using hybrid strategy

        Unhook port from OVS, unhook port from bridge, delete
        bridge, and delete both veth devices.
        R*RÑtdelifRÓRÝRÞRßtdowntdelbrsFailed while unplugging vifR9N(R`RaRRäR	RåRtdelete_ovs_vif_portR[RRüR¯RR(R%R9R,RíRîRï((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_ovs_hybrid=s
cCsNytj|j|ƒƒWn-tjk
rItjtdƒd|ƒnXdS(s4Unplug the VIF by deleting the port from the bridge.sFailed while unplugging vifR9N(Rtdelete_ivs_vif_portR-RRüR¯RR(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_ivs_ethernetUs
cCsÅy‘|j|dƒ}|j|dƒ\}}tjdd||dtƒtjddd|ddtƒtjdd	|dtƒtj|ƒWn-tjk
rÀt	j
td
ƒd|ƒnXdS(
s UnPlug using hybrid strategy (same as OVS)

        Unhook port from IVS, unhook port from bridge, delete
        bridge, and delete both veth devices.
        R*RÑRHRÓRÝRÞRßRIRJsFailed while unplugging vifR9N(R`RaR	RåRRRMRRüR¯RR(R%R9R,RíRîRï((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_ivs_hybrid]scCsB|j|ƒs|jƒr.|j||ƒn|j||ƒdS(N(RfR{RORN(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt
unplug_ivspscCs„|jƒ}|s/tjd|ddƒ‚n|d}y tjdd||dtƒWn$tk
rtjtdƒƒnXdS(	NR÷RYR*RiRøsdel-portRÓs&Failed while unplugging ib hostdev vif(	RùRRúR	RåRt	ExceptionR¯R(R%R9R,RýRÿ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_ib_hostdevvs	

cCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt
unplug_802qbgƒscCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt
unplug_802qbh†scCs9|dtjkr5tj|ddd|dƒndS(NR‰RBRCRRi(RRRR(R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt
unplug_hw_veb‰scCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_hostdev_physical‘scCsdS(N((R%R9R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_macvtap”scCsw|j|ƒ}|d}y*tjdd|dtƒtj|ƒWn-tjk
rrtj	t
dƒd|ƒnXdS(s^Unplug from MidoNet network port

        Unbind the vif from a MidoNet virtual port.
        R*smm-ctls
--unbind-portRÓsFailed while unplugging vifR9N(R-R	RåRRtdelete_net_devRRüR¯RR(R%R9R,RyR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_midonet—s
cCsT|j|ƒ}ytj|ƒWn-tjk
rOtjtdƒd|ƒnXdS(s(Unplug a VIF_TYPE_TAP virtual interface.sFailed while unplugging vifR9N(R-RRXRRüR¯RR(R%R9R,Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt
unplug_tap¦scCsŒ|j|ƒ}yItjddd|dtƒtjddd|dtƒtj|ƒWn-tjk
r‡tj	t
dƒd|ƒnXdS(	s¤Unplug using PLUMgrid IO Visor Driver

        Delete network device and to their respective
        connection to the Virtual Domain in PLUMgrid Platform.
        RRtifdownRÓtdel_portsFailed while unplugging vifR9N(R-R	RåRRRXRRüR¯RR(R%R9R,Ry((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_iovisor¯s
cCs±|j|ƒ}|djtjtƒ}yU|ro|jƒrP|j||ƒqotj|j	|ƒ|tƒntj
|ƒWn-tjk
r¬t
jtdƒd|ƒnXdS(s7Delete a fp netdevice interface with a vhostuser socketR‡sFailed while unplugging vifR9N(R-RMRRReR{RLRRKR[t
delete_fp_devRRüR¯RR(R%R9R,RyR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_vhostuser_fpÀs
	
cCs:tjj|dtjƒ}tj|j|ƒ|ƒdS(s.Unplug a VIF_TYPE_VHOSTUSER into an ovs bridgeR‡N(RURæR%RR§RRKR[(R%R9R,R'((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_vhostuser_ovsÓs	cCsh|djtjtƒ}|djtjtƒ}|rK|j||ƒn|rd|j||ƒndS(NR‡(RMRR)ReRR_R`(R%R9R,R*R((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_vhostuserÚs
	
	cCsx|j|ƒ}d|d}y'tjd|dtƒtj|ƒWn-tjk
rstj	t
dƒd|ƒnXdS(s]Unplug Contrail's network port

        Unbind the vif from a Contrail virtual port.
        s--oper=delete --uuid=%sR*svrouter-port-controlRÓsFailed while unplugging vifR9N(R-R	RåRRRXRRüR¯RR(R%R9R,RyR6((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pytunplug_vrouteræscCsftj|ƒ}ytj||ƒWn<tjk
ra}tdƒi|d6}tj|ƒ‚nXdS(Ns3Failure running os_vif plugin unplug method: %(ex)sR8(	RR9R:tunplugR<R=RRRÈ(R%R9R,RBR8RC((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt_unplug_os_vifôs	cCsÚ|d}tjdi|d6|d6|d6ƒ|dkrStjtdƒƒ‚ntj|ƒ}|dk	r‚|j||ƒdS|j	|ƒ}t
|d|dƒ}|sÉtjtdƒ|ƒ‚n|||ƒdS(	NRÌs7vif_type=%(vif_type)s instance=%(instance)s vif=%(vif)sR&R9R,sEvif_type parameter must be present for this vif_driver implementations	unplug_%ssUnexpected vif_type=%s(R¯R°RRRÈRRRÍRdR'RÇ(R%R9R,R&RÎRÏRÄ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyRcþs"
	(Ot__name__t
__module__t__doc__R'R-R/RARFR7RNR[R]R`RatstaticmethodRcRfRhRsRwRzR|R†RR“R”R¡R¢R£R¤R«R²R³R´R¹R»RÁRºRËRÐRñRòRôRõRöRRRRRR
RRRR#R(R+R7RFR;RLRNRORPRRRSRTRURVRWRYRZR]R_R`RaRbRdRc(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyR"Rs˜				)												
								
	
	
			
	
						%	
		
							
								(							
														
(iii(&RgRtRUR:RR<toslo_concurrencyRtoslo_logRtloggingt	nova.conftnovat	nova.i18nRRtnova.networkRRRRRR	tnova.virt.libvirtR
R0Rt	nova.virtRt	getLoggerReR¯R=R3R®R!tobjectR"(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/vif.pyt<module>s.