Ñò
4L³Vc        	   @   sÅ   d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d Z d Z d Z d Z d Z	 d Z
 d Z d	 Z d
 Z d Z d Z d a h  a d a d „  Z e d j o e e e i d ƒ ƒ n d S(   iÿÿÿÿNt   vLanDefinitionst   environmentt   serverst   clusterGroupt   namet   addPartitionst   deployedt   vLanst
   vLanAccesst	   nasMountst   nasRequestst    c   3         s‰  d „  ‰ d „  } ‡ f d †  ‰ d „  } d „  } d „  } ‡ ‡  ‡ f d †  ‰ ‡ ‡  ‡ ‡ ‡ ‡ f d †  } t  ‰ t } t  } t  } t ‰ d	 ‰ t i i ˆ ƒ o
 t  ‰ n d
 ‰  d ‰ d t i i t ƒ j o
 d ‰  n d t i j o d ‰  d ‰ n y+ t	 i	 |  d d d d d g ƒ \ }	 }  Wn* t	 i
 j
 o | ƒ  t i d ƒ n Xx~ |	 D]v \ }
 } |
 d j o | ƒ  t i d ƒ q^|
 d™ j o
 t ‰ q^|
 dš j o
 t } q^|
 d› j o
 t } q^q^Wd t i j oM ˆ o d  t i d GHn t i d d! i ƒ  d" j o
 t } q5t  } n ˆ p | o d# GHt  } qVn ˆ om ˆ oe d$ t | ƒ GHd% t | ƒ GHd& t ˆ ƒ GHd' t ˆ  ƒ GHd( t ˆ ƒ GHd) t t i ƒ  ƒ GHHn ˆ p
 d* GHHn | ƒ  t t d+ d, ƒ d j } g  } g  } | i d- ƒ | i d. ƒ ˆ o | i d/ ƒ | i d0 ƒ n ˆ o | i d1 ƒ n | i d2 ƒ | i d3 ƒ | o | i d4 ƒ | i d5 ƒ n | i d6 ƒ | i d7 ƒ | o | i d8 ƒ | i d9 ƒ n | o | i d: ƒ | i d; ƒ n | i d< ƒ | i d= ƒ | i d> ƒ | i d? ƒ | i d@ ƒ | i dA ƒ t  } d! } x&| pˆ dB | | ƒ } | d. j o | t t ƒ n | d0 j o t i t dC dD dE t ƒGHq_| d5 j o@dF GHt t t i t i t t t d! ƒ ƒ t t t dG } dH | dI <dJ | dK <dJ | dL <| dM =g  | dM <dN | dO <dN | dP <t | j o | t =n t | j o | t =n g  | t <h  } x± t t t t ƒ D]› \ } } t | j o‚ x | t D]o } | dQ } | dR } t | ƒ d! j oB | | j o* h  | | <| | | dQ <| | | dS <q:| | =qËqËWq§q§WdT } xA | D]9 } t | | dS ƒ | j o t | | dS ƒ } qSqSW| dT j  og xd | D]X } t | | dS ƒ | j o7 h  } | | dR <| | dQ | dQ <| t i | ƒ q¤q¤Wn dU GHHq_| d3 j o | ƒ  dV GHHq_| d7 j o°dW GHg  } g  } d } xJ t t t D]: } | i dX t | ƒ ƒ | i t | ƒ ƒ | d 7} q_W| i dY ƒ | i dZ ƒ ˆ d[ | | ƒ } | dZ j ot t t t | ƒ d } g  } g  }  | t d\ ƒ d j  o | i d] ƒ |  i dZ ƒ n | t d^ ƒ d j  o | i d_ ƒ |  i d0 ƒ n | i d` ƒ |  i da ƒ | i db ƒ |  i d= ƒ | i dc ƒ |  i d. ƒ | i dd ƒ |  i d? ƒ ˆ de | |  ƒ }! |! d9 j oîd\ }" |! d0 j o
 d^ }" nF |! da j o
 df }" n/ |! d= j o
 dg }" n |! d. j o
 dh }" n t | t |" ƒ ƒ }# | t |" ƒ d }$ ˆ o di t |$ ƒ GHHn |" t |$ ƒ |# dj <dk |" t |$ ƒ i d ƒ |# dl <|# dj |# t  <dJ |# dm <|" d\ j p |" dg j p |" dh j o dH |# dm <n dn |# do <|" d\ j o dp |# do <n t |# j o |# t =n | dM i |# ƒ t | dO ƒ dq }% |% t |# dr ƒ 7}% t |% dq ƒ | dO <t | dP ƒ }& |& t |# ds ƒ 7}& t |& ƒ | dP <dU GHqä
dt GHn Hq_| d9 j oÆdu GHHt! dv ƒ }' t  }( t" t t j oA x> t t t" D]* }) |' |) t  j o dw |' GHt }( q.q.Wn |' dx j o dy GHt }( n |' dz j o d{ GHt }( n |( ph |' t  6dJ d| 6d} d~ 6dH d 6}) t" t t j o g  t t t" <n t t t" i |) ƒ h |' t  6d€ d 6dH d‚ 6}* h |' t  6dJ dƒ 6}+ xƒ t t t D]s } t# | j o g  | t# <n | t# i |* ƒ x> | dM D]2 }, t$ |, j o g  |, t$ <n |, t$ i |+ ƒ qtWq7Wd„ GHn Hq_| d; j o“d… GHg  } g  } d } xJ t t t D]: } | i dX t | ƒ ƒ | i t | ƒ ƒ | d 7} qïW| i dY ƒ | i dZ ƒ ˆ d† | | ƒ } | dZ j oìg  } g  }  d } xx t t t t | ƒ d dM D]V }, t |, j oC |, dR d‡ j o2 | i |, t  ƒ |  i t | ƒ ƒ | d 7} q™q™W| i dY ƒ |  i dZ ƒ t |  ƒ d j o	 dˆ GHqWˆ d‰ | |  ƒ }- |- dZ j ot! dŠ ƒ }. xQ t t t t | ƒ d dM D]/ }/ |/ t  | t |- ƒ d j o
 |/ }, ququWt  }( t% |, j o g  |, t% <n: x6 |, t% D]* }0 |0 t  |. j o d‹ |. GHt }( qÔqÔW|( p< h |. t  6dJ dŒ 6dJ d 6dJ dQ 6}1 |, t% i |1 ƒ dU GHqNqWdt GHn dt GHHq_| d= j oGg  } g  } d } xJ t t t D]: } | i dX t | ƒ ƒ | i t | ƒ ƒ | d 7} qŠW| i dY ƒ | i dZ ƒ ˆ d† | | ƒ } | dZ j o¥g  } g  }  d } xg t t t t | ƒ d dM D]E }, t |, j o2 | i |, t  ƒ |  i t | ƒ ƒ | d 7} q4q4W| i dY ƒ |  i dZ ƒ t |  ƒ d j o	 dˆ GHq«ˆ dŽ | |  ƒ }- |- dZ j oË h  } dJ | dŒ <dJ | dR <dJ | d <dJ | d <dJ | d‘ <dJ | d’ <xQ t t t t | ƒ d dM D]/ }/ |/ t  | t |- ƒ d j o
 |/ }, q5q5Wt& |, j o g  |, t& <n |, t& i | ƒ dU GHq«dt GHn dt GHHq_| d? j o d“ GHt } d } q_| dA j o¡ ˆ o9 t i i' ˆ t i i( t i i) t* ƒ ƒ d! d” ƒ }2 n6 t i i' d• t i i( t i i) t* ƒ ƒ d! d– ƒ }2 d— |2 GHt i+ t t, |2 d˜ ƒ ƒ t } q_q_W| S(œ   Nc         S   s!   Hd |  GHd GHHt  i d ƒ d S(   s    support for fatal errorss   FATAL ERROR: s/   Please contact Ericsson CMS PDU for assistance.i   N(   t   syst   exit(   t   msg(    (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   abort   s
    	c           S   s9   d t  i d d GHHd GHHd GHd GHd GHd GHHd	 GHd  S(
   Ns   Usage :i    s7    [-d] [-h|--hostAdd] [-v|--vLanAdd] [-p|--partitionAdd]s3   Upgrade a config.json file with additional featuress    -d enable debug outputs    -h Enable hosts adds    -v Enable vLan adds    -p Enable partition adds'    Version 1.0 - April 2015 - Chris Bentz(   R   t   argv(    (    (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   usage!   s    c            sº   t  | ƒ t  t | ƒ ƒ j o ˆ  d ƒ n d } x€ | px |  GHx, t | | ƒ D] \ } } d | | f GHqR WHt d ƒ } | o, | | j o Hd t | ƒ GHHd } q± q6 q6 W| S(   Ns;   index options give to selectFromlist method are not unique!R   s    %s) %ss   Select: s   Select from (   t   lent   sett   zipt	   raw_inputt   str(   t   messaget   optionst   indexest   st   indext   option(   R   (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   selectFromList.   s$      c         S   sW   d } xJ |  t  t D]: } x1 | d D]% } | t | j o | d 7} q& q& Wq W| S(   Ni    t   vmsi   (   t   ENVIRONMENTt   SERVERSt   CLUSTERGROUP(   t   dataR   t   countt   servert   vm(    (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   vmCountD   s      c         S   sü   Hd | GHHd GHd Gd Gd |  t  j o) x& |  t  t D] } d | t Gq8 Wn HHd } d GHx• |  t  t D]… } d	 | GHxh | d
 D]\ } d | t Gt | j o	 d GHn Ht | j o& x# | t D] } d | t GHqÉ Wqˆ qˆ WH| d 7} qn WHd  S(   Ns   Definition Summary: s    Virtual Networks: s     <Customer/O&M>s    <Private Internal>R    t    i   s
    Hosts/VMss     Host #%d R   s     +- s    (deployed)s      +- Partition (   R   t   VLANDEFINITIONSt   NAMER    t   DEPLOYEDt   ADDPARTITIONS(   R"   t
   configNamet   vLant	   hostIndexR$   R%   t   part(    (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   printSummaryN   s<    	  	 	 c         S   sH   xA |  t  t D]1 } x( | d D] } | t | j o | Sq  Wq Wd  S(   NR   (   R   R    R!   t   None(   R"   R   R$   R%   (    (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   findVmm   s      c             s    t  i ˆ ƒ i ƒ  d }  |  t  i ˆ  ƒ i ƒ  d }  t t d t |  ƒ d ƒ ƒ } g  } | D] } | t | ƒ q` ~ } ˆ d |  | ƒ } |  t | ƒ d S(   Ni   i   s#   Select a stock json file to upgrade(   t   ost   walkt   nextt   listt   xrangeR   R   t   int(   t   filesR   t   _[1]t   it   f(   t   customJsonFoldert   altJsonFolderR   (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   selectJsonFileToEditu   s    'c             sû   ˆ og ˆ ƒ  a  y* t i t ˆ t i i t  d ƒ ƒ a WqŒ t i t ˆ  t i i t  d ƒ ƒ a qŒ Xn ˆ a  t i t t  d ƒ ƒ a ˆ o d t  GHn ˆ pF xC t t t	 D]/ }  d |  t
 <x |  d D] } d | t
 <qÑ Wq¶ Wn t d a d  S(   Nt   rs   configFile: t   YR   R,   (   t
   configFilet   jsont   loadt   openR3   t   patht   sept   config_dataR   R    R*   R,   (   R$   R%   (   R=   R>   R?   t   debugt   installedConfigJsonFilet	   preDeploy(    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   loadConfigFile~   s$    	*. 
 s#   /root/cms-cloud-install/config.jsons	   ./altjsons   ./customjsons   cms-kvm-installers   ./G2/altjsont   wins-   C:\git\cms-kvm-base\installer\scripts\altjsons0   C:\git\cms-kvm-base\installer\scripts\customjsons   ?dhvpRI   t   hostAddt   vLanAddt   partitionAddi   s   -?i   s   -ds   --debugs   -vs	   --vLanAdds   -ps   --partitionAddt   UPGRADE_ADDPARTs+    Environment for UPGRADE_ADDPART active. %si    t   ys`   Warning: Add vLan Support is not possible on post deployed system. Disabling option to add vLanss   vLanAddSupport: s   partitionAddSupport: s
   preDeploy:s   altJsonFolder: s   customJsonFolder: s   cwd: s   Welcome to the CMS Upgrade ToolR   R   s   Print Summaryt   ps   Debug Summaryt   ds'   Reload a Stock Config (discard changes)s   Reset (discard changes)R@   s
   Add a Hostt   hs   Add a Virtual Machinet   ms   Add a Virtual Networkt   ns   Add a VM Disk Partitiont   ts   Add a VM NAS Mountt   as   Quit & Cancel Changest   qs   Save Changes & ExitR   s   Main: Select an Optiont   indenti   t	   sort_keyss   Adding new host...iÿÿÿÿs   X.X.X.Xt   accessIPR   t   accessToken1t   accessToken2R   t   0t   maxRAMt   maxCPUt   sizeR   R   id   s   Completed Successfullys   Dropped changes and reloaded.s   Adding new VM...s   Host #t   Cancelt   cs!   Select Host to add the new VM to.t   css   Cluster Servert   edbs   Enterprise DBs   Elastic Searcht   et   Applicationt   Portals   Quit/Cancel adds#   Select VM type to add to this host.t   est   appt   pts   new VM number is t   cnames   cms-t   hostnamet
   customerIPt   dhcpt	   privateIPs   X.X.X.30i   t   ramt   cput	   Cancelleds   Add a new Virtual network...s   Enter vLan Name: s5   Error: vLan %s already exists, specify a unique name.t   customers(   Error: customer is a reserved vLan name.t   privates'   Error: private is a reserved vLan name.t   databaseVIPs   255.255.255.0t   netmaskt   networkt   ethXt   netNict   netNicIPt   IPs   Completed Successfully.s   Add a partition...s   Select Host to select a VM t   cs1s    No un-deployed vms on this host.s   Select VM to add a partition tos   Enter Partition Name: sM   Error: additional partition %s is already on this vm. Select a different namet   mountt   formats   Select VM to add a nas mount toR   R$   t   sharet   types   Not saving file - exiting.s   _customized.jsont   configsToLists   _upgraded.jsons   Saving to %st   w(   s   -ds   --debug(   s   -vs	   --vLanAdd(   s   -ps   --partitionAdd(-   t   Falset   TrueR3   RF   t   isfilet   abspatht   __file__R   t   platformt   getoptt   GetoptErrorR   t   environt   lowerR   t   getcwdR   RH   t   appendR,   RC   t   dumpsR   R    t   copyt   deepcopyR*   t   NASREQUESTSt	   enumerateR8   t   dictt   zfillR)   R   R(   t
   VLANACCESSt   VLANSR+   t	   NASMOUNTSt   joint   splitextt   basenameRB   t   dumpRE   (3   t   argsR   R&   R0   R2   RL   t   hostAddSupportt   vLanAddSupportt   partitionAddSupportt   optst   optt   argt
   mm_optionst
   mm_indexest   donet   retvalR<   t   newHostt   nasesR   R$   t   nast   nasSizet   nasNamet   idxt
   nasRequestt	   hostlabelt	   hostindexR;   t   _t   hostNumt   vmlabelt   vmindext   vmTypet   cgt   newvmt   newNumt   curRAMt   curCPUt   vLanNamet   existst   vLanDefR   R-   R%   t   vmNumt   partnamet   vt   apt   addPartt
   customFile(    (   R>   RI   R=   RK   R   RJ   R   R?   s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   main   sÎ   			
			)


+ 



 *






  


  
 



!
'
		 	

"  	 ! 	!  	"	 ! 	





! 		
95	t   __main__i   (   RC   R   RŒ   R3   R“   R(   R   R    R!   R)   R+   R*   Rš   R™   R›   R•   RB   RH   R,   RÇ   t   __name__R   R   (    (    (    s4   /root/cms-softwareonly-base/scripts/upgradeConfig.pyt   <module>   s.   	ÿ ÿ c