3 \me$@sdZddlZddlZddlZddlZddlZddlZddlmZm Z m Z ddl m Z m Z mZmZmZmZddlmZddlmZddlmZdZdd d Zd d Zed krejZeeedS)z(Debug network config format conversions.N)distroslogsafeyaml)eninetplannetwork_manager network_statenetworkd sysconfig)DataSourceAzure) openstack)guestcust_utilz net-convertcCs|stjttd}|jddtdddd|jdd d d d d dgddd|jdddddd|jddddtjjDdd|jdddddd|jd d!d"d#|jd$d%d d&d'd(d)gdd*d|S)+aBuild 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-dataPATHTz!The network configuration to read)typemetavarrequiredhelpz-kz--kindrznetwork_data.jsonyamlz azure-imdsz vmware-imcz&The format of the given network config)choicesrrz-dz --directoryzdirectory to place output in)rrrz-Dz--distrocSsg|]}|D]}|q qSr).0Zsublistitemrr!/usr/lib/python3.6/net_convert.py Gszget_parser..)rrz-mz--maczname,macappendzinterface name to mac mapping)ractionrz--debug store_truezenable debug logging to stderr.)rrz-Oz --output-kindrr r znetwork-managerz!The network config format to emit) argparseArgumentParserNAME__doc__ add_argumentopenrZ OSFAMILIESvalues)parserrrr get_parsersZ  r'cCs|jjds|jd7_tjj|js4tj|j|jrJtjt j dntjt j d|j ri}x,|j D]}|j dd\}}|||<qjWnd}|jj}|jdkrtj|}n|jdkrtj|}d|kr|jd}|jrttjjdjd tj|d gnt|jd kr"tjtj||d }nR|jd krHtj tj|ddd}n,|jdkrtt!j"t!j#|jj$}t!j%|d}t&j'|j(} | |j(id} |j)dkrtj*} | j+jd}n|j)dkrt,j*} | j+jdi}d|d<|ddd|d<ddg|d<nh|j)dkrt-j*} | j+jd}nH|j)dkr8t.j*} | j+jd}n(|j)dkrXt/j*} | j+jd}nt0d| |d} t1j2|| d} |jrtjjdjd dt3j4| d gtjjd jd|j|jj$fd |j)|jfgd| j5| |jd!dS)"N/)level,rrZnetwork z Input YAMLznetwork_data.json) known_macsz azure-imdsT)Z&apply_network_config_for_secondary_ipsz vmware-imcFrZpostcmdsZ netplan_pathzdhcp-use-domainszipv6-mtuZfeaturesr r znetwork-managerzInvalid output_kind)config)ZrendererzInternal Statez"Read input format '%s' from '%s'. z!Wrote output format '%s' to '%s' )rtarget)6Z directoryendswithospathisdirmakedirsdebugrZsetup_basic_loggingloggingDEBUGZWARNZmacsplitZ network_datareadZkindrZconvert_eni_datarloadgetsysstderrwritejoindumpsr Zconvert_net_jsonjsonloadsazureZ6generate_network_config_from_instance_network_metadatar ZConfigZ ConfigFilenameZ%get_network_data_from_vmware_cust_cfgrZfetchdistroZ output_kindZRendererZrenderer_configsrr r r RuntimeErrorrZparse_net_config_datardumpZrender_network_state)rEargsr.rZ iface_nameZ iface_macZnet_dataZpre_nsr/Z distro_clsrFZr_clsrnsrrr handle_args_s                      rL__main__)N)r"rrBr7r2r=rZ cloudinitrrrZ cloudinit.netrrrrr r Zcloudinit.sourcesr rDZcloudinit.sources.helpersr Z$cloudinit.sources.helpers.vmware.imcr r!r'rL__name__ parse_argsrIrrrrs"     B]