Viewing File: /usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyc


Xc@sddlZddlZddlmZddlZddlZddlmZddl	Z	ddl
Zddlm
Z
ddlZddlmZmZmZddlmZddlmZddlmZddlZddlZdd	lmZdd
lmZddl m!Z!defd
YZ"deefdYZ#de$fdYZ%e%Z&e'e'dZ(dZ)dS(iN(t
itemgetter(tTemplate(tArg(t
ArgumentErrort	AuthErrortClientError(tTabifyingMixin(tAWSQueryRequest(tBaseService(t	Euca2ools(tAWSError(tadd_fake_region_nametEC2cBsVeZdZdZdZdZdZedddd	d
dgZdZ	d
Z
RS(tec2sElastic compute cloud services
2015-10-01tEUCA_DEFAULT_REGIONtAWS_DEFAULT_REGIONtEC2_URLs-Us--urltmetavartURLthelpscompute service endpoint URLcCs!tjjj|t|dS(N(trequestbuildertserviceRt	configureR(tself((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR;scCst|dS(N(R
(Rtresponse((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pythandle_http_error@s(RR(t__name__t
__module__tNAMEtDESCRIPTIONtAPI_VERSIONt
REGION_ENVVARt
URL_ENVVARRtARGSRR(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR1s	t
EC2RequestcBseZeZeZejjj	Z
dZdZdZ
dZdZdZdZdZdZd	Zd
ZdZdZd
ZdZdZdZdZeddZdZ dZ!dZ"dZ#dZ$dZ%dZ&RS(tPOSTcKstj||dS(N(Rt__init__(Rtkwargs((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR$KscCsBtj|}|jd|||jd|jdgGHdS(NtTAGtkeytvalue(tRESOURCE_TYPE_MAPtlookupttabifytget(Rtresource_tagtresource_idt
resource_type((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_resource_tagNscCsd|d|jdg}g|dD]9}|jdp]|jdp]|jdp]d^q'}|jd	j||j|GHx<t|jd
pgdtdD]}|j|qWdS(
NtRESERVATIONt
reservationIdtownerIdtgroupSett	groupNametgroupIdtentryts, tinstancesSetR't
launchTime(R,tappendtjoinR+tsortedRtprint_instance(Rtreservationtres_linetgroupt	group_idstinstance((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_reservationSs
Gc	Csdg}x0ddddgD]}|j|j|qW|j|jdijd|j|jd|j|jd	|jd
jg|jdgD]}|d^q|j|jd
|j|jd|j|jdijd|j|jd|j|jd|j|jd|jdr|jd|djdn
|jd|j|jd|j|jd|j|jd|j|jd|j|jd|j|jd|j|jd|jd|j|jdijd|j|jd|j|jd |j|jd!|jd
jg|jd"gD]}|d#^q|j|jdijd$|j|jd%|j|jd&ijd'|j|jd(|j|GHx'|jd)gD]}|j|qeWx'|jd*gD]}|j|qWx3|jd+gD]}|j||jdqWdS(,NtINSTANCEt
instanceIdtimageIdtdnsNametprivateDnsNamet
instanceStatetnametkeyNametamiLaunchIndext,tproductCodestproductCodetinstanceTypeR:t	placementtavailabilityZonetkernelIdt	ramdiskIdtplatformt
monitoringsmonitoring-tstatet	ipAddresstprivateIpAddresstvpcIdtsubnetIdtrootDeviceTypetinstanceLifecycletshowInstanceRequestIdR5tvirtualizationTypet
hypervisortclientTokenR4R6ttenancytebsOptimizedtiamInstanceProfiletarntarchitecturetblockDeviceMappingtnetworkInterfaceSetttagSet(R;R,R<tNoneR+tprint_blockdevicetprint_interfaceR0(	RRCt
instance_lineR'tcodeRAtblockdevtnicttag((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR>`sX	"*
	

"*""c
Cs|jd|jd|jdijd|jdijd|jdijd|jdijd|jdijdfGHdS(	NtBLOCKDEVICEt
deviceNametebstvolumeIdt
attachTimetdeleteOnTerminationt
volumeTypetiops(R+R,(RRp((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyRlscCs|jdr>|jdd|jd|jdfGHnq|jdpPi}|jdd|jd|jd|jd|jd	|jd
|jdfGHdS(NtvirtualNametBLOCKDEVICEMAPPINGt	EPHEMERALRtRutEBSt
snapshotIdt
volumeSizeRxRyRz(R,R+(RtmappingRu((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_blockdevice_mappingscCsQ|jd|jd|jd|jd|jd|jdgGHdS(Nt
ATTACHMENTRvRFtdevicetstatusRw(R+R,(Rt
attachment((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_attachments
c	Cs|jd|jd|jd|jd|jd|jd|jdfGHx6|jdpngD]}|j||jdqoWdS(	NtVPCR[RXt	cidrBlockt
dhcpOptionsIdtinstanceTenancyt	isDefaultRj(R+R,R0(RtvpcRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyt	print_vpcs
! cCs|jd|jdfGHxF|jdp2gD]/}|jd|jd|jdfGHq3Wx6|jdp{gD]}|j||jdq|WdS(NtINTERNETGATEWAYtinternetGatewayIdt
attachmentSetRR[RXRj(R+R,R0(RtigwRRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_internet_gatewayscCs|jd|jd|jd|jd|jd|jd|jd|jd|jd	f	GHx^|jd
pgD]G}|jd|jd|jd
|jd|jdfGHqWdS(Nt
NATGATEWAYtnatGatewayIdRXR\R[tfailureCodetfailureMessaget
createTimet
deleteTimetnatGatewayAddressSettNATGATEWAYADDRESSEStallocationIdtnetworkInterfaceIdtpublicIpt	privateIp(R+R,(Rtnatgwtaddress_set((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_nat_gateways	c	Cs0|jdpi}|jd|jd|jddj|jd|jdfGH|jdpqi}|jd	|jd
|jd|jdfGH|jd
pi}|jd|jd
|jd|jdfGHx6|jdpgD]}|j||jdq	WdS(NRtVPCPEERINGCONNECTIONtvpcPeeringConnectionIdtexpirationTimes{0}: {1}RotmessagetrequesterVpcInfotREQUESTERVPCINFOR[RR3taccepterVpcInfotACCEPTERVPCINFORj(R,R+tformatR0(RtpcxRt	requestertaccepterRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_peering_connections	 cCs|jd|jd|jd|jd|jd|jd|jd|jd|jd	f	GHx6|jd
pgD]}|j||jdqWdS(NtSUBNETR\RXR[RtavailableIpAddressCountRStdefaultForAztmapPublicIpOnLaunchRj(R+R,R0(RtsubnetRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_subnetscCsP|jdjdkr$d}nd}|jd|jd|jd|fGHxq|jdpkgD]Z}|jdjdkrd}nd	}|jd
}idd6d
d6dd6dd6dd6}y"|jt|t|}Wntk
r	nXd|krO|jdijd}|jdijd}n6|jdijd}|jdijd}|jd||jd|jd|jd|||fGHqlWxF|jdpgD]/}	|jd |	jd!|	jd"fGHqWx6|jd#p(gD]}
|j|
|jdq)WdS($NtdefaultttrueR8t
NETWORKACLtnetworkAclIdR[tentrySettegresstingresstprotocoltalliticmpittcpitudpitsctpiticmpTypeCodeRottypet	portRangetfromttotENTRYt
ruleNumbert
ruleActionRtassociationSettASSOCIATIONtnetworkAclAssociationIdR\Rj(R,tlowerR+tintt
ValueErrorR0(RtaclRR7t	directionRtport_mapt	from_porttto_porttassocRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_network_acls:		)"
	c
Cs|jd|jd|jdfGHx|jdp>gD]}|jdp|jdp|jdp|jdp|jd	}|jd
||jd|jd|jd
fGHq?Wx:|jdpgD]#}|jd|jdfGHqWxy|jdpgD]b}|jdp7djdkrOd}nd}|jd|jd|jd|fGHqWx6|jdpgD]}|j||jdqWdS(Nt
ROUTETABLEtrouteTableIdR[trouteSett	gatewayIdRRFRRtROUTERXtdestinationCidrBlocktorigintpropagatingVgwSettPROPAGATINGVGWt	gatewayIDRtmainR8RRtrouteTableAssociationIdR\Rj(R+R,RR0(RttabletroutettargettvgwRRRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_route_table
s,$!!		c	CsgdD]}|j|^q}|jd	g|GH|jd
rgdD]}|d
j|^qM}|jdg|GHn|jdg}|jdr,|d}xB|D]4}|jdijd|jdkrPqqWd}|jd|jd|jd|jdfGHnxC|jdgD]/}|jd|jd|jdfGHq?Wxd|D]\}|jdjdkrd}	nd}	|jd|jd|jd|	fGHqyWx6|jdpgD]}
|j|
|jdqWdS( NRR\R[R3RRZRItsourceDestChecktNETWORKINTERFACERRFtattachmentIdtdeviceIndexRwRxRtprivateIpAddressesSettassociationRRt	ipOwnerIdR4tGROUPR6R5tprimaryRtPRIVATEIPADDRESSRj(snetworkInterfaceIdssubnetIdsvpcIdsownerIdsstatussprivateIpAddresssprivateDnsNameR(s
instanceIdRRsstatuss
attachTimesdeleteOnTermination(R,R+RkRR0(RRqtattrtnic_infotattachment_infot
privaddressesRtprivaddressRARRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyRm&s@#


		cCs|jd|jd|jd|jd|jd|jdfGHx3|jdgD]}|j||jdq`WdS(NtCUSTOMERGATEWAYtcustomerGatewayIdRXRRYtbgpAsnRj(R+R,R0(RtcgwRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_customer_gatewayNs
 cCs|jd|jd|jd|jd|jdfGHx@|jdD]/}|jd|jd|jdfGHqQWx3|jd	gD]}|j||jdqWdS(
Nt
VPNGATEWAYtvpnGatewayIdRXRSRtattachmentst
VGWATTACHMENTR[Rj(R+R,R0(RRRRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_vpn_gatewayUsc	Cs|jd|jd|jd|jd|jd|jdfGH|r|jdr|dkr|jdGHq|jds|jd	r|jjd
|tj|}y|jWn4tjj	k
r}t
djt|nXt
jj|j}nV|jdr8|d
}n|jjd|t|}t
jj|}WdQXt
jj|}t
jjtj|jd}	||	GHnx6|jdpgD]}
|j|
|jdqWdS(Nt
VPNCONNECTIONtvpnConnectionIdRRRRXtcustomerGatewayConfigurationshttp://shttps://s+fetching connection info stylesheet from %ssfailed to fetch stylesheet: {0}sfile://is#using connection info stylesheet %sRj(R+R,Rkt
startswithtlogtinfotrequeststraise_for_statust
exceptionst	HTTPErrorRRtstrtlxmltetreetXMLttexttopentparsetXSLTtiotBytesIOR0(Rtvpntshow_conn_infot
stylesheetRterrt	xslt_roottstylesheet_filet	transformtconn_info_rootRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_vpn_connection_s< 		
cCs|jd|jdfGHxq|jdp2iD]Z}g|jdD]}|jd^qI}|jd|jddj|fGHq3Wx3|jd	gD]}|j||jdqWdS(
NtDHCPOPTIONSRtdhcpConfigurationSettvalueSetR(tOPTIONR'RNRj(R+R,R<R0(Rtdopttoptiontval_dicttvaluesRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_dhcp_optionss(-cCsdg}x$d
D]}|j|j|qW|j|jdpHd	|j|jd
|j|GHx'|jdgD]}|j|qWx3|jdgD]}|j||jdqWdS(NtVOLUMERvtsizeRRSRRRytstandardRzRRj(svolumeIdssizes
snapshotIdsavailabilityZonesstatuss
createTime(R;R,R+RR0(Rtvolumetvol_bitsRRRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_volumes	
cCs|jd|jd|jd|jd|jd|jd|jd|jd|jd	g	GHx3|jd
gD]}|j||jdqWdS(NtSNAPSHOTRRvRt	startTimetprogressR3RtdescriptionRj(R+R,R0(RtsnapRr((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_snapshotscCs|jdijdijd}|jdijdijd}|ro|rodj||}nd}|jd|jd|jd|||jd	|jd
|jd|jd|g
GHdS(
NtstoragetS3tbuckettprefixs{0}/{1}.manifest.xmltBUNDLEtbundleIdRFR/t
updateTimeRXR0(R,RRkR+(RttaskR6R7tmanifest((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_bundle_tasks''cCsg}|jdr%|jdn|jdrD|jdn|jdry|jd|j|jdn|jdr|jd	|j|dn|jd
r|jd|j|d
n|jdr	|jd
|j|dn|jdr:|j|GH|j|dn|jdr|djdrz|jd|ddfn|j|GHx1|djdpgD]}|j|qWndS(NtimportVolumetTaskTypetIMPORTVOLUMEtimportInstancetIMPORTINSTANCEtconversionTaskIdtTaskIdRtExpirationTimeRXtStatust
statusMessaget
StatusMessageRFt
InstanceIDtvolumes(R?R@(R?RB(R,textendR;R+t_EC2Request__print_import_disk(RR;t	task_bitsR+((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprint_conversion_tasks6



	 cCsdg}|jdpi}|jdp0i}|jdr\|jd|dfn|jdr|jd|dfn|jdr|jd	|dfn|jdr|jd
|dfn|jdr|jd|dfn|jd
r)|jd|d
fn|jdrW|jd|jdfn|jdr|jd|jdfn|j|GHdS(Nt	DISKIMAGEtimageR+RtDiskImageFormatR)t
DiskImageSizetidtVolumeIdt
VolumeSizeRStAvailabilityZonetbytesConvertedtApproximateBytesConvertedRRFRGRH(R,RKR+(Rt	containert	disk_bitsRPR+((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyt__print_import_disks,			cCsttj}d}|dp-|d}|dpE|d}tj||rk||jd<n|r||jd<n|t_dS(	sz
        Security group and network ACL rule commands need to be able to
        to parse "-1:-1" before argparse can see it because of Python
        bug 9334, which causes argparse to treat it as a nonexistent
        option name and not an option value.  This method wraps
        process_cli_args in such a way that values beginning with "-1"
        are preserved.
        cSs|tjkr}tjj|}|ttjdkr}tj|djdr}tj|d}tj||d5|SndS(Nis-1i(tsystargvtindextlenR(topt_nameR^topt_val((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytparse_neg_one_valuess-ts--icmp-type-codes-ps--port-rangeticmp_type_codet
port_rangeN(tlistR\R]R"tprocess_cli_argstargs(Rtsaved_sys_argvRbRcRd((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytprocess_port_cli_argss			
N('RRR	tSUITERt
SERVICE_CLASSRtauthtawst
HmacV4Autht
AUTH_CLASStMETHODR$R0RDR>RlRRRRRRRRRRmRRtFalseRkRR'R-R3R=RNRLRi(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR"Es<			
	4										"		(		
"			
					t_ResourceTypeMapcBseZidd6dd6dd6dd6dd	6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d%6d&d'6d(d(6d)d*6d+d,6d-d.6Zd/Zd0ZRS(1s
allocation-idteipalloctbundletbunsconversion-tasktimportscustomer-gatewayRsdhcp-optionsR#sexport-tasktexportRPtakitamitaritekitemiteriRCtisinternet-gatewayRsnetwork-aclRsnetwork-interfacetenisreserved-instancestxxxsroute-tabletrtbssecurity-grouptsgtsnapshotR2sspot-instances-requesttsirRR+tvolRsvpc-peering-connectionRsvpn-connectionRsvpn-gatewayRcCsWt|tjs!tdnx/|jD]$}|j|dr+|j|Sq+WdS(Ns#argument type must be a string typet-(t
isinstancetsixtstring_typest	TypeErrort_prefix_type_mapR(RtitemR7((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR*"s
cCstt|jjS(N(titertsetRR&(R((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyt__iter__)s(RRRR*R(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyRrs<
	cCsd}d}t|jdkr|rBtdj|n|sQd}n|jd}t|dkry$t|d}t|d}Wqtk
rtd	qXntd	|d
ks|d
krtdqnt|jdkr|r%tdj|n|sCtdj|nd|kr^tdnt	||\}}|d
ks|d
krtdn|d
krd}n|d
krd}qn||fS(NRt1s<argument -p/--port-range: not compatible with protocol "{0}"s-1:-1t:iiis:argument -t/--icmp-type-code: value must have format "1:2"isAargument -t/--icmp-type-code: ICMP type, code must be at least -1Rt6Rt17s@argument -t/--icmp-type-code: not compatible with protocol "{0}"s7argument -p/--port-range is required for protocol "{0}"sLargument -p/--port-range: multi-port range must be separated by "-", not ":"s<argument -p/--port-range: port number(s) must be at least -1i(sicmpR(stcpRsudpR(
RkRRRRtsplitR_RRt_parse_port_range(RRdRcRRttypes((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pytparse_ports/sF		
			cCsyt|t|fSWntk
r-nX|jddkr|jd}y"t|dt|dfSWqtk
rqXnt|tjry tj||}||fSWqtj	k
rqXnt
dj|dS(NRiisnargument -p/--port-range: '{0}' is neither a port number, range of port numbers, nor a recognized service name(RRtcountRRRRtsockett
getservbynameterrorRR(RdRtportstport((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyR`s$
"
	(*targparseRtoperatorRtos.pathtosRtstringRR\t
lxml.etreeR
RRtrequestbuilder.auth.awstrequestbuilder.exceptionsRRRtrequestbuilder.mixinsRtrequestbuilder.requestRtrequestbuilder.serviceRtrequests.exceptionsRRteuca2ools.commandsR	teuca2ools.exceptionsR
teuca2ools.utilRRR"tobjectRrR)RkRR(((sC/usr/lib/python2.7/site-packages/euca2ools/commands/ec2/__init__.pyt<module>s2(	1
Back to Directory File Manager