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 / virt / firewall.pyc
Size: Mime:
ó
±EYc@sddlmZddlmZddlmZddlZ	ddl	m
Z
ddlmZddl
mZddl	mZddl	mZdd	lmZejeƒZe	jjZd
„Zdefd„ƒYZd
efd„ƒYZdefd„ƒYZdS(iÿÿÿÿ(tlog(timportutils(tutilsN(tcontext(t_LI(t	linux_net(tobjects(tnetutilscOs%tjtjp|ƒ}|||ŽS(N(Rtimport_classtCONFtfirewall_driver(tdefaulttargstkwargstfw_class((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytload_driver#stFirewallDrivercBs_eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„ZRS(
srFirewall Driver base class.

    Defines methods that any driver providing security groups should implement.

    cCs
tƒ‚dS(sbPrepare filters for the instance.

        At this point, the instance isn't running yet.
        N(tNotImplementedError(tselftinstancetnetwork_info((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytprepare_instance_filter.scCsdS(s$Defer application of IPTables rules.N((R((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytfilter_defer_apply_on5scCsdS(s<Turn off deferral of IPTables rules and apply the rules now.N((R((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytfilter_defer_apply_off9scCs
tƒ‚dS(sStop filtering instance.N(R(RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytunfilter_instance=scCs
tƒ‚dS(sApply instance filter.

        Once this method returns, the instance should be firewalled
        appropriately. This method should as far as possible be a
        no-op. It's vastly preferred to get everything set up in
        prepare_instance_filter.
        N(R(RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytapply_instance_filterAscCs
tƒ‚dS(s”Refresh security group rules from data store

        Gets called when a rule has been added to or removed from
        the security group.
        N(R(Rtsecurity_group_id((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytrefresh_security_group_rulesKscCs
tƒ‚dS(sßRefresh security group rules from data store

        Gets called when an instance gets added to or removed from
        the security group the instance is a member of or if the
        group gains or loses a rule.
        N(R(RR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytrefresh_instance_security_rulesSscCs
tƒ‚dS(s Create rules to block spoofing and allow dhcp.

        This gets called when spawning an instance, before
        :py:meth:`prepare_instance_filter`.

        N(R(RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytsetup_basic_filtering\scCs
tƒ‚dS(s(Check nova-instance-instance-xxx exists.N(R(RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pytinstance_filter_existses(t__name__t
__module__t__doc__RRRRRRRRR(((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR(s					
					tIptablesFirewallDrivercBseZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„Zd„Z
d„Zd
„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zejddeƒd„ƒZd„Zd„Z RS(s=Driver which enforces security groups through iptables rules.cKstj|_i|_t|_t|_|jjdjdƒ|jjdj	ddƒ|jj
djdƒ|jj
dj	ddƒdS(Ntfilterssg-fallbacks-j DROP(Rtiptables_managertiptablest
instance_infotFalsetdhcp_createtdhcp_createdtipv4t	add_chaintadd_ruletipv6(RR
((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt__init__ms			cCsdS(N((RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRzscCsdS(s5No-op. Everything is done in prepare_instance_filter.N((RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR}scCs|jjƒdS(N(R%tdefer_apply_on(R((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRscCs|jjƒdS(N(R%tdefer_apply_off(R((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR„scCsR|jj|jdƒr5|j|ƒ|jjƒntjt	dƒd|ƒdS(Ns4Attempted to unfilter instance which is not filteredR(
R&tpoptidtNonetremove_filters_for_instanceR%tapplytLOGtinfoR(RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR‡s

cCsÁ||f|j|j<|j||ƒ\}}|j||||ƒtjd|jd|ƒ|jr°|jr°|jj	dj
ddƒ|jj	dj
ddƒt|_n|jjƒdS(NsFilters added to instance: %sRR#tINPUTsQ-s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPTtFORWARD(
R&R2tinstance_rulestadd_filters_for_instanceR6tdebugR(R)R%R*R,tTrueR5(RRRt
ipv4_rulest
ipv6_rules((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRscCs!g|D]}d||f^qS(Ns-d %s -j $%s((Rtipst
chain_nametip((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_create_filter£scCssg}xf|D]^}d|kr
d|dkr
x9|ddD]&}|d|kr>|j|ƒq>q>Wq
q
W|S(Ntnetworktsubnetstversion(tappend(RRRFREtviftsubnet((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_get_subnets¦s
cCsÍ|j|dƒ}|j|dƒ}g|D]!}|dD]}|d^q9q+}|j||ƒ}g}	}
tjrÃ|r®g|D]!}|dD]}|d^q’q„}
n|j|
|ƒ}	n||	fS(s©Creates a rule corresponding to each ip that defines a
           jump to the corresponding instance - chain for all the traffic
           destined to that ip.
        iiR@taddress(RJRCR	tuse_ipv6(RRARt
v4_subnetst
v6_subnetsRIRBtips_v4R>R?tips_v6((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_filters_for_instance¯s
!
	
$cCsfx(|D] }|jjdj||ƒqWtjrbx+|D] }|jjdj||ƒq;WndS(NR#(R%R*R,R	RLR-(RRAR>R?trule((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_add_filtersÃs

	
cCs‹|j|ƒ}tjr2|jjdj|ƒn|jjdj|ƒ|j||ƒ\}}|jd||ƒ|j|||ƒdS(NR#tlocal(	t_instance_chain_nameR	RLR%R-R+R*RQRS(RRRtinst_ipv4_rulestinst_ipv6_rulesRAR>R?((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR;Ës		cCsM|j|ƒ}|jjdj|ƒtjrI|jjdj|ƒndS(NR#(RUR%R*tremove_chainR	RLR-(RRRA((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR4Ös	cCsd|jfS(Nsinst-%s(R2(RR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRUÝscCs8|dg7}|dg7}|dg7}|dg7}dS(Ns -m state --state INVALID -j DROPs.-m state --state ESTABLISHED,RELATED -j ACCEPT((RR>R?R((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_do_basic_rulesàs


cCs~|j|dƒ}g|D]$}|jdƒr|jdƒ^q}x4|D],}|rJ|jd|fƒt|_qJqJWdS(Nitdhcp_servers,-s %s -p udp --sport 67 --dport 68 -j ACCEPT(RJtget_metaRGR=R((RR>RRMRItdhcp_serversRZ((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_do_dhcp_rulesés.
	cCs¸|j|dƒ}|j|dƒ}g|D]}|d^q+}x"|D]}|jd|fƒqHWtjr´g|D]}|d^qv}	x%|	D]}
|jd|
fƒq“WndS(Niitcidrs-s %s -j ACCEPT(RJRGR	RL(RR>R?RRMRNRItcidrsR^tcidrv6stcidrv6((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_do_project_network_rulesôs
	
cCs\|j|dƒ}g|D]}|dd^q}x"|D]}|jd|fƒq:WdS(NitgatewayRKs-s %s/128 -p icmpv6 -j ACCEPT(RJRG(RR?RRNRItgateways_v6t
gateway_v6((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_do_ra_rulesÿs
!
cCs“|j}|j}|dkr'd}n'd|}|dksN|d|7}n|r|dkrpddd|gS|dkrdd	d
|gSngS(Niÿÿÿÿs%ss/%sis-mticmps--icmp-typeiticmp6s
--icmpv6-type(t	from_porttto_portR3(RRRRFt	icmp_typet	icmp_codet
icmp_type_arg((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_build_icmp_rules			
cCsJ|j|jkr&dd|jfgSdddd|j|jfgSdS(Ns--dports%ss-mt	multiports--dportss%s:%s(RiRj(RRRRF((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_build_tcp_udp_rules
cCs!tjƒ}t|tƒr?tjj|tjƒ|gƒ}ng}g}|j|||ƒ|j||ƒt	j
r|j|||ƒnt	jr©|j
||ƒntjj||ƒ}x|D]}|jsÝd}ntj|jƒ}|dkr|}	n|}	|j}
|
r+|jjƒ}
n|dkrL|
dkrLd}
ndg}|
rn|d|
g7}n|
dkr“||j||ƒ7}n%|
dkr¸||j||ƒ7}n|jró|d	t|jƒg7}|	d
j|ƒg7}	qÅ|jrÅtjj||jƒ}xÀ|D]µ}
|
jjr@tjdƒqnt j!|
ƒ}g|j"ƒD] }|d|kr\|d
^q\}tjd|d|
ƒx5|D]-}|d|g}|	d
j|ƒg7}	qŸWqWqÅqÅW|dg7}|dg7}tjdt#|ƒ||d|ƒ||fS(NiiRgticmpv6s	-j ACCEPTs-ptudpttcps-st signoring deleted cacheRFRKsips: %rRs-s %ss-j $sg-fallbacks8Security Group Rules %s translated to ipv4: %r, ipv6: %r(sudpstcp($Rtget_admin_contextt
isinstancetdictRtInstancet_from_db_objectRYR]R	tallow_same_net_trafficRbRLRftSecurityGroupRuleListtget_by_instanceR^Rtget_ip_versiontprotocoltlowerRpRntstrtjoint
grantee_grouptInstanceListtget_by_security_groupt
info_cachetdeletedR6R<t
compute_utilstget_nw_info_for_instancet	fixed_ipstlist(RRRtctxtR>R?trulesRRRFtfw_rulesR~Rtinststinsttnw_infoRBR@tsubrule((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR:"sr		
	
									

	 
%

	cCsdS(N((RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRxscCs|j|ƒ|jjƒdS(N(tdo_refresh_security_group_rulesR%R5(Rtsecurity_group((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR{s
cCs|j|ƒ|jjƒdS(N(tdo_refresh_instance_rulesR%R5(RR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRs
R%texternalcCso|j|ƒ}|jjdj|ƒsHtjtdƒ|d|ƒdS|j|ƒ|j||||ƒdS(NR#s6instance chain %s disappeared during refresh, skippingR(	RUR%R*t	has_chainR6R7RR4R;(RRRR>R?RA((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_inner_do_refresh_rulesƒs	
cCs€|jjƒ}xj|D]b}y|j|\}}Wntk
rIqnX|j||ƒ\}}|j||||ƒqWdS(N(R&tkeystKeyErrorR:R—(RR“tid_listtinstance_idRRR>R?((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR’‘s

	cCsH|j|j\}}|j||ƒ\}}|j||||ƒdS(N(R&R2R:R—(RRt	_instanceRR>R?((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR”Ÿs(!RR R!R.RRRRRRRCRJRQRSR;R4RURYR]RbRfRnRpR:RRRRtsynchronizedR=R—R’R”(((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR"js8	
																						V				tNoopFirewallDrivercBs2eZdZd„Zd„Zd„Zd„ZRS(s2Firewall driver which just provides No-op methods.cOsdS(N((RRR
((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR.¨scOsdS(N((RRR
((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt_noop«scCs|jS(N(RŸ(Rtkey((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt__getattr__®scCstS(N(R=(RRR((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyR±s(RR R!R.RŸR¡R(((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyRž¦s
			(toslo_logRtloggingt
oslo_utilsRtnova.computeRR‡t	nova.conftnovaRt	nova.i18nRtnova.networkRRt	nova.virtRt	getLoggerRR6tconfR	RtobjectRR"Rž(((sG/home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/firewall.pyt<module>s 	Bÿ=