ó
è?F[c           @   sË   d  Z  d d l Z d d l Z d d l m Z m Z d d l m Z d d l m	 Z	 d d l
 m Z m Z d d l Z d d l m Z d d	 d
 d d g Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s4   
High-level abstraction of an EC2 order for servers
iÿÿÿÿN(   t   Servert	   ServerSet(   t   IObject(   t   Config(   t
   get_domaint
   set_domain(   t   StringIOs   m1.smalls   m1.larges	   m1.xlarges	   c1.mediums	   c1.xlarget   Itemc           B   sª   e  Z d  „  Z d „  Z d „  Z d d „ Z d d „ Z d d „ Z d d „ Z	 d d „ Z
 d d	 „ Z d d
 „ Z d d „ Z d „  Z d d „ Z d „  Z d „  Z RS(   c         C   s^   d  |  _ d  |  _ d  |  _ d |  _ d  |  _ d  |  _ g  |  _ d  |  _ d  |  _	 d  |  _
 d  S(   Ni    (   t   Nonet   regiont   namet   instance_typet   quantityt   zonet   amit   groupst   keyt   ec2t   config(   t   self(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   __init__&   s    									c         C   s   | |  j  | <d  S(   N(   t   userdata(   R   R   t   value(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_userdata2   s    c         C   s   |  j  | S(   N(   R   (   R   R   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   get_userdata5   s    c         C   s_   | r | |  _  nI g  t j j ƒ  D] } | | j | j f ^ q" } |  j | d d ƒ|  _  d  S(   Nt   prompts   Choose Region(   R	   t   botoR   t   regionsR
   t   endpointt   choose_from_list(   R   R	   t   rt   l(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt
   set_region8   s    1c         C   s(   | r | |  _  n |  j d ƒ |  _  d  S(   Nt   Name(   R
   t
   get_string(   R   R
   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_name?   s    c         C   s+   | r | |  _  n |  j t d ƒ |  _  d  S(   Ns   Instance Type(   R   R   t   InstanceTypes(   R   R   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_instance_typeE   s    i    c         C   s.   | d k r | |  _  n |  j d ƒ |  _  d  S(   Ni    t   Quantity(   R   t   get_int(   R   t   n(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_quantityK   s    c         C   s_   | r | |  _  nI g  |  j j ƒ  D] } | | j | j f ^ q" } |  j | d d ƒ|  _  d  S(   NR   s   Choose Availability Zone(   R   R   t   get_all_zonesR
   t   stateR   (   R   R   t   zR   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_zoneQ   s    1c         C   s_   | r | |  _  nI g  |  j j ƒ  D] } | | j | j f ^ q" } |  j | d d ƒ|  _  d  S(   NR   s
   Choose AMI(   R   R   t   get_all_imagest   idt   locationR   (   R   R   t   aR   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_amiX   s    1c         C   sm   | r |  j  j | ƒ nP g  |  j j ƒ  D] } | | j | j f ^ q) } |  j  j |  j | d d ƒƒ d  S(   NR   s   Choose Security Group(   R   t   appendR   t   get_all_security_groupsR
   t   descriptionR   (   R   t   groupt   sR   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt	   add_group_   s    1c         C   s\   | r | |  _  nF g  |  j j ƒ  D] } | | j d f ^ q" } |  j | d d ƒ|  _  d  S(   Nt    R   s   Choose Keypair(   R   R   t   get_all_key_pairsR
   R   (   R   R   t   kR   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   set_keyf   s    .c         C   sÇ   |  j  j d ƒ s] |  j  j d ƒ |  j  j d d |  j j ƒ |  j  j d d |  j j ƒ n  |  j  j d ƒ s‚ |  j  j d ƒ n  t ƒ  } | rÃ |  j  j d d | ƒ |  j  j d d |  j ƒ n  d  S(   Nt   Credentialst   aws_access_key_idt   aws_secret_access_keyt   Pyamit   server_sdb_domaint   server_sdb_name(	   R   t   has_sectiont   add_sectiont   setR   R>   R?   R   R
   (   R   t
   sdb_domain(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   update_configm   s    	c         C   s.   | s |  j  d ƒ } n  t d | ƒ |  _ d  S(   Ns   Specify Config filet   path(   t   get_filenameR   R   (   R   t   config_path(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt
   set_configy   s    c         C   s#   t  ƒ  } |  j j | ƒ | j ƒ  S(   N(   R   R   t   writet   getvalue(   R   R7   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   get_userdata_string~   s    	c         K   s¾  | j  d |  j ƒ |  _ |  j s. |  j ƒ  n  |  j j ƒ  |  _ | j  d |  j ƒ |  _ |  j sn |  j ƒ  n  | j  d |  j ƒ |  _ |  j sœ |  j ƒ  n  | j  d |  j	 ƒ |  _	 |  j	 sÊ |  j
 ƒ  n  | j  d |  j ƒ |  _ |  j sø |  j ƒ  n  | j  d |  j ƒ |  _ |  j s&|  j ƒ  n  | j  d |  j ƒ |  _ |  j sT|  j ƒ  n  | j  d |  j ƒ |  _ |  j s‚|  j ƒ  n  | j  d	 |  j ƒ |  _ |  j s°|  j ƒ  n  |  j ƒ  d  S(
   NR	   R
   R   R   R   R   R   R   R   (   t   getR	   R    t   connectR   R
   R#   R   R%   R   R-   R   R)   R   R2   R   R8   R   R<   R   RK   RG   (   R   t   params(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   enterƒ   s:    									N(   t   __name__t
   __module__R   R   R   R   R    R#   R%   R)   R-   R2   R8   R<   RG   RK   RN   RR   (    (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyR   $   s   					t   Orderc           B   s/   e  Z d  „  Z d „  Z d „  Z e d „ Z RS(   c         C   s   g  |  _  d  |  _ d  S(   N(   t   itemsR   t   reservation(   R   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyR   ¤   s    	c         K   s*   t  ƒ  } | j |   |  j j | ƒ d  S(   N(   R   RR   RV   R3   (   R   RQ   t   item(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   add_item¨   s    	c         C   sZ   d GHd GHd GHxD |  j  D]9 } d | j | j | j | j j | j | j j f GHq Wd  S(   Ns*   This Order consists of the following itemss#   QTY	NAME	TYPE
AMI		Groups			KeyPairs   %s	%s	%s	%s	%s	%s(    (   RV   R   R
   R   R   R/   R   R   (   R   RX   (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   display­   s    c   	      C   s’  t  ƒ  d  k r0 d GH|  j d ƒ } t | ƒ n  t ƒ  } x4|  j D])} | j j d d d | j d | j	 j
 d | j ƒ  d | j d	 | j d
 | j j
 ƒ } | rg  | j D] } | j ^ q­ } | j d ƒ t | ƒ k r| GHt j d ƒ g  | j D] } | j ƒ  ^ qù } qn  xR | j D]G } t ƒ  } | j
 | _
 | j | _ | | _ | j ƒ  | j | ƒ q!WqC Wt | ƒ d k rŠ| d S| Sd  S(   Ns   SDB Persistence Domain not sets   Specify SDB Domaint	   min_counti   t	   max_countt   key_namet	   user_datat   security_groupsR   t	   placementt   runningi   i    (   R   R   R"   R   R   RV   R   t   runR   R   R
   RN   R   R   R   t	   instancesR+   t   countt   lent   timet   sleept   updateR    R/   t   instance_idRW   t   saveR3   (	   R   t   blockt   domain_nameR7   RX   R   t   it   statest   server(    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   placeµ   s4    	(		
(   RS   RT   R   RY   RZ   t   TrueRp   (    (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyRU   ¢   s   			(   t   __doc__R   t   boto.ec2t   boto.mashups.serverR    R   t   boto.mashups.iobjectR   t   boto.pyami.configR   t   boto.sdb.persistR   R   Rf   t   boto.compatR   R$   R   RU   (    (    (    s1   lib/python2.7/site-packages/boto/mashups/order.pyt   <module>   s   ~