%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/share/netplan/netplan/cli/commands/__pycache__/
Upload File :
Create Path :
Current File : //usr/share/netplan/netplan/cli/commands/__pycache__/migrate.cpython-36.pyc

3

�Bd]�N�@sndZddlZddlZddlZddlZddlmZddlZddlmZddl	Z	ddl
jjZGdd�dej
�ZdS)znetplan migrate command line�N)�glob)�OrderedDictcsVeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
�ZS)�NetplanMigratecst�jddddd�dS)NZmigratez/Migration of /etc/network/interfaces to netplanT)�
command_id�description�leaf�testing)�super�__init__)�self)�	__class__��2/usr/share/netplan/netplan/cli/commands/migrate.pyr
"szNetplanMigrate.__init__cCs�d|krjd|kri|d<d|dkr0g|dd<x2|djd�D] }|sJq@|dd|g7<q@W|d=d|kr�d|kr�i|d<d|dkr�g|dd<x2|djd�D] }|s�q�|dd|g7<q�W|d=dS)z�Parse dns options (dns-nameservers and dns-search) from if_options
        (an interface options dict) into the interface configuration if_config
        Mutates the arguments in place.
        zdns-nameserversZnameservers�	addresses� z
dns-search�searchN)�split)r�
if_options�	if_config�ns�domainr
r
r�parse_dns_options(s(z NetplanMigrate.parse_dns_optionscCs�d|kr�yt|d�}Wn0tk
rHtjd||d�tjd�YnXd|kr~|d|kr~tjd|||d�tjd�||d<|d=dS)z�Parse out the MTU. Operates the same way as parse_dns_options
        iface is the name of the interface, used only to print error messages
        �mtuz%s: cannot parse "%s" as an MTU�z0%s: tried to set MTU=%d, but already have MTU=%dN)�int�
ValueError�logging�error�sys�exit)r�ifacerrrr
r
r�	parse_mtuEs
zNetplanMigrate.parse_mtucCsZd|krVd|krD|d|dkrDtjd||d|d�tjd�|d|d<|d=dS)z�Parse out the manually configured MAC.
        Operates the same way as parse_dns_options
        iface is the name of the interface, used only to print error messages
        Z	hwaddress�
macaddressz0%s: tried to set MAC %s, but already have MAC %srN)rrrr)rr rrr
r
r�parse_hwaddressXs
zNetplanMigrate.parse_hwaddresscCs>|jjddd�|jjdddd�|j|_|j�|j�dS)Nz
--root-dirzOSearch for and generate configuration files in this root directory instead of /)�helpz	--dry-run�
store_truezQPrint converted netplan configuration to stdout instead of writing/changing files)�actionr$)�parser�add_argument�command_migrate�func�
parse_args�run_command)rr
r
r�rungs
zNetplanMigrate.runc2Cs(i}y|j|jpd�\}}Wn:tk
rV}ztjt|��tjd�WYdd}~XnX�x�|j�D�]�\}}�x�|j�D�]�\}}tj	d|||�||kr�tjd|�tjd�|ddkr�tj	d|�qz|ddk�rt|j
d	i�j
d
i�j
|i�}	|j|d|	�|j||d|	�|d�rHtjd|d
j
|dj���tjd�|dk�r\d|	d<n|dk�sjt�d|	d<qz|ddk�r�|j
d	i�j
d
i�j
|i�}	d|	k�r�g|	d<|j|d|	�|j||d|	�|j||d|	�|dk�rtdddg�}
tddddg�}t|dj��}||
}
|
�r�x.|
j|�D] }tjd|||�tjd��q6Wx,|
|D] }tjd|||�tjd��qdWd|dk�r�tjd|�tjd�d|ddk�r�|ddjd�d }|dd}nLd|dk�rtjd!|�tjd�|dd}|ddd|dd}ytj|�}Wn@tjk
�r|}z tjd"|||�tjd�WYdd}~XnXytj|d#d$�}Wn@tjk
�r�}z tjd%|||�tjd�WYdd}~XnX|	dt|�dt|j�g7<d|dk�r�|dd|	d&<�q|dk�s&t�tdddd'g�}
tdd(d)d*dd+d,d-g�}t|dj��}||
}
|
�r�x.|
j|�D] }tjd|||�tjd��qxWx,|
|D] }tjd|||�tjd��q�Wd|dk�r�tjd|�tjd�d|ddk�r$|ddjd�d }|dd}nLd|dk�rHtjd!|�tjd�|dd}|ddd|dd}ytj|�}Wn@tjk
�r�}z tjd.|||�tjd�WYdd}~XnXytj|d#d$�}Wn@tjk
�r}z tjd/|||�tjd�WYdd}~XnX|	dt|�dt|j�g7<d|dk�rV|dd|	d0<d'|dk�r|dd'd1k�r�d#|	d'<nf|dd'd2k�r�d|	d'<nJ|dd'd3k�r�tjd4|�tjd�n tjd5||dd'�tjd�qztjd6||d�tjd�qzWqdWtjj
|j�pdd7�}|�r�d|d	d8<tj|�}|j �rPt!|�n�tjj
|j�p`dd9�}ytj"tjj#|��Wnt$k
�r�YnXy$t%|d:��}|j&|�WdQRXWn,t$k
�r�tjd;|�tjd<�YnXtj'd=|�n
tj'd>�|j �s$tj'd?||�tj(||d@�dS)AN�rzConverting %s family %s %sz.%s: non-automatic interfaces are not supported�method�loopbackzIgnoring loopback interface %s�dhcp�network�	ethernets�optionsz2%s: option(s) %s are not supported for dhcp methodz, �inetTZdhcp4�inet6Zdhcp6�staticrZaddressZnetmaskZgatewayZ	broadcastZmetricZpointopointZscopez%s: unsupported %s option "%s"z%s: unknown %s option "%s"z(%s: no address supplied in static method�/rzE%s: address does not specify prefix length, and netmask not specifiedz-%s: error parsing "%s" as an IPv4 address: %sF)�strictz-%s: error parsing "%s" as an IPv4 network: %sZgateway4Z	accept_raZmediaZautoconfZprivextzpreferred-lifetimezdad-attemptszdad-intervalz-%s: error parsing "%s" as an IPv6 address: %sz-%s: error parsing "%s" as an IPv6 network: %sZgateway6�0�1�2z(%s: netplan does not support accept_ra=2z#%s: unexpected accept_ra value "%s"z%s: method %s is not supportedzetc/network/interfaces�versionzetc/netplan/10-ifupdown.yaml�xzC%s already exists; remove it if you want to run the migration again�zmigration complete, wrote %sz>ifupdown does not configure any interfaces, nothing to migratez#renaming %s to %s.netplan-convertedz.netplan-converted))�parse_ifupdown�root_dirrrr�strrr�items�debug�
setdefaultrr#�join�keys�AssertionErrorr!�set�intersectionr�	ipaddressZIPv4AddressZAddressValueErrorZIPv4NetworkZNetmaskValueErrorZ	prefixlenZIPv6AddressZIPv6Network�os�path�yaml�dump�dry_run�print�makedirs�dirname�FileExistsError�open�write�info�rename)rZnetplan_config�ifacesZauto_ifaces�er Z
family_configZfamily�config�cZsupported_optsZunsupported_opts�optsZbad_optsZunsupported�unknownZ	addr_specZnet_specZipaddr�aZipnetrZnetplan_yaml�dest�fr
r
rr)qs









$


$




zNetplanMigrate.command_migratec
CsZdd�}g}t|�d}�yt|d|���}tjd|j�x�|D]�}|j�}|sB|jd�r`qB|jd�r�tjd�}||t	j
j|j�|�}	x�t	j|	�D]0}|j
|�r�||j|t	j
j|	|d	�|��7}q�WqB|jd
��rxFt||t	j
j|j�|��D]}||j|||d	��7}q�WqB|j|�qBWWd	QRXWn$tk
�rTtjd||�YnX|S)zvReturn normalized lines from ifupdown config

        This resolves "source" and "source-directory" includes.
        cSs.|j�d}|jd�r||S|d|SdS)N�r8)r�
startswith)�rootdir�curdir�line�argr
r
r�expand_source_arg@s
zCNetplanMigrate._ifupdown_lines_from_file.<locals>.expand_source_argrbr8z
reading %s�#zsource-directory z^[a-zA-Z0-9_-]+$Nzsource z%s/%s does not exist, ignoring)�lenrUrrD�name�striprc�re�compilerLrMrS�listdir�match�_ifupdown_lines_from_filerFr�append�FileNotFoundError)
rrdrMrh�linesZrootdir_lenrarfZvalid_re�dr
r
rrq;s.



( z(NetplanMigrate._ifupdown_lines_from_filer8cCs�ddddddd�}|j|d�}t�}t�}d}d}�x�|D�]�}|j�}	y&||	d}
tjd|	|
�d}d}Wn^tk
r�|r�tjd||�|jdd	�d|||d
|	d<w:ntd|	d��YnXt|	�|
dkr�td|
|	dt|	�df��|	ddk�r|j	|	d�q:|	ddk�r2td��q:|	ddk�rBq:|	ddk�r�|	dd k�rntd|	d��|	dd!k�r�td|	d��|	d}|	d}|	did�|j
|	dt��|<q:td|	d��q:Wtjd||�||fS)"uWParse ifupdown configuration.

        Return (iface_name →  family → {method, options}, auto_ifaces: set) tuple
        on successful parsing, or a ValueError when encountering an invalid file or
        ifupdown features which are not supported (such as "mapping").

        options is itself a dictionary option_name → value.
        rbr?)�autoz
allow-autoz
allow-hotplug�mappingz
no-scriptsr z/etc/network/interfacesNrz$line fields %s (expected length: %i)z$in_options %s, parsing as option: %s)�maxsplitr4zUnknown stanza type %sz0Expected %i fields for stanza type %s but got %irv�
allow-auto�
allow-hotplugrwzmapping stanza is not supportedz
no-scriptsr rr5r6zUnknown address family %sr0r7r1zUnsupported method %s)r/r4z!stanza type %s is not implementedz,final parsed interfaces: %s; auto ifaces: %s)rvryrz)r5r6)r0r7r1)rqrrIrrrD�KeyErrorrrj�addrE�NotImplementedError)rrdZfieldlenrtrYrvZ
in_optionsZ	in_familyrfZfieldsZexp_lenr
r
rr@asN
$
"zNetplanMigrate.parse_ifupdown)r8)�__name__�
__module__�__qualname__r
rr!r#r-r)rqr@�
__classcell__r
r
)rrr s
K&r)�__doc__rrLrrmrrN�collectionsrrK�netplan.cli.utils�cli�utils�NetplanCommandrr
r
r
r�<module>s

Zerion Mini Shell 1.0