+
    ˜qgj¢"  ã                   ó‚   € ^ RI t ^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIH	t	H
t
 ]P                  ! ]4      t ! R R4      tR# )é    N)ÚnetÚsubpÚutil)Úipv4_mask_to_net_prefixÚipv6_mask_to_net_prefixc                   ó†   a € ] tR t^t o RR ltR tR tR tR tR t	R t
R tR	 tR
 tR tR tRR ltR tRR ltRtV tR# )ÚNicConfiguratorc                ó  € Wn         W n        W0n        / V n        V'       d   V P	                  4        MDV P                    F4  pVP
                  V P                  VP                  P                  4       &   K6  	  V P                  4       V n	        R# )zë
Initialize the Nic Configurator
@param nics (list) an array of nics to configure
@param use_system_devices (Bool) Get the MAC names from the system
if this is True. If False, then mac names will be retrieved from
 the specified nics.
N)
ÚnicsÚname_serversÚdns_suffixesÚmac2NameÚfind_devicesÚnameÚmacÚlowerÚget_primary_nicÚ_primaryNic)Úselfr   r   r   Úuse_system_devicesÚnics   &&&&& ÚQ/usr/lib/python3/dist-packages/cloudinit/sources/helpers/vmware/imc/config_nic.pyÚ__init__ÚNicConfigurator.__init__   sh   € ð Œ	Ø(ÔØ(ÔØˆŒçØ×ÑÕà—y”y�Ø14·±�—‘˜cŸg™gŸm™m›oÓ.ñ !ð  ×/Ñ/Ó1ˆÖó    c                ó  € V P                    Uu. uF  qP                  '       g   K  VNK  	  ppV'       g   R# \        V4      ^8”  d&   \        RV Uu. uF  qP                  NK  	  up4      hV^ ,          # u upi u upi )zd
Retrieve the primary nic if it exists
@return (NicBase): the primary nic if exists, None otherwise
Nz!There can only be one primary nic)r   ÚprimaryÚlenÚRuntimeErrorr   )r   r   Úprimary_nicss   &  r   r   ÚNicConfigurator.get_primary_nic1   sp   € ð
 (,§y¢yÓ@¡y ·KµKŸ˜¡yˆÐ@ßÙÜ�Ó Ô"ÜØ3Ù$0Ó1¡L˜S—”¡LÑ1óð ð
   •?Ð"ùò Aùò 2s   �A7§A7ÁA<
c                ój  € . ROp\         P                   ! V4      w  r#\        P                  ! RRV,           4      R,          pRpV Fi  p\        P                  ! WV4      pV'       g   K#  VP	                  ^4      P                  4       pVP                  R^4      ^ ,          p	W�P                  V&   Kk  	  R# )zJ
Create the mac2Name dictionary
The mac address(es) are in the lower case
z\n\d+: Ú
:é   NNz3link/ether (([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2}))Ú:N)ÚipÚaddrÚshow)r   ÚreÚsplitÚsearchÚgroupr   r   )
r   ÚcmdÚoutputÚ_errÚsectionsÚmacPatÚsectionÚmatchr   r   s
   &         r   r   ÚNicConfigurator.find_devicesA   s‹   € ò
 %ˆÜ—y’y “~‰ˆÜ—8’8˜J¨¨v­Ó6°rÕ:ˆàGˆÛˆGÜ—I’I˜fÓ.ˆEßÙØ—+‘+˜a“.×&Ñ&Ó(ˆCØ—=‘=  aÓ(¨Õ+ˆDØ!%�M‰M˜#Óó  r   c           	     ó  € VP                   P                  4       pV P                  P                  V4      pV'       g   \	        RVP                   ,          4      h/ pV P                  V4      V P                  V4      V P                  V4      V P                  V4      V P                  V4      V P                  V4      V P                  V4      V P                  4       .pV F  pV'       g   K  VP                  V4       K   	  W4/# )z’
Return the config dict needed to configure a nic
@return (dict): the config dict to configure the nic
@param nic (NicBase): the nic to configure
zNo known device has MACADDR: %s)r   r   r   ÚgetÚ
ValueErrorÚ	gen_matchÚgen_set_nameÚgen_wakeonlanÚ	gen_dhcp4Ú	gen_dhcp6Úgen_addressesÚ
gen_routesÚgen_nameserversÚupdate)r   r   r   r   Únic_config_dictÚ
generatorsÚvalues   &&     r   Úgen_one_nic_v2ÚNicConfigurator.gen_one_nic_v2S   sÛ   € ð �g‰g�m‰m‹oˆØ�}‰}× Ñ  Ó%ˆßÜÐ>ÀÇÁÕHÓIÐIàˆà�N‰N˜3ÓØ×Ñ˜dÓ#Ø×Ñ˜sÓ#Ø�N‰N˜3ÓØ�N‰N˜3ÓØ×Ñ˜sÓ#Ø�O‰O˜CÓ Ø× Ñ Ó"ð	
ˆ
ó  ˆEß‰uØ×&Ñ& uÖ-ñ  ð Ð&Ð&r   c                ó   € R RV//# )r3   Ú
macaddress© )r   r   s   &&r   r8   ÚNicConfigurator.gen_matcho   s   € Ø˜,¨Ð,Ð-Ð-r   c                ó
   € R V/# )zset-namerH   )r   r   s   &&r   r9   ÚNicConfigurator.gen_set_namer   s   € Ø˜DÐ!Ð!r   c                ó   € R VP                   /# )Ú	wakeonlan)Úonboot)r   r   s   &&r   r:   ÚNicConfigurator.gen_wakeonlanu   s   € Ø˜SŸZ™ZÐ(Ð(r   c                óP  € / pVP                   P                  4       pVP                  P                  4       R 8X  d   RpVR8w  dO   VP                  RR/4       V P                  '       g   V P
                  '       d   VP                  RRR//4       V# VP                  RR/4       V# )ÚdisabledÚmanualÚstaticÚdhcp4Tzdhcp4-overrideszuse-dnsF)Ú	bootProtor   Ú	ipv4_moder@   r   r   )r   r   rT   Ú	bootprotos   &&  r   r;   ÚNicConfigurator.gen_dhcp4x   s˜   € ØˆØ—M‘M×'Ñ'Ó)ˆ	Ø�=‰=×ÑÓ  JÔ.Ø ˆIØ˜Ô Ø�L‰L˜' 4˜Ô)à× × Ð  D×$5×$5Ð$5Ø—‘Ð/°)¸UÐ1CÐDÔEð ˆð �L‰L˜' 5Ð)Ô*Øˆr   c                óT   € / pVP                   '       d   VP                  R R/4       V# )Údhcp6F)Ú
staticIpv6r@   )r   r   rZ   s   && r   r<   ÚNicConfigurator.gen_dhcp6†   s(   € ØˆØ�>�>ˆ>Ø�L‰L˜' 5Ð)Ô*ð ˆr   c                ó¶  € . p^ pVP                   pV'       dc   V^ ,          pVP                  '       d   \        VP                  4      pVP                  '       d!   VP	                  VP                   RV 24       VP
                  pV'       d?   V F8  p\        VP                  4      pVP	                  VP                   RV 24       K:  	  V'       d   RV/# / # )é    Ú/Ú	addresses)Ú
staticIpv4Únetmaskr   r&   Úappendr[   r   )	r   r   Úaddress_listÚv4_cidrÚv4_addrsÚv4Úv6_addrsÚv6Úv6_cidrs	   &&       r   r=   ÚNicConfigurator.gen_addressesŽ   s¶   € ØˆØˆð —>‘>ˆßØ˜!•ˆBØ�z�zˆzÜ1°"·*±*Ó=�Ø�u�uˆuØ×#Ñ# r§u¡u g¨Q¨w¨iÐ$8Ô9à—>‘>ˆßÛ�Ü1°"·*±*Ó=�Ø×#Ñ# r§u¡u g¨Q¨w¨iÐ$8Ö9ñ ÷ Ø Ð.Ð.àˆIr   c                óÞ  € . p^ pVP                   pV'       då   V^ ,          pVP                  '       d9   VP                  '       d'   VP                  RRRVP                  ^ ,          /4       V P                  '       g€   VP                  '       dn   VP
                  '       d   \        VP
                  4      pVP                   F6  p\        P                  ! V RV 2RR7      pVP                  RV RV/4       K8  	  VP                  pV'       dÑ   V FÊ  p	\        V	P
                  4      p
VP                  '       d2   V	P                  '       d    VP                  RRRV	P                  /4       V P                  '       d   Ko  V	P                  '       g   Kƒ  \        P                  ! V	P                   RV
 2RR7      pVP                  RV RV	P                  /4       KÌ  	  V'       d   RV/# / # )	r^   Útoz	0.0.0.0/0Úviar_   F)Ústrictz::/0Úroutes)ra   r   Úgatewaysrc   r   rb   r   Ú	ipaddressÚIPv4Networkr[   r   ÚgatewayÚIPv6Network)r   r   Ú
route_listre   rf   rg   rt   Ú	v4_subnetrh   ri   rj   Ú	v6_subnets   &&          r   r>   ÚNicConfigurator.gen_routes¦   sˆ  € Øˆ
Øˆð —>‘>ˆßØ˜!•ˆBà�{�{ˆ{˜rŸ{Ÿ{˜{Ø×!Ñ! 4¨°e¸R¿[¹[È½^Ð"LÔMà×#×#Ð#¨¯¯¨Ø—:—:�:Ü5°b·j±jÓA�GØ!Ÿ{œ{�GÜ )× 5Ò 5Ø"˜) 1 W IÐ.°uô!�Ið ×%Ñ% t°	¨{¸UÀGÐ&LÖMñ	  +ð —>‘>ˆßÛ�Ü1°"·*±*Ó=�à—;—;�; 2§:§: :Ø×%Ñ% t¨V°U¸B¿J¹JÐ&GÔHà×'×'Ò'¨B¯J¯JªJÜ )× 5Ò 5ØŸ:™:˜, a¨ yÐ1¸%ô!�Ið ×%Ñ%Ø ) ¨u°b·j±jÐAöñ ÷ Ø˜jÐ)Ð)àˆIr   c                ón  € / p. p. pV P                   '       d%   V P                    F  pVP                  V4       K  	  V P                  '       d%   V P                   F  pVP                  V4       K  	  V'       d   VP                  R V/4       V'       d   VP                  RV/4       V'       d   RV/# / # )r+   r`   Únameservers)r   rc   r   r@   )r   Únameservers_dictÚsearch_listÚaddresses_listÚ
dns_suffixÚname_servers   &     r   r?   ÚNicConfigurator.gen_nameserversÐ   s¦   € ØÐØˆØˆØ××ÐØ"×/Ô/�
Ø×"Ñ" :Ö.ñ 0à××ÐØ#×0Ô0�Ø×%Ñ% kÖ2ñ  1çØ×#Ñ# X¨{Ð$;Ô<ßØ×#Ñ# [°.Ð$AÔBçØ!Ð#3Ð4Ð4àˆIr   Nc                óÌ   € V'       d'   \         P                  R4       V P                  V4       / pV P                   F#  pVP	                  V P                  V4      4       K%  	  V# )z@Return the config elements that are needed to configure the nicszConfiguring the interfaces file)ÚloggerÚinfoÚ	configurer   r@   rD   )r   r…   ÚosfamilyÚethernets_dictr   s   &&&  r   ÚgenerateÚNicConfigurator.generateä   sR   € çÜ�K‰KÐ9Ô:Ø�N‰N˜8Ô$àˆà—9”9ˆCØ×!Ñ! $×"5Ñ"5°cÓ":Ö;ñ ð Ðr   c                ó€   € \         P                  R 4       \        P                  P                  P                  4        R# )zClearing DHCP leasesN)rƒ   r„   r   ÚdhcpÚIscDhclientÚclear_leases)r   s   &r   Ú
clear_dhcpÚNicConfigurator.clear_dhcpñ   s%   € Ü�‰Ð*Ô+Ü�‰×Ñ×)Ñ)Ö+r   c                ó  € V'       d   VR8w  d   \         P                  R4       R# Rp\        P                  P	                  VR4      p\        P                  P	                  VR4      p\        P                  P                  V4      '       g<   \        P                  P                  V4      '       d   \        P                  ! W44       . R	Op\        P                  ! VRP	                  V4      R7       V P                  4        R# )
zF
Configure the /etc/network/interfaces
Make a back up of the original
Údebianz3Debian OS not detected. Skipping the configure stepNz/etc/networkÚ
interfacesz&interfaces.before_vmware_customizationr#   )Úcontent)zH# DO NOT EDIT THIS FILE BY HAND -- AUTOMATICALLY GENERATED BY cloud-initz"source /etc/network/interfaces.d/*z*source-directory /etc/network/interfaces.d)
rƒ   r„   ÚosÚpathÚjoinÚexistsÚrenamer   Ú
write_filerŽ   )r   r†   ÚcontainingDirÚinterfaceFileÚoriginalFileÚliness   &&    r   r…   ÚNicConfigurator.configureõ   s¬   € ÷ ˜8 xÔ/Ü�K‰KÐMÔNÙà&ˆäŸ™Ÿ™ ]°LÓAˆÜ—w‘w—|‘|ØÐCó
ˆô �w‰w�~‰~˜l×+Ò+´·±·±¸}×0MÒ0MÜ�IŠI�mÔ2ò
ˆô 	�Š˜¨t¯y©y¸Ó/?Õ@à�‰Ör   )r   r   r   r   r   )T)FN)N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   rD   r8   r9   r:   r;   r<   r=   r>   r?   rˆ   rŽ   r…   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r	   r	      sV   ø‡ € ô2ò.#ò &ò$'ò8.ò"ò)òòòò0(òTô(ò,÷ò r   r	   )rr   Úloggingr”   r)   Ú	cloudinitr   r   r   Úcloudinit.net.network_stater   r   Ú	getLoggerrŸ   rƒ   r	   rH   r   r   Ú<module>rª      s<   ðó Û Û 	Û 	ç %Ñ %÷ð
 
×	Ò	˜8Ó	$€÷yó yr   