a 'DgJ@sdZddlZddlZddlZddlZddlZddlZddlmZm Z ddl m Z ddl m Z mZmZmZmZmZddlmZddlmZddlmZd Zdd d Zd d ZedkreZeeedS)z(Debug network config format conversions.N)distrossafeyaml)loggers)eninetplannetwork_manager network_statenetworkd sysconfig)DataSourceAzure) openstack)guestcust_utilz net-convertcCs|stjttd}|jddtdddd|jdd gd dd d |jd ddddd|jddddtjDdd|jdddddd|jdddd|jd d!gd"dd#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--kind)rnetwork_data.jsonyaml azure-imds vmware-imcz&The format of the given network config)choicesrrz-dz --directoryzdirectory to place output in)rrrz-Dz--distrocSsg|]}|D]}|q qSr).0ZsublistitemrrC/usr/lib/python3.9/site-packages/cloudinit/cmd/devel/net_convert.py Gszget_parser..)rrz-mz--maczname,macappendzinterface name to mac mapping)ractionrz--debug store_truezenable debug logging to stderr.)r rz-Oz --output-kind)rrr r network-managerz!The network config format to emit) argparseArgumentParserNAME__doc__ add_argumentopenrZ OSFAMILIESvalues)parserrrr get_parsersd r+c Cs|jds|jd7_tj|js4t|j|jrJtjt j dntjt j d|j ri}|j D]}| dd\}}|||<qhnd}|j}|jdkrt|}n|jdkrt|}d|vr|d}|jrtjdd t|d gnt|jd krtjt||d }nR|jd kr@t j!t|ddd}n,|jdkrlt"#t"$|jj%}t"&|d}t'(|j)} | |j)id} |j*dkrtj+} | j,d}n|j*dkrt-j+} | j,di}d|d<|ddd|d<ddg|d<nh|j*dkrt.j+} | j,d}nH|j*dkr0t/j+} | j,d}n(|j*dkrPt0j+} | j,d}nt1d| |d} t2j3|| d} |jrtjdd dt4| d gtjd d|j|jj%fd |j*|jfgd| j5| |jd!dS)"N/)level,rrnetwork z Input YAMLr) known_macsrT)Z&apply_network_config_for_secondary_ipsrFrZpostcmdsZ netplan_pathzdhcp-use-domainszipv6-mtuZfeaturesr r r"zInvalid output_kind)config)ZrendererzInternal Statez"Read input format '%s' from '%s'. z!Wrote output format '%s' to '%s' )rtarget)6Z directoryendswithospathisdirmakedirsdebugrZsetup_basic_loggingloggingDEBUGZWARNZmacsplitZ network_datareadkindrZconvert_eni_datarZ safe_loadgetsysstderrwritejoinrdumpsr 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_datadumpZrender_network_state)rJargsr3rZ iface_nameZ iface_macZnet_dataZpre_nsr4Z distro_clsrKZr_clsrnsrrr handle_args`s                           rQ__main__)N) r&r#rGr<r7rBrZ cloudinitrrZ cloudinit.logrZ cloudinit.netrrrrr r Zcloudinit.sourcesr rIZcloudinit.sources.helpersr Z$cloudinit.sources.helpers.vmware.imcr r%r+rQ__name__ parse_argsrNrrrrs$      B]