Repository URL to install this package:
| 
      
        
        
        Version: 
        
         
          
          3.4.51  ▾
        
         | 
ó
±EYc           @   s	  d  Z  d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m
 Z
 d d l Z
 d d l
 m Z d d l
 m Z d d	 l
 m Z d d
 l
 m Z e
 j j Z e j e  Z d   Z d   Z d
 e f d     YZ d S(   sR   
CloudPipe - Build a user-data payload zip file, and launch
an instance with it.
iÿÿÿÿN(   t   log(   t	   fileutils(   t   compute(   t   flavors(   t   crypto(   t   db(   t	   exception(   t   utilsc         C   s   |  t  j j k S(   N(   t   CONFt	   cloudpipet   vpn_image_id(   t   image_id(    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyt   is_vpn_image-   s    c          C   s^   t  t j j d   }  t j |  j    } Wd  QX| j d t j j d t j j	 d t j
  S(   Nt   rt   dmz_nett   dmz_maskt   num_vpn(   t   openR   R	   t   boot_script_templatet   stringt   Templatet   readt
   substituteR   R   t   cnt_vpn_clients(   t	   shellfilet   s(    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyt   _load_boot_script1   s
    t	   CloudPipec           B   s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C   s   t  j   |  _ d  S(   N(   R   t   APIt   compute_api(   t   self(    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyt   __init__:   s    c   
   
   C   sm  t  j   [} d } t j j | |  } t j | d t j  } t   } t	 j
 |  | j d |  t j j t	 j |  d  } | j
 | d  t j j t	 j |  d  } | j
 | d  t j j t	 j |   }	 | j
 |	 d  t j j t	 j |  d  }
 | j
 |
 d  | j   t | d  + } t j | j    } t j |  } Wd  QXWd  QX| S(	   Ns   payload.zipt   ws
   autorun.shs   crl.pems
   server.keys   ca.crts
   server.crtt   rb(   R   t   tempdirt   ost   patht   joint   zipfilet   ZipFilet   ZIP_DEFLATEDR   R   t   generate_vpn_filest   writestrt	   ca_foldert   writet   ca_patht   closeR   t   base64t	   b64encodeR   (
   R   t
   project_idt   tmpdirt   filenamet   zippatht   zt   boot_scriptt   crlt
   server_keyt   ca_crtt
   server_crtt   zippyt   encoded(    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyt   get_encoded_zip=   s,    	
		
c         C   s¨   t  j d | j  |  j |  } |  j |  } t j t j j	  } d | j t j j
 f } |  j | j  } |  j j
 | | t j j d | d | d | d | g S(   Ns   Launching VPN for %ss   %s%st   display_namet	   user_datat   key_namet   security_group(   t   LOGt   debugR1   t   setup_key_pairt   setup_security_groupR   t   get_flavor_by_nameR   R	   t
   vpn_flavort   vpn_key_suffixR=   R   t   createR
   (   R   t   contextR@   t
   group_namet   flavort
   instance_nameR?   (    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyt   launch_vpn_instance\   s    	c         C   sí   d | j  t j j f } i | j d 6| j  d 6| d 6d d 6} y t j | |  } Wn t j k
 rn | SXi | d d 6d	 d
 6d d 6d
 d 6d
 d 6} t j	 | |  i | d d 6d	 d
 6d d 6d d 6d d 6} t j	 | |  | S(   Ns   %s%st   user_idR1   t   names
   Group for vpnt   descriptiont   idt   parent_group_ids	   0.0.0.0/0t   cidrt   udpt   protocoliª  t	   from_portt   to_portt   icmpiÿÿÿÿ(
   R1   R   R	   RH   RO   R   t   security_group_createR   t   SecurityGroupExistst   security_group_rule_create(   R   RJ   RK   t   groupt	   group_reft   rule(    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyRE   l   s.    	
c   	      C   sÚ   d | j  t j j f } y t j j   } | j | | j |  \ } } t	 j
 j t j j
 | j  } t j |  t	 j
 j | d |  } t | d   } | j |  Wd  QXWn  t j t	 j t f k
 rÕ n X| S(   Ns   %s%ss   %s.pemR    (   R1   R   R	   RH   R   t   apit
   KeypairAPIt   create_key_pairRO   R#   R$   R%   R   t	   keys_pathR   t   ensure_treeR   R,   R   t
   KeyPairExistst   errort   IOError(	   R   RJ   R@   t   keypair_apit   resultt   private_keyt   key_dirt   key_patht   f(    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyRD      s    		
(   t   __name__t
   __module__R   R=   RN   RE   RD   (    (    (    sK   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/cloudpipe/pipelib.pyR   9   s
   				(   t   __doc__R/   R#   R   R&