404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@18.118.26.128: ~ $
3

\�me"T�	@s*UdZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZddlm
Z
ddlmZddlmZddlmZddlmZmZmZdd	lmZdd
lmZddlmZmZddlm Z m!Z!dd
l"m#Z#dZ$e#Z%ddde$e ge%ed�ed�ggd�Z&e&ee&�Zddgdd�Z'ed�Z(Gdd�d�Z)ej*e+�Z,e-e!e.d�dd�Z/Gdd �d e0�Z1Gd!d"�d"e
�Z2Gd#d$�d$e2�Z3Gd%d&�d&e2�Z4Gd'd(�d(e2�Z5d)d*�Z6d+d,�Z7d-d.�Z8d/d0�Z9e:d1�d2d3�Z;d4d5�Z<ee-e-fd1�d6d7�Z=d8d9�Z>e-eee.dd:�d;d<�Z?d=e3fd>e4fd?e5ffZ@dS)@zGrowpart: Grow partitions�N)�ABC�abstractmethod)�suppress)�Path)�dedent)�Tuple)�subp�
temp_utils�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�ALL_DISTROS�Distro)�
PER_ALWAYSa6Growpart resizes partitions to fill the available disk space.
This is useful for cloud instances with a larger amount of disk space available
than the pristine image uses, as it allows the instance to automatically make
use of the extra space. Note that this only works if the partition to be
resized is the last one on a disk with classic partitioning scheme (MBR, BSD,
GPT). LVM, Btrfs and ZFS have no such restrictions.

The devices on which to run growpart are specified as a list under the
``devices`` key.

There is some functionality overlap between this module and the ``growroot``
functionality of ``cloud-initramfs-tools``. However, there are some situations
where one tool is able to function and the other is not. The default
configuration for both should work for most cloud instances. To explicitly
prevent ``cloud-initramfs-tools`` from running ``growroot``, the file
``/etc/growroot-disabled`` can be created. By default, both ``growroot`` and
``cc_growpart`` will check for the existence of this file and will not run if
it is present. However, this file can be ignored for ``cc_growpart`` by setting
``ignore_growroot_disabled`` to ``true``. For more information on
``cloud-initramfs-tools`` see: https://launchpad.net/cloud-initramfs-tools

On FreeBSD, there is also the ``growfs`` service, which has a lot of overlap
with ``cc_growpart`` and ``cc_resizefs``, but only works on the root partition.
In that configuration, we use it, otherwise, we fall back to ``gpart``.

Note however, that ``growfs`` may insert a swap partition, if none is present,
unless instructed not to via ``growfs_swap_size=0`` in either ``kenv(1)``, or
``rc.conf(5)``.

Growpart is enabled by default on the root partition. The default config for
growpart is::

    growpart:
      mode: auto
      devices: ["/"]
      ignore_growroot_disabled: false
Zcc_growpartZGrowpartzGrow partitionsz�            growpart:
              mode: auto
              devices: ["/"]
              ignore_growroot_disabled: false
            z�            growpart:
              mode: growpart
              devices:
                - "/"
                - "/dev/vdb1"
              ignore_growroot_disabled: true
            )�id�name�title�descriptionZdistros�	frequencyZexamplesZactivate_by_schema_keys�auto�/F)�mode�devices�ignore_growroot_disabledz/cc_growpart_keydatac@seZdZdZdZdZdZdS)�RESIZE�SKIPPED�CHANGED�NOCHANGE�FAILEDN)�__name__�
__module__�__qualname__rrrr �r$r$�!/usr/lib/python3.6/cc_growpart.pyrosr)r�distrorcCs�d}|dkrFx*tD]"\}}||�}|j|d�r|}PqW|s�td��n^i}xtD]\}}	|	||<qPW||krxtd|��|||�}
|
j|d�r�|
}|s�td|��|S)Nr)rzNo resizers availablezunknown resize mode %szmode %s not available)�RESIZERS�	available�
ValueError�	TypeError)rr&rZresize_class�_name�resizerZcurZmmap�k�vZmclassr$r$r%�resizer_factoryys(
r/c@seZdZdS)�ResizeFailedExceptionN)r!r"r#r$r$r$r%r0�sr0c@s:eZdZed�dd�Zeeed�dd��Zedd��Z	d	S)
�Resizer)r&cCs
||_dS)N)�_distro)�selfr&r$r$r%�__init__�szResizer.__init__)r�returncCsdS)Nr$)r3rr$r$r%r(�szResizer.availablecCsdS)Nr$)r3�diskdev�partnum�partdevr$r$r%�resize�szResizer.resizeN)
r!r"r#rr4r�list�boolr(r9r$r$r$r%r1�sr1c@s"eZdZed�dd�Zdd�ZdS)�ResizeGrowPart)rcCsXtjj�}d|d<y*tjddg|d�\}}tjd|�r:dSWntjk
rRYnXdS)	N�C�LANG�growpartz--help)�envz--update\s+TF)�os�environ�copyr�re�search�ProcessExecutionError)r3r�myenv�outZ_errr$r$r%r(�s
zResizeGrowPart.availablec
&Cs8tjj�}d|d<t|�}|jj�}tj|dd���}tjj	|d�}tjj
|�sZtj|d�||d<ytjdd||g|d	�WnJtj
k
r�}	z,|	jd
kr�tjtd||�t|	�|	�||fSd}	~	XnXytjd||g|d	�Wn@tj
k
�r }	z tjtd||�t|	�|	�WYdd}	~	XnXWdQRX|t|�fS)
Nr=r>T)�dirZ	needs_exer?i�ZTMPDIRz	--dry-run)r@�z&Failed growpart --dry-run for (%s, %s)zFailed: growpart %s %s)rArBrC�get_sizer2Zget_tmp_exec_pathr	Ztempdir�path�join�exists�mkdirrrF�	exit_coder
�logexc�LOGr0)
r3r6r7r8rG�beforeZtmp_dirZtmpdZgrowpart_tmp�er$r$r%r9�s6



&zResizeGrowPart.resizeN)r!r"r#r:r(r9r$r$r$r%r<�s
r<c@s&eZdZdZed�dd�Zdd�ZdS)�ResizeGrowFSa�
    Use FreeBSD ``growfs`` service to grow root partition to fill available
    space, optionally adding a swap partition at the end.

    Note that the service file warns us that it uses ``awk(1)``, and as
    such requires ``/usr`` to be present. However, cloud-init is installed
    into ``/usr/local``, so we should be fine.

    We invoke the ``growfs`` with ``service growfs onestart``, so it
    doesn't need to be enabled in ``rc.conf``.
    )rcCstjjd�o|dgkS)z'growfs only works on the root partitionz/etc/rc.d/growfsr)rArL�isfile)r3rr$r$r%r(�szResizeGrowFS.availablecCsdt|�}y|jjddd�Wn:tjk
rV}ztjtd�t|�|�WYdd}~XnX|t|�fS)NZonestart�growfs)�actionZservicezFailed: service growfs onestart)	rKr2Zmanage_servicerrFr
rQrRr0)r3r6r7r8rSrTr$r$r%r9�szResizeGrowFS.resizeN)r!r"r#�__doc__r:r(r9r$r$r$r%rU�srUc@s"eZdZed�dd�Zdd�ZdS)�ResizeGpart)rcCs^tjj�}d|d<y0tjddg|ddgd�\}}tjd|�r@d	SWntjk
rXYnXd
S)Nr=r>�gpart�helprrJ)r@�rcszgpart recover TF)rArBrCrrDrErF)r3rrGZ_out�errr$r$r%r(�s
zResizeGpart.availablecCs�ytjdd|g�WnFtjk
rZ}z(|jdkrJtjtd|�t|�|�WYdd}~XnXt|�}ytjddd||g�Wn>tjk
r�}z tjtd||�t|�|�WYdd}~XnX|t|�fS)	a9
        GPT disks store metadata at the beginning (primary) and at the
        end (secondary) of the disk. When launching an image with a
        larger disk compared to the original image, the secondary copy
        is lost. Thus, the metadata will be marked CORRUPT, and need to
        be recovered.
        r[ZrecoverrzFailed: gpart recover %sNr9z-izFailed: gpart resize -i %s %s)rrFrPr
rQrRr0rK)r3r6r7r8rTrSr$r$r%r9s
zResizeGpart.resizeN)r!r"r#r:r(r9r$r$r$r%rZ�s
rZcCs0tj|tj�}ztj|dtj�Stj|�XdS)Nr)rA�open�O_RDONLY�lseek�SEEK_END�close)�filename�fdr$r$r%rKsrKcCs�tjj|�}tjj|�}d|}tj�rVdtj|�}tjd|�}|rV|d|dfStjj	|�srt
d||f��tjj|d�}tjj	|�s�td|��tj
|�j�}tjj|�}tjj|�}	tj
tjj|	d��j�}
tjjd	|
�}||fS)
Nz/sys/class/block/%sz/dev/z/^(?P<dev>/dev/.+)[sp](?P<part_slice>\d+[a-z]*)$�devZ
part_slicez%s had no syspath (%s)�	partitionz%s not a partitionz
/dev/block/%s)rArL�realpath�basenamer
Zis_BSDZfind_freebsd_partrDrErNr)rMr*Z	load_file�rstrip�dirname)ZdevpathZrpathZbnameZsyspathZfpart�mZptpath�ptnumZrsyspathZdisksyspathZ
diskmajminZdiskdevpathr$r$r%�device_part_info&s(rncCst|jd�r|Stj|�}|s$td��|d}tj�}|dkrp|rptjtj��}|dkrptjj	|�rh|Std��|S)Nz/dev/z,Could not determine device of '%s' % dev_entrz	/dev/rootz!Unable to find device '/dev/root')
�
startswithr
Zget_mount_infor)Zis_containerZrootdev_from_cmdlineZget_cmdlinerArLrN)�devent�resultrfZ	containerr$r$r%�
devent2devQs

rrcCs,tjj|�}|jd�r(tjd||�|SdS)aReturns underlying block device for a mapped device.

    If it is mapped, blockdev will usually take the form of
    /dev/mapper/some_name

    If blockdev is a symlink pointing to a /dev/dm-* device, return
    the device pointed to. Otherwise, return None.
    z/dev/dm-z$%s is a mapped device pointing to %sN)rArLrhrorR�debug)�blockdevrhr$r$r%�get_mapped_devicehs
	
ru)r5cCs�tjd�stjd�dSytjdd|g�WnHtjk
rt}z*|jdkrXtjd|�ntjd|j�dSd}~XnXttj��"tjdd	|g�tjd
|�dSQRXdS)z�
    Check if a device is an encrypted device. blockdev should have
    a /dev/dm-* path whereas partition is something like /dev/sda1.
    �
cryptsetupz6cryptsetup not found. Assuming no encrypted partitionsF�status�z#Determined that %s is not encryptedzZReceived unexpected exit code %s from cryptsetup status. Assuming no encrypted partitions.NZisLukszDetermined that %s is encryptedT)rZwhichrRrsrFrP�warningr)rtrgrTr$r$r%�is_encryptedxs"



rzcCs�ddd|g}tj|�d}|jd�s2td|����yd|jd�d	jd
�d��Stk
r�}ztd|�d|�d
��|�WYdd}~XnXdS)NZdmsetupZdepsz--options=devnamerz1 dependz5Expecting '1 dependencies' from 'dmsetup'. Received: z/dev/z: (rJ�)zRan `z$`, but received unexpected stdout: `�`)rro�RuntimeError�split�
IndexError)rtZcommandZdeprTr$r$r%�get_underlying_partition�s
r�c0Cs,tj�stjdfSy<tj��}tj|�}WdQRX|d}tj|�}|d}Wn,t	k
rz}zt
d�|�WYdd}~XnXztjdddd	|g|d
�Wdytjddd|t|�g�Wn0tj
k
r�}ztjd
|�WYdd}~XnXytj�Wn"t	k
�rtjtd�YnXXtjd|�d�fS)z�Use 'cryptsetup resize' to resize LUKS volume.

    The loaded keyfile is json formatted with 'key' and 'slot' keys.
    key is base64 encoded. Example:
    {"key":"XFmCwX2FHIQp0LBWaLEMiHIyfxt1SGm16VvUAVledlY=","slot":5}
    zNo encryption keyfile foundN�key�slotzZCould not load encryption key. This is expected if the volume has been previously resized.rvz
--key-file�-r9)�dataZluksKillSlotz--batch-modez<Failed to kill luks slot after resizing encrypted volume: %sz8Failed to remove keyfile after resizing encrypted volumez'Successfully resized encrypted volume '�')�KEYDATA_PATHrNrrr_�json�load�base64Z	b64decode�	Exceptionr}r�strrFrRry�unlinkr
rQr)rtrg�fZkeydatar�Zdecoded_keyr�rTr$r$r%�resize_encrypted�sD


r�c=Cs�tj|�}g}�x�|�r�|jd�}yt|�}Wn:tk
rh}z|j|tjd|f�wWYdd}~XnXytj|�}Wn>t	k
r�}z"|j|tjd||ff�wWYdd}~XnXtj
|j�r�tj|j�r�|j|tjd|f�qt
|�}|�r�y�t|�}t||��r^|dd�|D�k�r>|jd|�|jd|�wt||�\}	}
|j||	|
f�n|j|tjd|�d�f�Wqtk
�r�}z$|j|tjd	|�d
|��f�WYdd}~XqXqyt|�\}}WnDttfk
�r}z"|j|tjd||ff�wWYdd}~XnXyZ|j|||�\}
}|
|k�rP|j|tjd||ff�n|j|tjd
|||
|ff�Wqtk
�r�}z"|j|tjd|||ff�WYdd}~XqXqW|S)Nrzunable to convert to device: %szstat of '%s' failed: %szdevice '%s' not a block devicecSsg|]}|d�qS)rr$)�.0�xr$r$r%�
<listcomp>sz"resize_devices.<locals>.<listcomp>zResizing mapped device (z!) skipped as it is not encrypted.zResizing encrypted device (z
) failed: zdevice_part_info(%s) failed: %szno change necessary (%s, %s)zchanged (%s, %s) from %s to %sz'failed to resize: disk=%s, ptnum=%s: %s)rC�poprrr)�appendrrrA�stat�OSError�S_ISBLK�st_mode�S_ISCHRrur�rz�insertr�r�r rnr*r9rrr0)r,r�inforprtrTZstatretZunderlying_blockdevrgrw�messageZdiskrm�old�newr$r$r%�resize_devices�s�




&
&r�)r�cfg�cloud�argsr5c
Cs�d|krtjdt�t|d<|jd�}t|t�s>tjd�dS|jdd�}tj|�r||dkrltj	ddd	d
�tjd|�dStj|jdd
��r�t
jjd�r�tjd�tjd�dStj
|ddg�}t|�s�tjd�dSyt||j|d�}WnBttfk
�r.}z tjd||�|dk�r |�dSd}~XnXtjtjdt||fd�}	x@|	D]8\}
}}|tjk�rttjd|
|�ntjd|
||��qNWdS)Nr?z.No 'growpart' entry in cfg.  Using default: %sz#'growpart' in config was not a dictrrZoffz)Growpart's 'mode' key with value '{mode}'z22.2zUse 'off' instead.)Z
deprecatedZdeprecated_versionZ
extra_messagezgrowpart disabled: mode=%srFz/etc/growroot-disabledz0growpart disabled: /etc/growroot-disabled existsz&use ignore_growroot_disabled to ignorerrzgrowpart: empty device list)r&rz,growpart unable to find resizer for '%s': %sr�)Zlogfunc�msg�funcr�z'%s' resized: %sz'%s' %s: %s)rRrs�DEFAULT_CONFIG�get�
isinstance�dictryr
Zis_falseZ	deprecaterArLrVZget_cfg_option_list�lenr/r&r)r*Zlog_timer�rrr�)
rr�r�r�Zmycfgrrr,rTZresized�entryrXr�r$r$r%�handle^sT







r�r?rWr[)ArYr�rCr�ZloggingrAZos.pathrDr��abcrr�
contextlibrZpathlibr�textwraprZtypingrZ	cloudinitrr	r
Zcloudinit.cloudrZcloudinit.configrZcloudinit.config.schemar
rZcloudinit.distrosrrZcloudinit.settingsrZMODULE_DESCRIPTIONr�metar�r�rZ	getLoggerr!rRr�r:r/r�r0r1r<rUrZrKrnrrrur;rzr�r�r�r�r'r$r$r$r%�<module>st'

3'+78

Filemanager

Name Type Size Permission Actions
__init__.cpython-36.opt-1.pyc File 128 B 0644
__init__.cpython-36.pyc File 128 B 0644
cc_ansible.cpython-36.opt-1.pyc File 8.63 KB 0644
cc_ansible.cpython-36.pyc File 8.63 KB 0644
cc_apk_configure.cpython-36.opt-1.pyc File 4.51 KB 0644
cc_apk_configure.cpython-36.pyc File 4.51 KB 0644
cc_apt_configure.cpython-36.opt-1.pyc File 30.42 KB 0644
cc_apt_configure.cpython-36.pyc File 30.42 KB 0644
cc_apt_pipelining.cpython-36.opt-1.pyc File 2.44 KB 0644
cc_apt_pipelining.cpython-36.pyc File 2.44 KB 0644
cc_bootcmd.cpython-36.opt-1.pyc File 2.51 KB 0644
cc_bootcmd.cpython-36.pyc File 2.51 KB 0644
cc_byobu.cpython-36.opt-1.pyc File 3.04 KB 0644
cc_byobu.cpython-36.pyc File 3.04 KB 0644
cc_ca_certs.cpython-36.opt-1.pyc File 7.05 KB 0644
cc_ca_certs.cpython-36.pyc File 7.05 KB 0644
cc_chef.cpython-36.opt-1.pyc File 9.13 KB 0644
cc_chef.cpython-36.pyc File 9.13 KB 0644
cc_disable_ec2_metadata.cpython-36.opt-1.pyc File 1.72 KB 0644
cc_disable_ec2_metadata.cpython-36.pyc File 1.72 KB 0644
cc_disk_setup.cpython-36.opt-1.pyc File 23.1 KB 0644
cc_disk_setup.cpython-36.pyc File 23.1 KB 0644
cc_fan.cpython-36.opt-1.pyc File 2.74 KB 0644
cc_fan.cpython-36.pyc File 2.74 KB 0644
cc_final_message.cpython-36.opt-1.pyc File 3.07 KB 0644
cc_final_message.cpython-36.pyc File 3.07 KB 0644
cc_growpart.cpython-36.opt-1.pyc File 15.91 KB 0644
cc_growpart.cpython-36.pyc File 15.91 KB 0644
cc_grub_dpkg.cpython-36.opt-1.pyc File 4.92 KB 0644
cc_grub_dpkg.cpython-36.pyc File 4.92 KB 0644
cc_install_hotplug.cpython-36.opt-1.pyc File 3.25 KB 0644
cc_install_hotplug.cpython-36.pyc File 3.25 KB 0644
cc_keyboard.cpython-36.opt-1.pyc File 1.98 KB 0644
cc_keyboard.cpython-36.pyc File 1.98 KB 0644
cc_keys_to_console.cpython-36.opt-1.pyc File 3.11 KB 0644
cc_keys_to_console.cpython-36.pyc File 3.11 KB 0644
cc_landscape.cpython-36.opt-1.pyc File 4.71 KB 0644
cc_landscape.cpython-36.pyc File 4.71 KB 0644
cc_locale.cpython-36.opt-1.pyc File 1.58 KB 0644
cc_locale.cpython-36.pyc File 1.58 KB 0644
cc_lxd.cpython-36.opt-1.pyc File 13.04 KB 0644
cc_lxd.cpython-36.pyc File 13.04 KB 0644
cc_mcollective.cpython-36.opt-1.pyc File 4.24 KB 0644
cc_mcollective.cpython-36.pyc File 4.24 KB 0644
cc_migrator.cpython-36.opt-1.pyc File 2.92 KB 0644
cc_migrator.cpython-36.pyc File 2.92 KB 0644
cc_mounts.cpython-36.opt-1.pyc File 14.08 KB 0644
cc_mounts.cpython-36.pyc File 14.08 KB 0644
cc_ntp.cpython-36.opt-1.pyc File 13.15 KB 0644
cc_ntp.cpython-36.pyc File 13.15 KB 0644
cc_package_update_upgrade_install.cpython-36.opt-1.pyc File 3.78 KB 0644
cc_package_update_upgrade_install.cpython-36.pyc File 3.78 KB 0644
cc_phone_home.cpython-36.opt-1.pyc File 4.1 KB 0644
cc_phone_home.cpython-36.pyc File 4.1 KB 0644
cc_power_state_change.cpython-36.opt-1.pyc File 6.24 KB 0644
cc_power_state_change.cpython-36.pyc File 6.24 KB 0644
cc_puppet.cpython-36.opt-1.pyc File 9.46 KB 0644
cc_puppet.cpython-36.pyc File 9.46 KB 0644
cc_reset_rmc.cpython-36.opt-1.pyc File 3.59 KB 0644
cc_reset_rmc.cpython-36.pyc File 3.59 KB 0644
cc_resizefs.cpython-36.opt-1.pyc File 7.02 KB 0644
cc_resizefs.cpython-36.pyc File 7.02 KB 0644
cc_resolv_conf.cpython-36.opt-1.pyc File 4.27 KB 0644
cc_resolv_conf.cpython-36.pyc File 4.27 KB 0644
cc_rh_subscription.cpython-36.opt-1.pyc File 12.06 KB 0644
cc_rh_subscription.cpython-36.pyc File 12.06 KB 0644
cc_rightscale_userdata.cpython-36.opt-1.pyc File 2.77 KB 0644
cc_rightscale_userdata.cpython-36.pyc File 2.77 KB 0644
cc_rsyslog.cpython-36.opt-1.pyc File 10.34 KB 0644
cc_rsyslog.cpython-36.pyc File 10.34 KB 0644
cc_runcmd.cpython-36.opt-1.pyc File 2.43 KB 0644
cc_runcmd.cpython-36.pyc File 2.43 KB 0644
cc_salt_minion.cpython-36.opt-1.pyc File 4.36 KB 0644
cc_salt_minion.cpython-36.pyc File 4.36 KB 0644
cc_scripts_per_boot.cpython-36.opt-1.pyc File 1.4 KB 0644
cc_scripts_per_boot.cpython-36.pyc File 1.4 KB 0644
cc_scripts_per_instance.cpython-36.opt-1.pyc File 1.57 KB 0644
cc_scripts_per_instance.cpython-36.pyc File 1.57 KB 0644
cc_scripts_per_once.cpython-36.opt-1.pyc File 1.51 KB 0644
cc_scripts_per_once.cpython-36.pyc File 1.51 KB 0644
cc_scripts_user.cpython-36.opt-1.pyc File 1.58 KB 0644
cc_scripts_user.cpython-36.pyc File 1.58 KB 0644
cc_scripts_vendor.cpython-36.opt-1.pyc File 2.04 KB 0644
cc_scripts_vendor.cpython-36.pyc File 2.04 KB 0644
cc_seed_random.cpython-36.opt-1.pyc File 4.07 KB 0644
cc_seed_random.cpython-36.pyc File 4.07 KB 0644
cc_set_hostname.cpython-36.opt-1.pyc File 4 KB 0644
cc_set_hostname.cpython-36.pyc File 4 KB 0644
cc_set_passwords.cpython-36.opt-1.pyc File 8.4 KB 0644
cc_set_passwords.cpython-36.pyc File 8.4 KB 0644
cc_snap.cpython-36.opt-1.pyc File 5.94 KB 0644
cc_snap.cpython-36.pyc File 5.94 KB 0644
cc_spacewalk.cpython-36.opt-1.pyc File 2.87 KB 0644
cc_spacewalk.cpython-36.pyc File 2.87 KB 0644
cc_ssh.cpython-36.opt-1.pyc File 11.02 KB 0644
cc_ssh.cpython-36.pyc File 11.02 KB 0644
cc_ssh_authkey_fingerprints.cpython-36.opt-1.pyc File 3.54 KB 0644
cc_ssh_authkey_fingerprints.cpython-36.pyc File 3.54 KB 0644
cc_ssh_import_id.cpython-36.opt-1.pyc File 3.85 KB 0644
cc_ssh_import_id.cpython-36.pyc File 3.85 KB 0644
cc_timezone.cpython-36.opt-1.pyc File 1.24 KB 0644
cc_timezone.cpython-36.pyc File 1.24 KB 0644
cc_ubuntu_advantage.cpython-36.opt-1.pyc File 12.42 KB 0644
cc_ubuntu_advantage.cpython-36.pyc File 12.42 KB 0644
cc_ubuntu_autoinstall.cpython-36.opt-1.pyc File 3.89 KB 0644
cc_ubuntu_autoinstall.cpython-36.pyc File 3.89 KB 0644
cc_ubuntu_drivers.cpython-36.opt-1.pyc File 3.63 KB 0644
cc_ubuntu_drivers.cpython-36.pyc File 3.63 KB 0644
cc_update_etc_hosts.cpython-36.opt-1.pyc File 4.3 KB 0644
cc_update_etc_hosts.cpython-36.pyc File 4.3 KB 0644
cc_update_hostname.cpython-36.opt-1.pyc File 3.01 KB 0644
cc_update_hostname.cpython-36.pyc File 3.01 KB 0644
cc_users_groups.cpython-36.opt-1.pyc File 7.58 KB 0644
cc_users_groups.cpython-36.pyc File 7.58 KB 0644
cc_wireguard.cpython-36.opt-1.pyc File 8.39 KB 0644
cc_wireguard.cpython-36.pyc File 8.39 KB 0644
cc_write_files.cpython-36.opt-1.pyc File 5.61 KB 0644
cc_write_files.cpython-36.pyc File 5.61 KB 0644
cc_write_files_deferred.cpython-36.opt-1.pyc File 1.73 KB 0644
cc_write_files_deferred.cpython-36.pyc File 1.73 KB 0644
cc_yum_add_repo.cpython-36.opt-1.pyc File 6.03 KB 0644
cc_yum_add_repo.cpython-36.pyc File 6.03 KB 0644
cc_zypper_add_repo.cpython-36.opt-1.pyc File 5.66 KB 0644
cc_zypper_add_repo.cpython-36.pyc File 5.66 KB 0644
modules.cpython-36.opt-1.pyc File 7.31 KB 0644
modules.cpython-36.pyc File 7.31 KB 0644
schema.cpython-36.opt-1.pyc File 39.45 KB 0644
schema.cpython-36.pyc File 39.45 KB 0644