o ckF[@sdZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z ddl Z ddlmZgdZGd d d eZGd d d eZdS) z4 High-level abstraction of an EC2 order for servers N)Server ServerSet)IObject)Config) get_domain set_domain)StringIO)zm1.smallzm1.largez m1.xlargez c1.mediumz c1.xlargec@seZdZddZddZddZd!dd Zd!d d Zd!d d Zd"ddZ d!ddZ d!ddZ d!ddZ d!ddZ ddZd!ddZddZdd ZdS)#ItemcCs@d|_d|_d|_d|_d|_d|_g|_d|_d|_d|_ dS)Nr) regionname instance_typequantityzoneamigroupskeyec2configselfr4/usr/lib/python3/dist-packages/boto/mashups/order.py__init__&s z Item.__init__cCs||j|<dSNuserdata)rrvaluerrr set_userdata2szItem.set_userdatacCs |j|Srr)rrrrr get_userdata5s zItem.get_userdataNcCs6|r||_dSddtjD}|j|dd|_dS)NcSg|] }||j|jfqSr)r endpoint).0rrrr <z#Item.set_region..z Choose Regionprompt)r botorregionschoose_from_list)rr lrrr set_region8 zItem.set_regioncCs|r||_dS|d|_dS)NName)r get_string)rr rrrset_name?s z Item.set_namecCs |r||_dS|td|_dS)Nz Instance Type)r r) InstanceTypes)rr rrrset_instance_typeEs zItem.set_instance_typercCs"|dkr ||_dS|d|_dS)NrQuantity)r get_int)rnrrr set_quantityKs zItem.set_quantitycC6|r||_dSdd|jD}|j|dd|_dS)NcSrr)r state)r!zrrrr#Ur$z!Item.set_zone..zChoose Availability Zoner%)rr get_all_zonesr))rrr*rrrset_zoneQr,z Item.set_zonecCr6)NcSrr)idlocation)r!arrrr#\r$z Item.set_ami..z Choose AMIr%)rrget_all_imagesr))rrr*rrrset_amiXr,z Item.set_amicCsB|r |j|dSdd|jD}|j|j|dddS)NcSrr)r description)r!srrrr#cr$z"Item.add_group..zChoose Security Groupr%)rappendrget_all_security_groupsr))rgroupr*rrr add_group_szItem.add_groupcCr6)NcSsg|]}||jdfqS))r )r!krrrr#jsz Item.set_key..zChoose Keypairr%)rrget_all_key_pairsr))rrr*rrrset_keyfr,z Item.set_keycCs|jds |jd|jdd|jj|jdd|jj|jds,|jdt}|rD|jdd||jdd|jdSdS)N Credentialsaws_access_key_idaws_secret_access_keyPyamiserver_sdb_domainserver_sdb_name) r has_section add_sectionsetrrKrLrr )r sdb_domainrrr update_configms    zItem.update_configcCs|s|d}t|d|_dS)NzSpecify Config file)path) get_filenamerr)r config_pathrrr set_configys zItem.set_configcCst}|j||Sr)rrwritegetvalue)rrArrrget_userdata_string~s zItem.get_userdata_stringcKs&|d|j|_|js||j|_|d|j|_|js$||d|j|_|js3||d|j |_ |j sB| |d|j |_ |j sQ| |d|j |_ |j s`||d|j|_|jso||d|j|_|js~||d |j|_|js||dS) Nr r r rr rrrr)getr r+connectrr r/r r1rr:r r5rr?rrErrIrrXrT)rparamsrrrenters:  z Item.enterr)r)__name__ __module__ __qualname__rrrr+r/r1r5r:r?rErIrTrXr[r_rrrrr $s            r c@s.eZdZddZddZddZd dd Zd S) OrdercCsg|_d|_dSr)items reservationrrrrrs zOrder.__init__cKs&t}|jdi||j|dS)Nr)r r_rdrB)rr^itemrrradd_itemszOrder.add_itemc CsNtdttd|jD]}td|j|j|j|jj|j|jjfqdS)Nz*This Order consists of the following itemsz#QTY NAME TYPE AMI Groups KeyPairz%s %s %s %s %s %s) printrdr r r rr;rr)rrfrrrdisplays  z Order.displayTc Cstdurtd|d}t|t}|jD]Y}|jjd|j|j j | |j |j |jj d}|rTdd|jD}|dt|krTt|tdd d|jD}|jD]}t}|j |_ |j|_||_|||qWqt|dkr||d S|S) NzSDB Persistence Domain not setzSpecify SDB Domain) min_count max_countkey_name user_datasecurity_groupsr placementcSsg|]}|jqSr)r7r!irrrr#szOrder.place..runningcSsg|]}|qSr)updaterqrrrr#sr)rrhr.rrrdrrunr rr r[rr r instancescountlentimesleeprr; instance_idresaverB) rblock domain_namerArfr"statesrrserverrrrplaces8         z Order.placeN)T)r`rarbrrgrirrrrrrcs rc)__doc__r'boto.ec2boto.mashups.serverrrboto.mashups.iobjectrboto.pyami.configrboto.sdb.persistrrrz boto.compatrr0r rcrrrrs   ~