관리-도구
편집 파일: _common.cpython-39.opt-1.pyc
a ����B�:f=K����������������������@���sT��d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZzd�dlmZ�W�n�ey^���d�dl mZ�Y�n0�d�dl Z z d�dlmZm Z �d�dlmZ�W�n.�ey����d�dlmZm Z �d�dlmZ�Y�n0�d�dlZd�dlZd�dlZd�dlZd�dlZdMdd�Zdd ��ZG�d d��de�ZdZdZd ddddddddddddddddddddddddd�Zg�d�ZdNdd�Zdd ��Zd!d"��Z dOd#d$�Z!d%d&��Z"d'd(��Z#d)d*��Z$d+d,��Z%d-d.��Z&d/d0��Z'd1d2��Z(G�d3d4��d4e)�Z*ed5d6d7�ed8d9d7�ed:d;d7�G�d<d=��d=e)����Z+dPd>d?�Z,d@dA��Z-G�dBdC��dCe�Z.G�dDdE��dEe�Z/dFdG��Z0dHdI��Z1G�dJdK��dKej2�Z3e4dLk�rPe�5���dS�)Q�����N)�Sequence)�URLError� HTTPError)�urlparseTc��������������������sH���d������fdd�}��fdd�}t�||r,|ndd|����fdd�}|S�) z� Creates the get/set properties for the given name. It assumes that the actual attribute is '_' + name TODO: Expand this with domain validation to ensure the values are correct. �_c��������������������s ���t�|����S��N)�getattr��self��attribute_name���1/usr/lib64/python3.9/site-packages/lsm/_common.py�getter.���s����z default_property.<locals>.getterc��������������������s���t�|���|��d�S�r�����setattr)r ����valuer���r ���r����setter1���s����z default_property.<locals>.setterNc��������������������s���t�|������|�S�r���r���)�cls)�name�propr ���r���� decorator6���s����z#default_property.<locals>.decorator)�property)r���Z allow_set�docr���r���r���r ���)r���r���r���r����default_property%���s����r���c�����������������C���s$��t�|�t�rttjt|����t�|�t�rxt|��}d|v�r\d|v�rHttjd��d|v�r\ttjd��t dt ������ttj|��z*t jr�t�|�t j�r�ttjdt|�����W�n�ty����Y�n0�tjr�t�|�t�r�ttjt|����t�|�tj �r�ttjt|����t ���}t d|���ttjd tt|����|��d�S�) Nz urlopen errorz Errno 111zConnection refusedz Errno 113zHost is downzUnexpected network error: zSSL Certificate error (%s)zUnexpected exception: zUnexpected exception (TYPE= %s))� isinstancer����LsmError�ErrorNumber�PLUGIN_AUTH_FAILED�strr����NETWORK_CONNREFUSED�NETWORK_HOSTDOWN�error� traceback� format_exc� NETWORK_ERROR�sslZCertificateError�AttributeError�six�PY3�ConnectionError�socket� PLUGIN_BUG�type)�expZdescZstack_tracer ���r ���r����common_urllib2_error_handler=���s>���� � ��r/���c�������������������@���s*���e�Zd�ZdZd dd�Zdd��Zdd��ZdS�) �ProxyzQ Used to provide an unambiguous error when a feature is not implemented. Nc�����������������C���s ���||�_�dS�)z< Constructor which takes an object to wrap. N)�proxied_obj)r ����objr ���r ���r����__init__o���s����zProxy.__init__c�����������������C���s*���t�|�j|�rt�|�j|�S�ttjd��dS�)zJ Called each time an attribute is requested of the object zUnsupported operationN)�hasattrr1���� functools�partial�_presentr���r���� NO_SUPPORT)r ���r���r ���r ���r����__getattr__y���s����zProxy.__getattr__c�����������������O���s���t�|�j|�|i�|��S�)zQ Method which is called to invoke the actual method of interest. )r���r1���)r ���Z_proxy_method_name�args�kwargsr ���r ���r���r7�������s����zProxy._present)N)�__name__� __module__�__qualname__�__doc__r3���r9���r7���r ���r ���r ���r���r0���g���s��� r0���z/var/run/lsm/ipc����i���i���i���i@B�i���@i�ʚ;l��������l����J)�l��������� �l������I�5�l������������l������N�Zo)�B�KiBZKB�K�k�MiBZMB�M�m�GiBZGB�G�g�TiBZTB�T�t�PiBZPB�P�p�EiBZEB�E�e)rQ���rN���rK���rH���rE���rB���Fc�����������������C���sR���d}|rJt�D�](}|�t|�kr|�tt|���}�|}�q6q|s>d}d|�|f�S�|�S�dS�)a�� Convert size in bytes to human readable size The return string will follow IEC binary prefixes, e.g. '1.9 KiB' For size less than 1024, we do nothing but return the int we get. TODO: Need a expect to handle when size is not a int. int() might do. NrA���z%.2f %s)�SIZE_CONS_CHK_LST� SIZE_CONS�float)�sizeZhuman�unitsZkey_namer ���r ���r����sh����s����rY���c�����������������C���s ���t�|�d�S�)a�� Convert integer size in bytes to human readable size. We are following rules of IEC binary prefixes on size: http://en.wikipedia.org/wiki/Gibibyte The biggest of unit this function supported is PiB. The precision is 2 which means you will get '1.99 KiB' T)rY���)rW���r ���r ���r����size_bytes_2_size_human����s����rZ���c�����������������C���st���t��dt�j�}|�|��}d}|rl|�d�}|�d�}|s@t|�S�|���}|�dd�}|tv�rlt|�t |��}t|�S�)a��� Convert human readable size string into integer size in bytes. Following rules of IEC binary prefixes on size: http://en.wikipedia.org/wiki/Gibibyte Supported input size_human in these formats: '1.9KiB' # int(1024*1.9) '1 KiB' # 2**10 '1B' # 1 '2K' # 2*(2**10), treated as '2KiB' '2k' # 2*(2**10), treated as '2KiB' '2KB' # 2*(10**3) z� ^ ([0-9\.]+) # 1: number [ \t]* # might have space between number and unit ([a-zA-Z]*) # 2: units $ r���r@�������ZIBZiB) �re�compile�X�match�group�int�upper�replacerU���rV���)Z size_humanZregex_size_humanZregex_matchZ size_bytesZnumberrX���r ���r ���r����size_human_2_size_bytes����s ���� � rd���c�������������� ���C���s��z�i�}t�|��}|jr|j|d<�|jr.|j|d<�|jr>|j|d<�|jrN|j|d<�|jr`|j|d<�nd|d<�t|�|d<�|r�|D�]}||vr|ttj d|���q||r�|D�] }||d�vr�ttj d |���q�|W�S��t �y�}�z ttj d t|����W�Y�d}~n d}~0�0�dS�)zq Common uri parse method that optionally can check for what is needed before returning successfully. �scheme�netloc�port�host�usernameN� parametersz&uri missing "%s" or is in invalid formzuri missing query parameter %szuri invalid: reason: %s)r���re���rf���rg����hostnameri����uri_parametersr���r����INVALID_ARGUMENT� ValueErrorr���)�uriZrequiresZrequired_params�rc�u�r�ver ���r ���r���� uri_parse��sB���� �� �rt���c�����������������C���sP���|�j�r|�j�}n|�jr(td|�d���j�}ni�S�|rHtdd��|�d�D���S�i�S�d�S�)Nzhttp:r[���c�����������������S���s���g�|�]}|��d���qS�)�=)�split)�.0�partr ���r ���r���� <listcomp>I�������z"uri_parameters.<locals>.<listcomp>�&)�query�pathr����dictrv���)ro���r|���r ���r ���r���rl���:��s����rl���c�����������������C���sD���zt�jdd�}W�n�ty*���t����}Y�n0�|�|��d���|���S�)NF)Zusedforsecurityzutf-8)�hashlib�md5� Exception�update�encodeZ hexdigest)rM����hr ���r ���r���r����Q��s����r����c�����������������C���s"���t�jr|�|�S�t|��t|��S�d�S�r���)r(���r)���ra���)�a�br ���r ���r����int_div\��s����r����c������������������G���s���d��dd��|�D���S�)N��c�����������������S���s���g�|�]}t�|��qS�r ���)r���)rw���rS���r ���r ���r���ry���i��rz���z$params_to_string.<locals>.<listcomp>)�join)r:���r ���r ���r����params_to_stringh��s����r����c�����������������C���s0���|��d�D�] }t|�r t�|�|d�|���q dS�)z� If a message includes new lines we will create multiple syslog entries so that the message is readable. Otherwise it isn't very readable. Hopefully we won't be logging much :-) � z: N)rv����len�syslog)�levelZprg�msg�lr ���r ���r����post_msgv��s����r����c������������������G���s$���t�tjtj�tjd��t|�����d�S��Nr���) r����r����ZLOG_ERR�osr}����basename�sys�argvr�����r����r ���r ���r���r"������s�����r"���c������������������G���s(���t�r$ttjtj�tjd��t |�����d�S�r����) �LOG_VERBOSEr����r����ZLOG_INFOr����r}���r����r����r����r����r����r ���r ���r����info���s�����r����c�������������������@���s���e�Zd�ZdZdS�)� SocketEOFzL Exception class to indicate when we read zero bytes from a socket. N)r<���r=���r>���r?���r ���r ���r ���r���r�������s���r�����codez Error code)r���r����z Error message�datazOptional error datac�������������������@���s���e�Zd�Zddd�Zdd��ZdS�)r���Nc�����������������O���s.���t�j|�g|�R�i�|���||�_||�_||�_dS�)z, Class represents an error. N)r����r3����_codeZ_msg�_data)r ���r�����messager����r:���r;���r ���r ���r���r3������s����zLsmError.__init__c�����������������C���s@���t��|�j�}|�jd�ur.|�jr.d||�j|�jf�S�d||�jf�S�d�S�)Nz%s: %s Data: %sz%s: %s )r����error_number_to_strr����r����r����)r ���Zerror_no_strr ���r ���r����__str__���s�����zLsmError.__str__)N)r<���r=���r>���r3���r����r ���r ���r ���r���r������s��� r���c�����������������C���s���|�||||d�S�)zC Used for gathering additional information about an error. ��domainr����� exception�debug� debug_datar ���r����r ���r ���r����addl_error_data���s�����r����c�����������������C���s`���|���d�}d�|dd���}t|�rJt|�}|dd��D�]}t||�}q8ntd�}t||��}|S�)zn Given a class name it returns the class, caller will then need to run the constructor to create. �.N���r@����__main__)rv���r����r����� __import__r���)� class_name�parts�modulerG����compr ���r ���r���� get_class���s���� r����c�������������������@���s����e�Zd�ZdZdZdZdZdZdZdZ dZ d Zd ZdZ dZd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.e/��Z0e1d-d.���Z2d/S�)0r���r���r@���r[���������������� ����2����4����e����}����������������������������������������������������������������������������������������������i,��i-��i3��i7��i^��i���i���i���i���i���i���i���i��c�����������������C���s:���t�tj����D�]"}tj|�|�krd||�f���S�qd|��S�)Nz%s(%d)zUNKNOWN_ERROR_NUMBER(%d))�listr����_LOCALS�keys)Zerror_noZ error_strr ���r ���r���r������s����zErrorNumber.error_number_to_strN)3r<���r=���r>���ZOKZLIB_BUGr,���ZJOB_STARTEDZTIMEOUTZDAEMON_NOT_RUNNINGZPERMISSION_DENIEDZ NAME_CONFLICTZEXISTS_INITIATORrm���ZNO_STATE_CHANGEr ���r!���r%���Z NO_MEMORYr8���Z IS_MASKEDZHAS_CHILD_DEPENDENCYZNOT_FOUND_ACCESS_GROUPZNOT_FOUND_FSZ NOT_FOUND_JOBZNOT_FOUND_POOLZNOT_FOUND_FS_SSZNOT_FOUND_VOLUMEZNOT_FOUND_NFS_EXPORTZNOT_FOUND_GENERICZNOT_FOUND_SYSTEMZNOT_FOUND_DISKZNOT_LICENSEDZNO_SUPPORT_ONLINE_CHANGEZNO_SUPPORT_OFFLINE_CHANGEr���ZPLUGIN_IPC_FAILZPLUGIN_SOCKET_PERMISSIONZPLUGIN_NOT_EXISTZNOT_ENOUGH_SPACEZTRANSPORT_COMMUNICATIONZTRANSPORT_SERIALIZATIONZTRANSPORT_INVALID_ARGZLAST_INIT_IN_ACCESS_GROUPZUNSUPPORTED_SEARCH_KEYZEMPTY_ACCESS_GROUPZPOOL_NOT_READYZ DISK_NOT_FREE�localsr�����staticmethodr����r ���r ���r ���r���r������s^���r���c�������������������@���s���e�Zd�ZdZdZdZdS�)� JobStatusr@���r[�������N)r<���r=���r>���Z INPROGRESSZCOMPLETEZERRORr ���r ���r ���r���r������s���r����c�����������������C���s����t�|t�rvt�|t�s,td|�tt|��f���t|�dkrT|D�]}t|�|d�|��q<q�t||�D�]\}}t|�||��q^nf|t|�kr�|d�ur�t�|tj �r�t�|tj �r�d�S�t �|�r�tt|�|�s�td|�t|�tt|��f���d�S�)Nz6%s call is returning a %s, but is expecting a sequencer@���r���z%s call expected: %s got: %s ) r���r���� TypeErrorr���r-���r�����type_compare�zipr(���Zstring_types�inspectZisclass� issubclass)Zmethod_nameZexp_typeZact_val�avr.���Zactr ���r ���r���r����#��s.���� � � ���r����c���������������������s�����fdd�}|S�)a4�� Decorator function that allows us to ensure that we are getting the correct types back from a function/method call. Note: This is normally frowned upon by the python community, but this API needs to be language agnostic, so making sure we have the correct types is quite important. c��������������������s���t��������fdd��}|S�)Nc���������������������sx�����|�i�|��}t���dkrVt�|�t���krFtd��jt���t�|�f���t��j�|��nt���dkrtt��j�d�|��|S�)Nr@���z.%s call expected %d return values, actual = %dr���)r����r����r<���r����)r:���r;���rr���)�func�typesr ���r����innerM��s�����z-return_requires.<locals>.outer.<locals>.inner)r5����wraps)r����r�����r����)r����r����outerK��s����zreturn_requires.<locals>.outerr ���)r����r����r ���r����r����return_requiresA��s���� r����c�������������������@���s$���e�Zd�Zdd��Zdd��Zdd��ZdS�)� TestCommonc�����������������C���s���d�S�r���r ���r ���r ���r ���r����setUph��s����zTestCommon.setUpc�������������� ���C���s����z t����W�n4�t�y>�}�z|��t|t����W�Y�d�}~n d�}~0�0�ztddd��W�nH�ty��}�z0|��|jdko�|jdko�|jdk��W�Y�d�}~n d�}~0�0�tddddd�}|��|d�dko�|d�dko�|d�dko�|d�dko�|d�dk��d�S�) N� ���ZMessageZDatar����r����r����r����r����)r����Z assertTruer���r���r����r����r����r����)r ���rS���Zedr ���r ���r����test_simplek��s(���� &� � � � �zTestCommon.test_simplec�����������������C���s���d�S�r���r ���r ���r ���r ���r����tearDown��s����zTestCommon.tearDownN)r<���r=���r>���r����r����r����r ���r ���r ���r���r����f��s���r����r����)TN)F)NN)NN)6r���r����Zunittestr\���r����r�����collections.abcr����ImportError�collectionsr����Zurllib.errorr���r����urllib.parser���Zurllib2r5���r#���r(���r&���r+���r���r/����objectr0���ZUDS_PATHr����rU���rT���rY���rZ���rd���rt���rl���r����r����r����r����r"���r����r����r����r���r����r����r���r����r����r����ZTestCaser����r<����mainr ���r ���r ���r����<module>���s���� *)� ) 2 R%