
    ZiN                         d dl Z d dlZd dlZd dlmZ d dlmZ ddlmZ ddl	m
Z
mZ ddlmZ d Z G d	 d
ej                  Z G d dej                  ZdS )    N)base)
api_client   )DynamicClient)ResourceInstanceResourceField)ResourceNotFoundErrorc                  V    t          t          j                              } | dd          S )Ni)struuiduuid4)ids    Y/root/projects/butler/venv/lib/python3.11/site-packages/kubernetes/dynamic/test_client.py
short_uuidr      s"    	TZ\\		Bcdd8O    c                   Z    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 ZdS )TestDynamicClientc                 6    t          j                    | _        d S N)r   get_e2e_configurationconfig)clss    r   
setUpClasszTestDynamicClient.setUpClass"   s    /11


r   c           	         t          t          j        | j                            }|                     t
                    5  |j                            dd          }d d d            n# 1 swxY w Y   |j                            dd          }d}ddd|id	dd
ddddddi idd}|                    |          }| 	                    ||j
        j                   |                     |j                   |                    |          }| 	                    ||j
        j                   |                     |j                   	 |j                            dd          }n$# t
          $ r t          j        d           Y nw xY w|j                            dd          }|                                }| 	                    |j        g            dt#                      z   }ddd|ii d}|                    |          }| 	                    |j
        j        |           |                    |          }| 	                    |j
        j        |           d|d         d<   |                    |d          }| 	                    |j        j        d           |                    |          }| 	                    |j        j        d           |                                }| 	                    t+          |j                  d           |                    |          }|                                }| 	                    t+          |j                  d           |                    |          }t          j        d           |j                                         |                     t
                    5  |j                            dd          }d d d            d S # 1 swxY w Y   d S )Nconfigurationapps.example.com/v1ClusterChangeMeapi_versionkindapiextensions.k8s.io/v1beta1CustomResourceDefinitionz!clusterchangemes.apps.example.comnameapps.example.comClusterChangeMeListclusterchangemesclusterchangemer!   listKindpluralsingularClusterv1statusgroupnamesscopeversionsubresources
apiVersionr!   metadataspecr$      custom-resource)body   r9   sizeapplication/merge-patch+json)r=   content_typer   r   r   r   	ApiClientr   assertRaisesr	   	resourcesgetcreateassertEqualr8   r$   
assertTruer/   timesleepitemsr   patchr9   r?   lendeleteinvalidate_cache	selfclientchangeme_apicrd_apir$   crd_manifestrespchangeme_namechangeme_manifests	            r   test_cluster_custom_resourcesz/TestDynamicClient.test_cluster_custom_resources&   s   z3$+NNNOO455 	K 	K!+//18I 0 K KL	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K "&&6+ ' - - 38. ,- 50 1	  #b! 
 
* ~~l++t}1222$$${{  
 
 	t}1222$$$	!+//18I 0 K KLL$ 	 	 	JqMMMMM	 '++-4E , G G!!R((()JLL8/% 
 
 ""(9"::+];;;]33+];;;,-&!&)!!"7 " 
 
 	+++]33+++!!TZ!,,,"" # 
 
 !!TZ!,,,~~  
 
 	
1))+++455 	K 	K!+//18I 0 K KL	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks6   A++A/2A/
E' 'FF?O))O-0O-c           	      	   t          t          j        | j                            }|                     t
                    5  |j                            dd          }d d d            n# 1 swxY w Y   |j                            dd          }d}ddd|id	dd
ddddddi idd}|                    |d          }| 	                    ||j
        j                   |                     |j                   |                    |d          }| 	                    ||j
        j                   |                     |j                   	 |j                            dd          }n@# t
          $ r3 t          j        d           |j                            dd          }Y nw xY w|                    d          }| 	                    |j        g            dt#                      z   }ddd|ii d}|                    |dd          }| 	                    |j
        j        |           |                    |dd          }| 	                    |j
        j        |           d|d         d<   |                    |ddd          }| 	                    |j        j        d           |                    |dd          }| 	                    |j        j        d           |                    dd           }| 	                    t+          |j                  d!           |                    d          }| 	                    t+          |j                  d!           |                    |dd          }|                    dd           }| 	                    t+          |j                  d"           |                    d          }| 	                    t+          |j                  d"           |                    |d          }t          j        d           |j                                         |                     t
                    5  |j                            dd          }d d d            d S # 1 swxY w Y   d S )#Nr   r   ChangeMer   r"   r#   changemes.apps.example.comr$   r%   ChangeMeList	changemeschangemer)   
Namespacedr.   r/   r0   r6   T)	async_req)r$   rb   r;   r<   default)r=   	namespacerb   )r$   rd   rb   r>   r9   r?   r@   )r=   rd   rA   rb   )rd   rb   r   r   rB   )	rR   rS   rT   rU   r$   rV   
async_resprX   rY   s	            r   &test_async_namespaced_custom_resourcesz8TestDynamicClient.test_async_namespaced_custom_resources   s   z3$+NNNOO455 	D 	D!+//1
 0 D DL	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D "&&6+ ' - - , 9. ,& .) *	  &b! 
 
* ^^LD^AA
z27888
)***[[ ! 
 

 	z27888
)***	D!+//1
 0 D DLL$ 	D 	D 	DJqMMM!+//1
 0 D DLLL	D "%%%55
)2...)JLL8/ 
 
 "((.?9`d(ee
,1=AAA!%%=IY]%^^
,1=AAA,-&!&)!''"7	 ( 
 

 	-q111!%%=IY]%^^
-q111!%%	T%JJ
Z-..222!%%%55
Z-..222!(( ) 
 

 "%%	T%JJ
Z-..222!%%%55
Z-..222^^ $ 
 


 	
1))+++455 	D 	D!+//1
 0 D DL	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds6   A++A/2A/E* *:F'&F'Q;;Q?Q?c           	         t          t          j        | j                            }|                     t
                    5  |j                            dd          }d d d            n# 1 swxY w Y   |j                            dd          }d}ddd|id	dd
ddddddi idd}|                    |          }| 	                    ||j
        j                   |                     |j                   |                    |          }| 	                    ||j
        j                   |                     |j                   	 |j                            dd          }n$# t
          $ r t          j        d           Y nw xY w|j                            dd          }|                                }| 	                    |j        g            dt#                      z   }ddd|ii d}|                    |d          }| 	                    |j
        j        |           |                    |d          }| 	                    |j
        j        |           d|d         d<   |                    |dd          }| 	                    |j        j        d           |                    |d          }| 	                    |j        j        d           |                    d          }| 	                    t+          |j                  d           |                                }| 	                    t+          |j                  d           |                    |d          }|                    d          }| 	                    t+          |j                  d            |                                }| 	                    t+          |j                  d            |                    |          }t          j        d           |j                                         |                     t
                    5  |j                            dd          }d d d            d S # 1 swxY w Y   d S )!Nr   r   r\   r   r"   r#   r]   r$   r%   r^   r_   r`   r)   ra   r.   r/   r0   r6   r:   r;   r<   rc   r=   rd   r$   rd   r>   r9   r?   r@   )r=   rd   rA   )rd   r   r   rB   rQ   s	            r    test_namespaced_custom_resourcesz2TestDynamicClient.test_namespaced_custom_resources   sc   z3$+NNNOO455 	D 	D!+//1
 0 D DL	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D "&&6+ ' - - ,8. ,& .) *	  &b! 
 
* ~~l++t}1222$$${{  
 
 	t}1222$$$	!+//1
 0 D DLL$ 	 	 	JqMMMMM	 '++-J , @ @!!R((()JLL8/ 
 
 ""(9Y"OO+];;;]iHH+];;;,-&!&)!!"7 " 
 

 	+++]iHH+++)44TZ!,,,!!TZ!,,,"" # 
 

 )44TZ!,,,!!TZ!,,,~~  
 
 	
1))+++455 	D 	D!+//1
 0 D DL	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds6   A++A/2A/
E' 'FF Q**Q.1Q.c                 2   t          t          j        | j                            }|j                            dd          }dt                      z   }ddd|i|dddd	d
d	dgd|idd}|                    |d          }|                     ||j	        j
                   |                     |j                   |                    |d          }|                     ||j	        j
                   |                     |j                   ddd
ddg|d         d<   |                    ||d          }|                     dt          |j        j                             |                     |j                   |                    |i d          }d S )Nr   r.   Servicer   	frontend-r$   )labelsr$   resourceversionportP   TCP)r$   rp   protocol
targetPort)portsselectorr6   rc   rh   ri   newi  r9   ru   )r=   r$   rd   r;   r$   r=   rd   )r   r   rC   r   rE   rF   r   rG   rH   r8   r$   rI   r/   rM   rN   r9   ru   rO   )rR   rS   apir$   service_manifestrW   s         r   test_service_apisz#TestDynamicClient.test_service_apisg  s   z3$+NNNOO""t)"DDZ\\)*.$-4:D>15<@)B )B 9?8:<A>@0B 0B /C 39$	%A %A	B 	B zz!  
 
 	t}1222$$$ww  
 
 	t}1222$$$6;6::?<@.B .B -C ) yy!  
 

 	C	00111$$$zzB  
 
r   c                    t          t          j        | j                            }|j                            dd          }dt                      z   }ddd|i|ddd|id	d|iid
dddddgdgiddd}|                    |d          }|                     ||j	        j
                   |                     d|j        j                   |                    |d          }|                     ||j	        j
                   |                     d|j        j                   |                    |dd           d S )Nr   r.   ReplicationControllerr   rm   r$   rn   r$   r;   rn   
containersnginxrq   rr   containerPortrs   imager$   ru   )r8   r9   )replicasrv   templater6   rc   rh   ri   
Background)r$   rd   propagation_policy)r   r   rC   r   rE   rF   r   rG   rH   r8   r$   r9   r   rO   )rR   rS   ry   r$   rc_manifestrW   s         r    test_replication_controller_apisz2TestDynamicClient.test_replication_controller_apis  s   z3$+NNNOO""#: # < < Z\\)+$*D>!%' '!""($!FD>/3".&-%,9;49(; (; '<2= 2= 1> "?"@ "@A AB B zz	  3 3t}1222DI.///ww  , ,t}1222DI.///

+ 	 	- 	- 	- 	- 	-r   c                    t          t          j        | j                            }|j                            dd          }dt                      z   }dd|ddidd	d
dd}|                    |d          }|                     ||j	        j
                   |                    |dd          }|                     ||j	        j
                   d}|                    |dd|          D ]}|dz  }|                     |dk    d           d|d         d<   |                    |d|          }|                    |i d          }|                    ddd          }|                     g |j                   d S )Nr   r.   	ConfigMapr   ztest-configmap-ze2e-testtrue)r$   rn   z"{"command":"/usr/bin/mysqld_safe"}z![mysqld]
bind-address = 10.0.0.3
)config.jsonzfrontend.cnf)r!   r7   r8   datarc   rh   ze2e-test=true)r$   rd   label_selectorr   
   )timeoutrd   r$   r   zno events received for watch)msgz{}r   r   )r$   rd   r=   rx   T)rd   prettyr   )r   r   rC   r   rE   rF   r   rG   rH   r8   r$   watchrI   rM   rO   rL   )rR   rS   ry   r$   test_configmaprW   count_s           r   test_configmap_apisz%TestDynamicClient.test_configmap_apis  s   z3$+NNNOO""t+"FF :<</   H E 
 
 zz9  
 
 	t}1222ww?  L Lt}1222c2NN 	 	AQJEE	'EFFF04v}-yy  A A zzB)  5 5 ww*  , , 	TZ(((((r   c                 ~   t          t          j        | j                            }|j                            dd          }|                                j        D ]_}|                    |j        j                  }| 	                    t          t          |j        j                            dk               `d S )Nr   r.   Noder   r:   r   )r   r   rC   r   rE   rF   rL   r8   r$   rI   rN   dictrn   )rR   rS   ry   itemnodes        r   test_node_apisz TestDynamicClient.test_node_apis  s    z3$+NNNOO""t&"AAGGIIO 	A 	AD77 2733DOOCT]%9 : :;;a?@@@@	A 	Ar   c                    t          t          j        | j                            }|j                            dd          }dddii} |j        di |}|                     d|j                   |                     d	|j                   dd
dii} |j        di |}|                     d|j                   |                     d	|j                   d S )Nr   r.   r   r   header_paramsAcceptz@application/json;as=PartialObjectMetadataList;v=v1;g=meta.k8s.ioPartialObjectMetadataListzmeta.k8s.io/v1aCcePt )	r   r   rC   r   rE   rF   rH   r!   r7   )rR   rS   ry   paramsrW   s        r   &test_node_apis_partial_object_metadataz8TestDynamicClient.test_node_apis_partial_object_metadata  s   z3$+NNNOO""t&"AA \^_ sw    4di@@@)4?;;; \^_ sw    4di@@@)4?;;;;;r   c           	      d   t          t          j        | j                            }|j                            dd          }dt                      z   }ddd|i|ddd	d	d
ddgdgid}|                    d|dd          }|                     d|j	        j
        d         j                   d S )Nr   r.   Podr   zpod-r$   r~   r   r   rq   rr   r   r   r6   rc   zkubernetes-unittestsAll)rd   r=   field_managerdry_runr   )r   r   rC   r   rE   rF   r   server_side_applyrH   r8   managedFieldsmanager)rR   rS   ry   r$   pod_manifestrW   s         r   test_server_side_apply_apiz,TestDynamicClient.test_server_side_apply_api  s   z3$+NNNOO""5 # * * 
$"(.~$(* *%%,$+8:8='? '? &@)A )A (B C	D 	D $$l0% % A A 	/1LQ1O1WXXXXXr   N)__name__
__module____qualname__classmethodr   rZ   rf   rj   r{   r   r   r   r   r   r   r   r   r   r       s        2 2 [2aK aK aKFqD qD qDfiD iD iDV-
 -
 -
^"- "- "-H-) -) -)^A A A< < <$Y Y Y Y Yr   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestDynamicClientSerializationc                     t          j                    }t          t          j        |                    | _        ddddidddd	gid
| _        d S )Nr   r.   r   r$   zfoo-podr   mainbusybox)r$   r   r6   )r   r   r   r   rC   rS   r   )r   r   s     r   r   z)TestDynamicClientSerialization.setUpClass  sc    +--":#7f#M#M#MNN
+!Vi$H$H#IJ	
 
r   c                 v    |                      | j                            | j                  | j                   d S r   )rH   rS   serialize_bodyr   )rR   s    r   test_dict_typez-TestDynamicClientSerialization.test_dict_type)  s4    33D4EFFHYZZZZZr   c                     t          | j        | j                  }|                     | j                            |          | j                   d S r   )r   rS   r   rH   r   )rR   insts     r   test_resource_instance_typez:TestDynamicClientSerialization.test_resource_instance_type,  sE    T->??33D994;LMMMMMr   c                    ddd}t          |          }|                     |d         |d                    |                     |d         |d                    |                     | j                            |          |           dS )z`ResourceField` is a special type which overwrites `__getattr__` method to return `None`
        when a non-existent attribute was accessed. which means it can pass any `hasattr(...)` tests.
        barT)foorR   )r   r   rR   N)r   rH   rS   r   )rR   r   ress      r   test_resource_fieldz2TestDynamicClientSerialization.test_resource_field0  s    
 
 
 6***UVE]333VfVn55533C88&AAAAAr   N)r   r   r   r   r   r   r   r   r   r   r   r   r     se        
 
 [
[ [ [N N NB B B B Br   r   )rJ   unittestr   kubernetes.e2e_testr   kubernetes.clientr    r   resourcer   r   
exceptionsr	   r   TestCaser   r   r   r   r   <module>r      s      $ $ $ $ $ $ ( ( ( ( ( (       5 5 5 5 5 5 5 5 - - - - - -  
yY yY yY yY yY) yY yY yYxB B B B BX%6 B B B B Br   