Ë
    eQêjö<  ã                   óä   — d dl Z d dlmZ d dlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZmZmZmZmZ 	 d dlZdZ	 d d
lmZ g d¢Zd„ Z G d„ d«      Zy# e$ r d	ZY Œ"w xY w# e$ r  G d„ de«      ZY Œ1w xY w)é    N)Úwatch)ÚApiExceptioné   )ÚEagerDiscovererÚLazyDiscoverer)Úapi_exceptionÚKubernetesValidateMissing)ÚResourceÚResourceListÚSubresourceÚResourceInstanceÚResourceFieldTF)ÚVersionNotSupportedErrorc                   ó   — e Zd Zy)r   N)Ú__name__Ú
__module__Ú__qualname__© ó    ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/dynamic/client.pyr   r   !   s   „ Ør   r   )ÚDynamicClientr   r
   r   r   r   r   r   c                 ó   ‡ — ˆ fd„}|S )zC Handles parsing response structure and translating API Exceptions c                 ón  •— |j                  dd«      }|j                  dt        «      }	  ‰| g|¢­i |¤Ž}|r6	  || t	        j
                  |j                  j                  d«      «      «      S |S # t        $ r}t        |«      ‚d }~ww xY w# t        $ r |j                  j                  d«      cY S w xY w)NÚ	serializeTÚ
serializerÚutf8)	Úpopr   r   r   ÚjsonÚloadsÚdataÚdecodeÚ
ValueError)ÚselfÚargsÚkwargsÚserialize_responser   ÚrespÚeÚfuncs          €r   Úinnerzmeta_request.<locals>.inner2   s¶   ø€ Ø#ŸZ™Z¨°TÓ:ÐØ—Z‘Z Ô.>Ó?ˆ
ð	#Ù˜Ð.˜tÒ. vÑ.ˆDñ ð0Ù! $¬¯
©
°4·9±9×3CÑ3CÀFÓ3KÓ(LÓMÐMð ˆøô ò 	#Ü Ó"Ð"ûð	#ûô
 ò 0Ø—y‘y×'Ñ'¨Ó/Ò/ð0ús(   «A1 º4B Á1	B
Á:BÂB
Â$B4Â3B4r   )r)   r*   s   ` r   Úmeta_requestr+   0   s   ø€ ôð €Lr   c                   ó–   — e Zd ZdZdd„Zed„ «       Zed„ «       Zd„ Zd„ Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zedd„«       Zdd„Zy)r   zb A kubernetes client that dynamically discovers and interacts with
        the kubernetes API
    Nc                 ód   — |xs t         }|| _        |j                  | _         || |«      | _        y ©N)r   ÚclientÚconfigurationÚ_DynamicClient__discoverer)r#   r/   Ú
cache_fileÚ
discoverers       r   Ú__init__zDynamicClient.__init__H   s2   € ð  Ò1¤>ˆ
àˆŒØ#×1Ñ1ˆÔÙ& t¨ZÓ8ˆÕr   c                 ó   — | j                   S r.   )r1   ©r#   s    r   Ú	resourceszDynamicClient.resourcesQ   s   € à× Ñ Ð r   c                 ó.   — | j                   j                  S r.   )r1   Úversionr6   s    r   r9   zDynamicClient.versionU   s   € à× Ñ ×(Ñ(Ð(r   c                 ó²   — |xs! |j                  di «      j                  d«      }|s/t        dj                  |j                  |j                  «      «      ‚|S )NÚmetadataÚ	namespacezNamespace is required for {}.{})Úgetr"   ÚformatÚgroup_versionÚkind)r#   Úresourcer<   Úbodys       r   Úensure_namespacezDynamicClient.ensure_namespaceY   sQ   € ØÒJ §¡¨*°bÓ!9×!=Ñ!=¸kÓ!Jˆ	ÙÜÐ>×EÑEÀh×F\ÑF\Ð^f×^kÑ^kÓlÓmÐmØÐr   c                 óZ   — t        t        |dd«      «      r|j                  «       S |xs i S )z�Serialize body to raw dict so apiserver can handle it

        :param body: kubernetes resource body, current support: Union[Dict, ResourceInstance]
        Úto_dictN)ÚcallableÚgetattrrE   )r#   rB   s     r   Úserialize_bodyzDynamicClient.serialize_body_   s+   € ô ”G˜D )¨TÓ2Ô3Ø—<‘<“>Ð!ØŠz�rÐr   c                 óP   — |j                  ||¬«      } | j                  d|fi |¤ŽS )N©Únamer<   r=   )ÚpathÚrequest)r#   rA   rK   r<   r%   rL   s         r   r=   zDynamicClient.geti   s,   € Ø�}‰} $°)ˆ}Ó<ˆØˆt�|‰|˜E 4Ñ2¨6Ñ2Ð2r   c                 ó²   — | j                  |«      }|j                  r| j                  |||«      }|j                  |¬«      } | j                  d|fd|i|¤ŽS )N)r<   ÚpostrB   )rH   Ú
namespacedrC   rL   rM   )r#   rA   rB   r<   r%   rL   s         r   ÚcreatezDynamicClient.createm   s\   € Ø×"Ñ" 4Ó(ˆØ×ÒØ×-Ñ-¨h¸	À4ÓHˆIØ�}‰} yˆ}Ó1ˆØˆt�|‰|˜F DÑ>¨tÐ>°vÑ>Ð>r   c                 ó´   — |s|s|st        d«      ‚|j                  r|s|s|st        d«      ‚|j                  ||¬«      } | j                  d|f|||dœ|¤ŽS )Nz>At least one of name|label_selector|field_selector is requiredzCAt least one of namespace|label_selector|field_selector is requiredrJ   Údelete)rB   Úlabel_selectorÚfield_selector)r"   rP   rL   rM   )	r#   rA   rK   r<   rB   rT   rU   r%   rL   s	            r   rS   zDynamicClient.deletet   se   € Ù™©.ÜÐ]Ó^Ð^Ø×Ò©¹.ÉIÜÐbÓcÐcØ�}‰} $°)ˆ}Ó<ˆØˆt�|‰|˜H dÐ~°ÀnÐesÑ~Ðw}Ñ~Ð~r   c                 ó`  — | j                  |«      }|xs! |j                  di «      j                  d«      }|s/t        dj                  |j                  |j
                  «      «      ‚|j                  r| j                  |||«      }|j                  ||¬«      } | j                  d|fd|i|¤ŽS )Nr;   rK   z!name is required to replace {}.{}rJ   ÚputrB   )
rH   r=   r"   r>   r?   r@   rP   rC   rL   rM   )r#   rA   rB   rK   r<   r%   rL   s          r   ÚreplacezDynamicClient.replace|   s§   € Ø×"Ñ" 4Ó(ˆØÒ;�t—x‘x 
¨BÓ/×3Ñ3°FÓ;ˆÙÜÐ@×GÑGÈ×H^ÑH^Ð`h×`mÑ`mÓnÓoÐoØ×ÒØ×-Ñ-¨h¸	À4ÓHˆIØ�}‰} $°)ˆ}Ó<ˆØˆt�|‰|˜E 4Ñ=¨dÐ=°fÑ=Ð=r   c                 ó†  — | j                  |«      }|xs! |j                  di «      j                  d«      }|s/t        dj                  |j                  |j
                  «      «      ‚|j                  r| j                  |||«      }|j                  dd«      }|j                  ||¬«      } | j                  d|f||dœ|¤ŽS )	Nr;   rK   úname is required to patch {}.{}Úcontent_typez&application/strategic-merge-patch+jsonrJ   Úpatch)rB   r[   )rH   r=   r"   r>   r?   r@   rP   rC   r   rL   rM   )r#   rA   rB   rK   r<   r%   r[   rL   s           r   r\   zDynamicClient.patch†   s»   € Ø×"Ñ" 4Ó(ˆØÒ;�t—x‘x 
¨BÓ/×3Ñ3°FÓ;ˆÙÜÐ>×EÑEÀh×F\ÑF\Ð^f×^kÑ^kÓlÓmÐmØ×ÒØ×-Ñ-¨h¸	À4ÓHˆIà—z‘z .Ð2ZÓ[ˆØ�}‰} $°)ˆ}Ó<ˆàˆt�|‰|˜G TÐZ°À<ÑZÐSYÑZÐZr   c                 óˆ  — | j                  |«      }|xs! |j                  di «      j                  d«      }|s/t        dj                  |j                  |j
                  «      «      ‚|j                  r| j                  |||«      }|j                  ddi«       |j                  ||¬«      } | j                  d|f||dœ|¤ŽS )	Nr;   rK   rZ   r[   zapplication/apply-patch+yamlrJ   r\   )rB   Úforce_conflicts)rH   r=   r"   r>   r?   r@   rP   rC   ÚupdaterL   rM   )r#   rA   rB   rK   r<   r^   r%   rL   s           r   Úserver_side_applyzDynamicClient.server_side_apply“   s¾   € Ø×"Ñ" 4Ó(ˆØÒ;�t—x‘x 
¨BÓ/×3Ñ3°FÓ;ˆÙÜÐ>×EÑEÀh×F\ÑF\Ð^f×^kÑ^kÓlÓmÐmØ×ÒØ×-Ñ-¨h¸	À4ÓHˆIð 	�‰�~Ð'EÐFÔGØ�}‰} $°)ˆ}Ó<ˆàˆt�|‰|˜G TÐ`°ÀoÑ`ÐY_Ñ`Ð`r   c              #   óÆ   K  — |st        j                  «       }|rd|› �}|j                  |j                  ||||d||	|
|¬«
      D ]  }t	        ||d   «      |d<   |–— Œ y­w)a®  
        Stream events for a resource from the Kubernetes API

        :param resource: The API resource object that will be used to query the API
        :param namespace: The namespace to query
        :param name: The name of the resource instance to query
        :param label_selector: The label selector with which to filter results
        :param field_selector: The field selector with which to filter results
        :param resource_version: The version with which to filter results. Only events with
                                 a resource_version greater than this value will be returned
        :param timeout: The amount of time in seconds to wait before terminating the stream
        :param watcher: The Watcher object that will be used to stream the resource
        :param allow_watch_bookmarks: Ask the API server to send BOOKMARK events
        :param send_initial_events: Ask the API server to begin the stream with synthetic events
                                    for the current state, followed by a BOOKMARK event
        :param resource_version_match: How resource_version is matched, e.g. "NotOlderThan".
                                       Required by the API server when send_initial_events is set

        :return: Event object with these keys:
                   'type': The type of event such as "ADDED", "DELETED", etc.
                   'raw_object': a dict representing the watched object.
                   'object': A ResourceInstance wrapping raw_object.

        Example:
            client = DynamicClient(k8s_client)
            watcher = watch.Watch()
            v1_pods = client.resources.get(api_version='v1', kind='Pod')

            for e in v1_pods.watch(resource_version=0, namespace=default, timeout=5, watcher=watcher):
                print(e['type'])
                print(e['object'].metadata)
                # If you want to gracefully stop the stream watcher
                watcher.stop()
        zmetadata.name=F)	r<   rU   rT   Úresource_versionr   Útimeout_secondsÚallow_watch_bookmarksÚsend_initial_eventsÚresource_version_matchÚobjectN)r   ÚWatchÚstreamr=   r   )r#   rA   r<   rK   rT   rU   rb   ÚtimeoutÚwatcherrd   re   rf   Úevents                r   r   zDynamicClient.watch¡   s�   è ø€ ñF ¤%§+¡+£-˜ñ Ø-¨d¨VÐ4ˆNà—^‘^Ø�L‰LØØ)Ø)Ø-ØØ#Ø"7Ø 3Ø#9ð $ó 
ò 	ˆEô /¨x¸¸x¹ÓIˆE�(‰OØ‹Kñ	ùs   ‚AA!c                 ó”  — |j                  d«      sd|z   }|j                  di «      }|j                  dg «      }|j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d	«      �|j                  d
|d	   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d|d   f«       |j                  d«      �|j                  d |d   f«       |j                  d!«      �|j                  d"|d!   f«       |j                  d#«      �|j                  d$|d#   f«       |j                  d%i «      }g }i }	|j                  «       D �
�ci c]  \  }
}|
j	                  «       |“Œ }}
}d&|vr | j
                  j                  d'd(g«      |d)<   |j                  d*«      r	|d*   |d+<   nd'|d+<   d,g}|j                  d-d «       | j
                  j                  |j                  «       |||||||	|¬.«	      } | j
                  j                  |d/|j                  d/«      iŽ}d0|j                  cxk  rd1k  s.n |j                  «        | j
                  j                  |i «       |j                  S c c}}
w )2Nú/Úpath_paramsÚquery_paramsÚprettyÚ	_continueÚcontinueÚinclude_uninitializedÚincludeUninitializedrU   ÚfieldSelectorrT   ÚlabelSelectorÚlimitrb   ÚresourceVersionrf   ÚresourceVersionMatchrc   ÚtimeoutSecondsr   Úgrace_period_secondsÚgracePeriodSecondsÚpropagation_policyÚpropagationPolicyÚorphan_dependentsÚorphanDependentsÚdry_runÚdryRunÚfield_managerÚfieldManagerr^   Úforcerd   ÚallowWatchBookmarksre   ÚsendInitialEventsÚheader_paramsÚacceptzapplication/jsonzapplication/yamlÚAcceptr[   zContent-TypeÚBearerTokenÚ	async_req)ro   rp   r‰   rB   Úpost_paramsÚfilesÚauth_settingsÚ_request_timeoutéÈ   i+  )Ú
startswithr=   ÚappendÚitemsÚlowerr/   Úselect_header_acceptr   Úparam_serializeÚupperÚcall_apiÚstatusÚreadÚresponse_deserializeÚresponse)r#   ÚmethodrL   rB   Úparamsro   rp   r‰   Úform_paramsÚlocal_var_filesÚkeyÚvalueÚnew_header_paramsr�   rM   Úapi_responses                   r   rM   zDynamicClient.requestÙ   s}  € à�‰˜sÔ#Ø˜‘:ˆDà—j‘j °Ó3ˆØ—z‘z .°"Ó5ˆØ�:‰:�hÓÐ+Ø×Ñ ¨6°(Ñ+;Ð <Ô=Ø�:‰:�kÓ"Ð.Ø×Ñ ¨V°KÑ-@Ð AÔBØ�:‰:Ð-Ó.Ð:Ø×ÑÐ!7¸Ð@WÑ9XÐ YÔZØ�:‰:Ð&Ó'Ð3Ø×Ñ °&Ð9IÑ2JÐ KÔLØ�:‰:Ð&Ó'Ð3Ø×Ñ °&Ð9IÑ2JÐ KÔLØ�:‰:�gÓÐ*Ø×Ñ ¨&°©/Ð :Ô;Ø�:‰:Ð(Ó)Ð5Ø×ÑÐ!2°FÐ;MÑ4NÐ OÔPØ�:‰:Ð.Ó/Ð;Ø×ÑÐ!7¸Ð@XÑ9YÐ ZÔ[Ø�:‰:Ð'Ó(Ð4Ø×ÑÐ!1°6Ð:KÑ3LÐ MÔNØ�:‰:�gÓÐ*Ø×Ñ ¨&°©/Ð :Ô;Ø�:‰:Ð,Ó-Ð9Ø×ÑÐ!5°vÐ>TÑ7UÐ VÔWØ�:‰:Ð*Ó+Ð7Ø×ÑÐ!4°fÐ=QÑ6RÐ SÔTØ�:‰:Ð)Ó*Ð6Ø×ÑÐ!3°VÐ<OÑ5PÐ QÔRØ�:‰:�iÓ Ð,Ø×Ñ ¨6°)Ñ+<Ð =Ô>Ø�:‰:�oÓ&Ð2Ø×Ñ °¸Ñ1HÐ IÔJØ�:‰:Ð'Ó(Ð4Ø×Ñ ¨&Ð1BÑ*CÐ DÔEØ�:‰:Ð-Ó.Ð:Ø×ÑÐ!6¸Ð?VÑ8WÐ XÔYØ�:‰:Ð+Ó,Ð8Ø×ÑÐ!4°fÐ=RÑ6SÐ TÔUàŸ
™
 ?°BÓ7ˆØˆØˆð CP×BUÑBUÓBW×X±J°C¸˜SŸY™Y›[¨%Ñ/ÐXÐÑXØÐ,Ñ,Ø&*§k¡k×&FÑ&FØ"Ø"ðHó 'ˆM˜(Ñ#ð �:‰:�nÔ%Ø,2°>Ñ,BˆM˜.Ò)ð -?ˆM˜.Ñ)ð '˜ˆð 	�
‰
�; Ô%à—+‘+×-Ñ-Ø�L‰L‹NØØ#Ø%Ø'ØØ#Ø!Ø'ð .ó 

ˆð ,�t—{‘{×+Ñ+Øð
à#ŸZ™ZÐ(:Ó;ñ
ˆð �l×)Ñ)Ô0¨SÔ0Ø×ÑÔØ�K‰K×,Ñ,¨\¸2Ô>Ø×$Ñ$Ð$ùóU Ys   Ì"Qc                 óþ  — t         s
t        «       ‚t        «       }t        «       }	 |€	 | j                  d   d   }t        j                  |||«       ||fS # t        $ r t        j                  «       }Y Œ:w xY w# t
        j                  j                  $ rd}|j                  ddj                  |j                  D �cg c]  }t        |«      ‘Œ nc c}w c}«      ›d|j                  ›�«       Y d}~||fS d}~wt        $ r |j                  d|z  «       Y ||fS t
        j                  j                   $ rF}|j                  d|j"                  ›d	|j$                  ›d
|j                  ›d�«       Y d}~||fS d}~ww xY w)aŸ  validate checks a kubernetes resource definition

        Args:
            definition (dict): resource definition
            version (str): version of kubernetes to validate against
            strict (bool): whether unexpected additional properties should be considered errors

        Returns:
            warnings (list), errors (list): warnings are missing validations, errors are validation failures
        NÚ
kubernetesÚ
gitVersionz(resource definition validation error at ú.z: z=Kubernetes version %s is not supported by kubernetes-validatez&Could not find schema for object kind z with API version z in Kubernetes version z (possibly Custom Resource?))ÚHAS_KUBERNETES_VALIDATEr	   Úlistr9   ÚKeyErrorÚkubernetes_validateÚlatest_versionÚvalidateÚutilsÚValidationErrorr”   ÚjoinrL   ÚstrÚmessager   ÚSchemaNotFoundErrorr@   Úapi_version)r#   Ú
definitionr9   ÚstrictÚerrorsÚwarningsr(   Úitems           r   r°   zDynamicClient.validate6  s{  € õ 'Ü+Ó-Ð-ä“ˆÜ“6ˆð	@ØˆðCØ"Ÿl™l¨<Ñ8¸ÑF�Gô  ×(Ñ(¨°W¸fÔEð ˜ÐÐøô  ò CÜ1×@Ñ@ÓB’GðCûô #×(Ñ(×8Ñ8ò 	DØ�MŠMÈcÏhÉhÐno×ntÑntÖWuÐfjÔX[Ð\`ÕXaÑWuùÔWuÕNvÐxy÷  yBò  yBð  C÷  Dð  Dð ˜ÐÐûô (ò 	eØ�M‰MÐYÐ\cÑcÕdð ˜ÐÐô #×(Ñ(×<Ñ<ò 	@Ø�OŠOØŸV›V Q§]£]°A·I³Ið?÷ @ð @à˜ÐÐûð	@úsW   ¦A9 ©A »A9 ÁA6Á3A9 Á5A6Á6A9 Á9E<Â%C5Â;CÃ C5Ã5 E<ÄE<Ä69E7Å7E<)NN)NNNNN)NNN)NNNN)
NNNNNNNNNNr.   )NF)r   r   r   Ú__doc__r4   Úpropertyr7   r9   rC   rH   r=   rQ   rS   rX   r\   r`   r   r+   rM   r°   r   r   r   r   r   C   s�   „ ñó9ð ñ!ó ð!ð ñ)ó ð)òòó3ó?óó>ó[óaó6ðp òZ%ó ðZ%ôx r   r   )r   r¨   r   Úkubernetes.client.restr   Ú	discoveryr   r   Ú
exceptionsr   r	   rA   r
   r   r   r   r   r®   r«   ÚImportErrorÚkubernetes_validate.utilsr   ÚNotImplementedErrorÚ__all__r+   r   r   r   r   ú<module>rÆ      s   ðó å Ý /ç 6ß @ß ZÕ Zð$ÛØ"ÐðÝBò
	€ò÷&Q ò Q øðQ ò $Ø#Òð$ûð
 ò ôÐ#6ö ðús"   °A ·A ÁAÁAÁA/Á.A/