HEX
Server: Apache
System: Linux md-ht-3.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User: kbinf747 (2664)
PHP: 8.3.32
Disabled: NONE
Upload Files
File: //usr/libexec/kcare/python/kcarectl/delivery_kit.pyc
�
�;jc@sddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
mZmZddlmZer�ddlmZmZmZmZddlmZnd�Zdefd	��YZd
efd��YZdS(i����N(tNamedTemporaryFile(tauthtconfigt
http_utilstipv6_supportt	log_utilstutils(trun_command(tAnytDicttListtOptional(tSelfcCsPt|�}x4dD],}|dkr5dj||�S|d:}qWdj|�S(	sBRender a byte count as a short human-readable string for the logs.tBtKiBtMiBtGiBg�@s{0:.1f} {1}s{0:.1f} TiB(R
RRR(tfloattformat(t	num_bytestsizetunit((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pytformat_sizes
tDataPackagecBs�eZdZdZdZd�Zed��Zed��Zd�Z	dded�Zd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zejdej�d��Zd�Zd�ZRS(s�Generic archive package for the patch server uploads pipeline.

    Based on DataPackage from eportal (delivery_kit.py). Subclasses
    supply the manifest `data_type`, the `upload_uri` to PUT the
    archive to and the `max_size` payload limit.
    tcCsd|_g|_d|_dS(Ni(tNonet_tart_errors_buffert_total_payload_size(tself((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt__init__-s		cCs
t�dS(N(tNotImplementedError(R((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pytmax_size3scCs|j�}t|j�S(N(t_ensure_tar_createdtstrtname(Rttar((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pytarchive_path8scCs�d}d}y.ttj|�dtdt�\}}}Wntk
r[}t|�}nX|r~|jdj||��n|dk	r�|j	|dt
j|dd��ndS(Ntcatch_stdouttcatch_stderrs!failed to dump stdout of {0}:
{1}t
data_bytestencodingsutf-8(RRtshlextsplittTruet	ExceptionR"t	log_errorRtadd_fileRtbstr(Rtarcnametcmdtstdouttstderrt_te((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt
add_stdout>s.c		Cs�|dkr'|dkr'td��n|j�}d}|dk	r�tjj|�sq|jdj|��dStjj|�}nt	|�}|j
|�s�|jdj|��dS|r
|j|�r
|jdj|t
|�t
|j�t
|j���dSy�|r,|j|d|�n1tj|�}||_|j|tj|��|s�|j|7_tjdj|t
|�t
|j��dt�nWn,tk
r�}|jd	j||��nXdS(
Ns"No src_path or data_bytes providedisfile not found: {0}s no available space to store: {0}sPskipping {0}: {1} would exceed the {2} report size limit (already collected {3})R1s%collected {0}: {1} (report total {2})t	print_msgsfailed to store {0}: {1}(Rt
ValueErrorR!tostpathtexistsR.Rtgetsizetlent_check_required_spacet_check_total_payload_limittlog_warningRR RtaddttarfiletTarInfoRtaddfiletiotBytesIORtloginfotFalseR-(	RR1tsrc_pathR(tskip_limit_checkR$t
entry_sizetinfoR6((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR/NsJ			cCsoy(tjtj|dd�dd�}Wn-tk
rW}|jdj||��dSX|j|d|�dS(NtindentiR)sutf-8sfailed to dump {0}:
{1}R((RR0tjsontdumpst	TypeErrorR.RR/(RR1tdataR(R6((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pytadd_json�s(cCs&tj|j�}|j|j|kS(N(R:tstatvfsR%tf_frsizetf_bfree(RRLRT((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR?�scCs|j|j|kS(N(R R(RRL((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR@�scCs(idd6|jd6ttj��d6S(Nitschema_versionttypettime_created(t	data_typetintttime(R((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt
make_manifest�s
cCsqtjtj|j�dd�dd�}|j�}tjd�}t|�|_	|j
|tj|��dS(NRNiR)sutf-8s
manifest.json(
RR0RORPR]R!RCRDR>RRERFRG(RR(R$RM((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt
_add_manifest�s
*cCs3|j�}tj|dt�|jj|�dS(NR8(tstripRtlogerrorRIRtappend(Rt	error_msg((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR.�scCs3|j�}tj|dt�|jj|�dS(NR8(R_RtlogwarnRIRRa(Rtwarning_msg((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyRA�scCs;x%dD]}tddj|d�dt�}|j�yUtjdj|j�d	t�tjd
|jd|dt	�|_
|j�|SWqtk
r#}|j
dk	r�y|j
j�Wntk
r�nXd|_
ntjj|j�rtj|j�nt|tj�s$�q$qXqWtjd
��dS(Nsw:xzsw:bz2sw:gztsuffixs.tar.{0}itdeletesCreating DataPackage: {0}R8R#tmodetdereferences%No supported compression method found(sw:xzsw:bz2sw:gz(RRRItcloseRRHR#RCtopenR,RR^R-RR:R;R<tunlinkt
isinstancetCompressionError(Rtcompression_modettmpfileterr((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt	__enter__�s(
"
$

cCsu|jrDdj|j�d}|jddtj|�dt�n|jrq|jj�|rq|j�t	SntS(Ns
s
errors.logR(RK(
RtjoinR/RR0R,RRitremove_archiveRI(Rtexc_typetexc_valtexc_tbterrors((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt__exit__�s	%	

tloggercCs5|jr1tjj|j�r1tj|j�ndS(N(RR:R;R<R%Rk(R((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyRs�scCs|jstd��n|jS(Ns/DataPackage should be used as a context manager(RtRuntimeError(R((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR!�s	cCs�|j�j�tjj|j�}d|krD||jd�nd}ttj	��|}t
j�|j|}t
j|jd|dtj��|S(sSend the package archive to the patch server.

        Upload errors propagate to the caller (see the eportal
        precedent): wrap with utils.catch_errors where a silent
        failure is acceptable.

        :return: Upload name (package identifier)
        t.Rt
upload_urltauth_string(R!RiR:R;tbasenameR%tfindR"tuuidtuuid4Rtget_patch_servert
upload_uriRtupload_fileRtget_http_auth_string(RR~texttupload_nameR|((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pytsend�s
%	
N(t__name__t
__module__t__doc__RZR�RtpropertyR R%R7RRIR/RSR?R@R]R^R.RARqRxRtcatch_errorsRRcRsR!R�(((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR"s(		;	
				
				 		tKernelAnomalyPackagecBs#eZdZdZed��ZRS(skernel-anomalys/upload/kernel-anomaly/cCstjS(N(Rt$KERNEL_ANOMALY_REPORT_MAX_SIZE_BYTES(R((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR s(R�R�RZR�R�R (((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyR�s(RFROR:R*RCR\R�ttempfileRtkcarectlRRRRRRtkcarectl.process_utilsRRIttypingRR	R
Rttyping_extensionsRRtobjectRR�(((s2/usr/libexec/kcare/python/kcarectl/delivery_kit.pyt<module>s."	�