
    ?gN                         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y)    N)base)
api_client   )DynamicClient)ResourceInstanceResourceField)ResourceNotFoundErrorc                  F    t        t        j                               } | dd  S )Ni)struuiduuid4)ids    S/var/www/openai/venv/lib/python3.12/site-packages/kubernetes/dynamic/test_client.py
short_uuidr      s    	TZZ\	Bcd8O    c                   R    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y)TestDynamicClientc                 6    t        j                         | _        y N)r   get_e2e_configurationconfig)clss    r   
setUpClasszTestDynamicClient.setUpClass"   s    //1
r   c           	         t        t        j                  | j                              }| j	                  t
              5  |j                  j                  dd      }d d d        |j                  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                  |      }| j                  ||j                  j                         | j                  |j                         	 |j                  j                  dd      }|j                  j                  dd      }|j                         }| j                  |j                   g        dt#               z   }ddd|ii d}|j                  |      }| j                  |j                  j                  |       |j                  |      }| j                  |j                  j                  |       d|d   d<   |j%                  |d      }| j                  |j&                  j(                  d       |j                  |      }| j                  |j&                  j(                  d       |j                         }| j                  t+        |j                         d       |j-                  |      }|j                         }| j                  t+        |j                         d       |j-                  |      }t        j                  d       |j                  j/                          | j	                  t
              5  |j                  j                  dd      }d d d        y # 1 sw Y   CxY w# t
        $ r t        j                  d       Y ow xY w# 1 sw Y   y xY w)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3$++NO45!++//18I 0 KL 6 ""&&6+ ' - 38. ,- 50 1	 #b!
* ~~l+t}}112${{  
 	t}}112$	!++//18I 0 KL
 ''++-4E , G!R()JL8/% 
 ""(9":++];]3++];,-&!&)!!"7 " 
 	+]3+!TZZ!,"" # 
 !TZZ!,~~  
 	

1))+45!++//18I 0 KL 65y 65V % 	JJqM	b 65s)   N N+ 7ON(+OOOc           	         t        t        j                  | j                              }| j	                  t
              5  |j                  j                  dd      }d d d        |j                  j                  dd      }d}ddd|id	dd
ddddddi idd}|j                  |d      }| j                  ||j                  j                         | j                  |j                         |j                  |d      }| j                  ||j                  j                         | j                  |j                         	 |j                  j                  dd      }|j                  d      }| j                  |j                   g        dt#               z   }ddd|ii d}|j                  |dd      }| j                  |j                  j                  |       |j                  |dd      }| j                  |j                  j                  |       d|d   d<   |j%                  |ddd      }| j                  |j&                  j(                  d       |j                  |dd      }| j                  |j&                  j(                  d       |j                  dd       }| j                  t+        |j                         d!       |j                  d      }| j                  t+        |j                         d!       |j-                  |dd      }|j                  dd       }| j                  t+        |j                         d"       |j                  d      }| j                  t+        |j                         d"       |j-                  |d      }t        j                  d       |j                  j/                          | j	                  t
              5  |j                  j                  dd      }d d d        y # 1 sw Y   xY w# t
        $ r6 t        j                  d       |j                  j                  dd      }Y w xY w# 1 sw Y   y xY w)#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   sO   z33$++NO45!++//1
 0 DL 6 ""&&6+ ' - , 9. ,& .) *	 &b!
* ^^LD^A
z22778
))*[[ ! 

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

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

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


 	

1))+45!++//1
 0 DL 65Y 65\ % 	DJJqM!++//1
 0 DL	D| 65s)   PP QP;QQQc           	         t        t        j                  | j                              }| j	                  t
              5  |j                  j                  dd      }d d d        |j                  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                  |      }| j                  ||j                  j                         | j                  |j                         	 |j                  j                  dd      }|j                  j                  dd      }|j                         }| j                  |j                   g        dt#               z   }ddd|ii d}|j                  |d      }| j                  |j                  j                  |       |j                  |d      }| j                  |j                  j                  |       d|d   d<   |j%                  |dd      }| j                  |j&                  j(                  d       |j                  |d      }| j                  |j&                  j(                  d       |j                  d      }| j                  t+        |j                         d       |j                         }| j                  t+        |j                         d       |j-                  |d      }|j                  d      }| j                  t+        |j                         d        |j                         }| j                  t+        |j                         d        |j-                  |      }t        j                  d       |j                  j/                          | j	                  t
              5  |j                  j                  dd      }d d d        y # 1 sw Y   xY w# t
        $ r t        j                  d       Y w xY w# 1 sw Y   y xY w)!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   s    z33$++NO45!++//1
 0 DL 6 ""&&6+ ' - ,8. ,& .) *	 &b!
* ~~l+t}}112${{  
 	t}}112$	!++//1
 0 DL
 ''++-J , @!R()JL8/ 
 ""(9Y"O++];]iH++];,-&!&)!!"7 " 

 	+]iH+)4TZZ!,!TZZ!,"" # 

 )4TZZ!,!TZZ!,~~  
 	

1))+45!++//1
 0 DL 65I 65V % 	JJqM	r 65s)   P P *QPQ ?Q Qc                 *   t        t        j                  | j                              }|j                  j                  dd      }dt               z   }ddd|i|dddd	d
d	dgd|idd}|j                  |d      }| j                  ||j                  j                         | j                  |j                         |j                  |d      }| j                  ||j                  j                         | j                  |j                         ddd
ddg|d   d<   |j                  ||d      }| j                  dt        |j                  j                                | j                  |j                         |j#                  |i d      }y )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3$++NO""t)"DZ\)*.$-4:D>15<@)B 9?8:<A>@0B /C 39$	%A	B zz!  
 	t}}112$ww  
 	t}}112$6;6::?<@.B -C ) yy!  

 	C		01$zzB  
r   c                    t        t        j                  | 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}|j                  |d      }| j                  ||j                  j                         | j                  d|j                  j                         |j                  |d      }| j                  ||j                  j                         | j                  d|j                  j                         |j                  |dd       y )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  sg   z33$++NO""#: # < Z\)+$*D>!%'!""($!FD>/3".&-%,9;49(; '<2= 1> "?"@AB zz	  3t}}112DII../ww  ,t}}112DII../

+ 	 	-r   c                    t        t        j                  | j                              }|j                  j                  dd      }dt               z   }dd|ddidd	d
dd}|j                  |d      }| j                  ||j                  j                         |j                  |dd      }| j                  ||j                  j                         d}|j                  |dd|      D ]  }|dz  }	 | j                  |dkD  d       d|d   d<   |j                  |d|      }|j                  |i d      }|j                  ddd      }| j                  g |j                         y )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3$++NO""t+"F :</  H E
 zz9  
 	t}}112ww?  Lt}}112c2NAQJE O	'EF04v}-yy  A zzB)  5 ww*  , 	TZZ(r   c                    t        t        j                  | j                              }|j                  j                  dd      }|j                         j                  D ]b  }|j                  |j                  j                        }| j                  t        t        |j                  j                              dkD         d y )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3$++NO""t&"AGGIOOD77 2 273DOOCT]]%9%9 :;a?@ $r   c                    t        t        j                  | j                              }|j                  j                  dd      }dddii} |j
                  di |}| j                  d|j                         | j                  d	|j                         dd
dii} |j
                  di |}| j                  d|j                         | j                  d	|j                         y )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3$++NO""t&"A \^_ sww  4dii@)4??; \^_ sww  4dii@)4??;r   c           	      h   t        t        j                  | j                              }|j                  j                  dd      }dt               z   }ddd|i|ddd	d	d
ddgdgid}|j                  d|dd      }| j                  d|j                  j                  d   j                         y )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3$++NO""5 # * 
$"(.~$(*%%,$+8:8='? &@)A (B C	D $$l0% % A 	/1L1LQ1O1W1WXr   N)__name__
__module____qualname__classmethodr   rZ   rf   rj   r{   r   r   r   r   r   r   r   r   r   r       sO    2 2aKFqDfiDV-
^"-H-)^A<$Yr   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestDynamicClientSerializationc                     t        j                         }t        t        j                  |            | _        ddddidddd	gid
| _        y )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  sO    ++-":#7#7f#MN
+!Vi$H#IJ	
r   c                     | j                  | j                  j                  | j                        | j                         y r   )rH   rS   serialize_bodyr   )rR   s    r   test_dict_typez-TestDynamicClientSerialization.test_dict_type)  s-    33D4E4EFHYHYZr   c                     t        | j                  | j                        }| j                  | j                  j	                  |      | j                         y r   )r   rS   r   rH   r   )rR   insts     r   test_resource_instance_typez:TestDynamicClientSerialization.test_resource_instance_type,  s=    T->->?33D94;L;LMr   c                     ddd}t        |      }| j                  |d   |d          | j                  |d   |d          | j                  | j                  j                  |      |       y)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  sl    
 
 6*UVE]3VfVn533C8&Ar   N)r   r   r   r   r   r   r   r   r   r   r   r   r     s&    
 
[NBr   r   )rJ   unittestr   kubernetes.e2e_testr   kubernetes.clientr    r   resourcer   r   
exceptionsr	   r   TestCaser   r   r   r   r   <module>r      sO       $ (  5 -
yY)) yYxBX%6%6 Br   