
    th!                     R   d Z ddlZddlZddlZddl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mZmZmZmZmZ 	 ddlmZ dZ	 dd	lmZ dZ	 dd
lmZ dZdZddZd Z e!dk(  r e       jE                         Z# e ee#       yy# e$ r dZY Iw xY w# e$ r dZY Mw xY w# e$ r dZY Qw xY w)z(Debug network config format conversions.    N)distrossafeyaml)loggers)eninetplannetwork_managernetwork_statenetworkd	sysconfig)DataSourceAzureTF)	openstack)guestcust_utilznet-convertc           
         | st        j                  t        t              } | j	                  ddt
        ddd       dd	g}t        r|j                  d
       t        r|j                  d       t        r|j                  d       | j	                  dd|dd       | j	                  ddddd       | j	                  ddt        j                  j                         D cg c]  }|D ]  }|  c}}d       | j	                  ddddd       | j	                  ddd !       | j	                  d"d#g d$dd%       | S c c}}w )&a  Build or extend and arg parser for net-convert utility.

    @param parser: Optional existing ArgumentParser instance representing the
        subcommand which will be extended to support the args of this utility.

    @returns: ArgumentParser with proper argument configuration.
    )progdescriptionz-pz--network-dataPATHTz!The network configuration to read)typemetavarrequiredhelpr   yaml
azure-imdsnetwork_data.json
vmware-imcz-kz--kindz&The format of the given network config)choicesr   r   z-dz--directoryzdirectory to place output in)r   r   r   z-Dz--distro)r   r   z-mz--maczname,macappendzinterface name to mac mapping)r   actionr   z--debug
store_truezenable debug logging to stderr.)r   r   z-Oz--output-kind)r   r   r
   r   network-managerz!The network config format to emit)argparseArgumentParserNAME__doc__add_argumentopenazure_kind_availabler   openstack_kind_availablevmware_kind_availabler   
OSFAMILIESvalues)parseravailable_kindssublistitems       A/usr/lib/python3/dist-packages/cloudinit/cmd/devel/net_convert.py
get_parserr0   1   s    ((dH
0   foO|,23|,
5   +    ' 2 2 9 9 ;

@DD

    ,   ,-N   N0   M-
s    D>c           
      Z
   |j                   j                  d      s|xj                   dz  c_         t        j                  j	                  |j                         st        j
                  |j                          |j                  r%t        j                  t        j                         n$t        j                  t        j                         |j                  r.i }|j                  D ]  }|j                  dd      \  }}|||<    nd }|j                  j                         }|j                   dk(  rt#        j$                  |      }nc|j                   dk(  r|t'        j(                  |      }d|v r|j+                  d      }|j                  rt,        j.                  j1                  dj3                  d	t5        j6                  |      d
g             n|j                   dk(  r+t9        j:                  t=        j>                  |      |      }n|j                   dk(  r.tA        jB                  t=        j>                  |      d   d      }na|j                   dk(  rRtE        jF                  tE        jH                  |j                  jJ                              }tE        jL                  |d      }tO        jP                  |jR                        }	 |	|jR                  i d       }
|jT                  dk(  r-t"        jV                  }|
jX                  j+                  d      }n|jT                  dk(  rDtZ        jV                  }|
jX                  j+                  di       }d|d<   |d   dd  |d<   ddg|d<   n|jT                  dk(  r,t\        jV                  }|
jX                  j+                  d      }n|jT                  dk(  r,t^        jV                  }|
jX                  j+                  d      }nF|jT                  dk(  r,t`        jV                  }|
jX                  j+                  d      }ntc        d       ||      }te        jf                  |      }|j                  rEt,        j.                  j1                  dj3                  d
dt'        jh                  |      d
g             t,        j.                  j1                  d
j3                  d|j                   d |j                  jJ                  d!d"|jT                  d#|j                   d$g      dz          |jk                  ||j                   %       y )&N/)level,   r   r   network
z
Input YAML r   )
known_macsr   T)&apply_network_config_for_secondary_ipsr   Fr   postcmdsnetplan_pathzdhcp-use-domainszipv6-mtufeaturesr
   r   r   zInvalid output_kind)config)rendererzInternal StatezRead input format 'z' from 'z'.
zWrote output format 'z' to 'z'
)r	   target)6	directoryendswithospathisdirmakedirsdebugr   setup_basic_loggingloggingDEBUGWARNmacsplitnetwork_datareadkindr   convert_eni_datar   	safe_loadgetsysstderrwritejoinr   dumpsr   convert_net_jsonjsonloadsazure6generate_network_config_from_instance_network_metadatar   Config
ConfigFilename%get_network_data_from_vmware_cust_cfgr   fetchdistrooutput_kindRendererrenderer_configsr   r
   r   r   RuntimeErrorr	   parse_net_config_datadumprender_network_state)r`   argsr9   r.   
iface_name	iface_macnet_datapre_nsr>   
distro_clsrc   r_clsrnss                 r/   handle_argsrt   y   s   >>""3'#77==(
DNN#zz##'--8##',,7xx
HH 	/D$(JJsA$6!J	$.Jy!	/ 
  %%'HyyE%%h/	f	)ZZ	*F::JJ		<)?DE 
)	)++JJx Z
 
l	"MMJJx +37
 
l	"&&%%d&7&7&<&<=
  EEE
 t{{+JR.F5 ((,,U3			Y	&  ((,,Y;"z!'!7!;~0*=z			Z	'!!((,,Z8			[	(""((,,[9			.	.((((,,->?011VA		,	,Va	@Bzz

B(8$))B-#LMNJJ
 99d//446 ##T^^5	
 	
 DNNC    __main__)N)$r#   r    rZ   rI   rC   rT   r   	cloudinitr   r   cloudinit.logr   cloudinit.netr   r   r   r	   r
   r   cloudinit.sourcesr   r\   r&   ImportErrorcloudinit.sources.helpersr   r'   $cloudinit.sources.helpers.vmware.imcr   r(   r"   r0   rt   __name__
parse_argsrk    ru   r/   <module>r      s    /    	 
  ' !  :  $3  $!C ! EPZDz z<""$Dd y  ! !  %$%  "!"s5   B B B BBBBB&%B&