�
��Xc@s�ddlZddlmZmZddlmZddlmZmZdefd��YZ de fd��YZ
d e fd
��YZdS(i����N(tArgtMutuallyExclusiveArgList(t
ArgumentError(t
EC2Requesttparse_portst_ModifySecurityGroupRulecBs1eZdZeddddd,dd�eddd dd,dd
�eddd
ddddddd�eddd
ddddd,dd�eddd
ddddd,dd�eeddddd
d dd!�ed"d
d#dddd,dd$��ed%dd&d
d'dd(�gZd)�Zd*�Zd+�Z RS(-s7
The basis for security group-editing commands
tgrouptmetavartGROUPtroute_tothelps5name or ID of the security group to modify (required)s--egresstactiont
store_truesZ[VPC only] manage an egress rule, which controls
traffic leaving the groups-Ps
--protocoltdestsIpPermissions.1.IpProtocoltPROTOCOLtdefaultttcps�the protocol to affect (Non-VPC: tcp, udp, icmp)
(VPC only: tcp, udp, icmp, -1/all, other protocol numbers)
(default: tcp)s-ps--port-ranget
port_rangetRANGEsjrange of ports (specified as "from-to")
or a single port number (required for tcp and udp)s-ts--icmp-type-codeticmp_type_codes TYPE:CODEsQICMP type and
code (specified as "type:code") (required for icmp)s-ss--cidrtCIDRs!IpPermissions.1.IpRanges.1.CidrIpsIP range (default: 0.0.0.0/0)s-ottarget_groupsf[Non-VPC only] name of a security group with which
to affect network communications-utACCOUNTsIpPermissions.1.Groups.1.UserIdsPID of the account that owns the security group
specified with -ocCs|j�dS(N(tprocess_port_cli_args(tself((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pytprocess_cli_argsDscCs;tj|�|jdjd�r:|jd|jd<n0|jdrVtd��n|jd|jd<|jjd�}|dk r�|jd�r�||jd<q�|jdr�td ��n||jd
<n|jjd�}t|�j �dkrJt
||jjd�|jjd��\}}||jd<||jd<n�t|�j �d krrd|jd<n[t|�j�s�ytj
|�|jd<Wq�tjk
r�tdj|���q�Xn|jjd�r|jjd�rd|jd<n|jjd
�r7|jjd�r7td��ndS(!NRssg-tGroupIdtegresss*egress rules must use group IDs, not namest GroupNameRs IpPermissions.1.Groups.1.GroupIds7argument -o: egress rules must use group IDs, not namess"IpPermissions.1.Groups.1.GroupNamesIpPermissions.1.IpProtocolticmpRtudpt1t6t17RRsIpPermissions.1.FromPortsIpPermissions.1.ToPorttalls-1i����s"argument -P: no such protocol: {0}s$IpPermissions.1.IpRanges.1.GroupNames!IpPermissions.1.IpRanges.1.CidrIps 0.0.0.0/0sIpPermissions.1.Groups.1.UserIds>argument -u is required when -o names a security group by name(RRRRR R!(salls-1(Rt configuretargst
startswithtparamsRtgettNonetstrtlowerRtisdigittsockettgetprotobynameterrortformat(RRtprotocolt from_porttto_port((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyR#HsD
cCsl|jd|jjd�g�GHd|jjd�d|jjd�|jjd�|jjd�g}|jjd�r�|jd �|j|jjd��n|jjd
�r�|jd�|j|jjd
��n|jjd�r|jd
�|j|jjd��n|jjd�rZ|jddg�|j|jjd��n|j|�GHdS(NRRt
PERMISSIONtALLOWSsIpPermissions.1.IpProtocolsIpPermissions.1.FromPortsIpPermissions.1.ToPortsIpPermissions.1.Groups.1.UserIdtUSERs"IpPermissions.1.Groups.1.GroupNametNAMEs IpPermissions.1.Groups.1.GroupIdtIDs!IpPermissions.1.IpRanges.1.CidrIptFROMR(ttabifyR$R'R&tappendtextend(Rt_tperm_str((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pytprint_result{s*
N(
t__name__t
__module__t__doc__RR(RtARGSRR#R>(((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyR"s4 3tAuthorizeSecurityGroupRulecBseZdZed��ZRS(s:Add a rule to a security group that allows traffic to passcCs|jdrdSdSdS(NRtAuthorizeSecurityGroupEgresstAuthorizeSecurityGroupIngress(R$(R((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyR�s
(R?R@tDESCRIPTIONtpropertyR(((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyRC�stRevokeSecurityGroupRulecBseZdZed��ZRS(s#Remove a rule from a security groupcCs|jdrdSdSdS(NRtRevokeSecurityGroupEgresstRevokeSecurityGroupIngress(R$(R((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyR�s
(R?R@RFRGR(((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyRH�s(R,trequestbuilderRRtrequestbuilder.exceptionsRteuca2ools.commands.ec2RRRRCRH(((sR/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/modifysecuritygrouprule.pyt<module>sq |