
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me$                 @   s   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	m
Z
 ddlmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dZdd	d
Zdd Zedkre j Zeee dS )z(Debug network config format conversions.    N)distroslogsafeyaml)eninetplannetwork_managernetwork_statenetworkd	sysconfig)DataSourceAzure)	openstack)guestcust_utilznet-convertc             C   s   | st jttd} | jddtdddd | jdd	d
ddddgddd | jdddddd | jdddd tjj D dd | jdddddd | jd d!d"d# | jd$d%d
d&d'd(d)gdd*d | S )+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helpz-kz--kindr   znetwork_data.jsonyamlz
azure-imdsz
vmware-imcz&The format of the given network config)choicesr   r   z-dz--directoryzdirectory to place output in)r   r   r   z-Dz--distroc             S   s   g | ]}|D ]}|qqS  r   ).0Zsublistitemr   r   !/usr/lib/python3.6/net_convert.py
<listcomp>G   s    zget_parser.<locals>.<listcomp>)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-kindr   r	   r
   znetwork-managerz!The network config format to emit)	argparseArgumentParserNAME__doc__add_argumentopenr   Z
OSFAMILIESvalues)parserr   r   r   
get_parser   sZ    r'   c             C   s  |j jds| j d7  _ tjj|j s4tj|j  |jrJtjt	j
d ntjt	jd |jri }x,|jD ]}|jdd\}}|||< qjW nd }|jj }|jdkrtj|}n|jdkr tj|}d|kr|jd}|jrttjjdjd	tj|d
g nt|jdkr"tjtj||d}nR|jdkrHtj tj|d dd}n,|jdkrtt!j"t!j#|jj$}t!j%|d}t&j'|j(}	|	|j(i d }
|j)dkrtj*}|
j+jd}n|j)dkrt,j*}|
j+jdi }d|d< |d dd  |d< ddg|d< nh|j)dkrt-j*}|
j+jd}nH|j)dkr8t.j*}|
j+jd}n(|j)dkrXt/j*}|
j+jd}nt0d||d}t1j2||d}|jrtjjdjd
dt3j4|d
g tjjd
jd|j|jj$f d |j)|j f gd  |j5||j d! d S )"N/)level,   r   r   Znetwork
z
Input YAML znetwork_data.json)
known_macsz
azure-imdsT)Z&apply_network_config_for_secondary_ipsz
vmware-imcFr   ZpostcmdsZnetplan_pathzdhcp-use-domainszipv6-mtuZfeaturesr	   r
   znetwork-managerzInvalid output_kind)config)ZrendererzInternal Statez"Read input format '%s' from '%s'.
z!Wrote output format '%s' to '%s'
)r   target)6Z	directoryendswithospathisdirmakedirsdebugr   Zsetup_basic_loggingloggingDEBUGZWARNZmacsplitZnetwork_datareadZkindr   Zconvert_eni_datar   loadgetsysstderrwritejoindumpsr   Zconvert_net_jsonjsonloadsazureZ6generate_network_config_from_instance_network_metadatar   ZConfigZ
ConfigFilenameZ%get_network_data_from_vmware_cust_cfgr   ZfetchdistroZoutput_kindZRendererZrenderer_configsr   r	   r
   r   RuntimeErrorr   Zparse_net_config_datar   dumpZrender_network_state)rE   argsr.   r   Z
iface_nameZ	iface_macZnet_dataZpre_nsr/   Z
distro_clsrF   Zr_clsrnsr   r   r   handle_args_   s    





 rL   __main__)N)r"   r   rB   r7   r2   r=   r   Z	cloudinitr   r   r   Zcloudinit.netr   r   r   r   r	   r
   Zcloudinit.sourcesr   rD   Zcloudinit.sources.helpersr   Z$cloudinit.sources.helpers.vmware.imcr   r!   r'   rL   __name__
parse_argsrI   r   r   r   r   <module>   s"    
B]
