
    &`iK"                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlZd dlm	Z	  ej
        e          Zi ai i ddi i 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d Zd Zd Zd Zd Zd Z d Z!d Z"d Z#eeeeeeeeeee#edZ$dddd d!d"d#d$d%d&d'd(d)Z%eeeee e!e"eed*	Z&d+ee'ef         fd,Z(	 d4d+ee'ef         d.e'd/e)d0efd1Z*d2 Z+d3 Z,dS )5    N)AnyDictload_function_or_class)ray.head.defaultzray.worker.defaultr   )available_node_typeshead_node_type	head_nodeworker_nodesc                 b    	 dd l }n"# t          $ r}t          d          |d }~ww xY wddlm} |S )Nr   z}The Ray AWS VM launcher requires the AWS SDK for Python (Boto3) to be installed. You can install it with `pip install boto3`.)AWSNodeProvider)boto3ImportError)ray.autoscaler._private.aws.node_providerr   )provider_configr   er   s       u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/autoscaler/_private/providers.py_import_awsr      sk     	   L
 
 	 JIIIII    
&!&c                 b    	 dd l }n"# t          $ r}t          d          |d }~ww xY wddlm} |S )Nr   zThe Ray GCP VM launcher requires the Google API Client to be installed. You can install it with `pip install google-api-python-client`.)GCPNodeProvider)googleapiclientr   )ray.autoscaler._private.gcp.node_providerr   )r   r   r   r   s       r   _import_gcpr   ,   sm       N
 
 	 JIIIIIr   c                     ddl m} |S )Nr   )AzureNodeProvider),ray.autoscaler._private._azure.node_providerr   )r   r   s     r   _import_azurer   :   s    NNNNNN    c                     ddl m} |S )Nr   )VsphereWcpNodeProvider)-ray.autoscaler._private.vsphere.node_providerr!   )r   r!   s     r   _import_vspherer#   @   s    TTTTTT!!r   c                 *    d| v rddl m} |S ddlm} |S )Ncoordinator_addressr   )CoordinatorSenderNodeProvider)LocalNodeProvider)7ray.autoscaler._private.local.coordinator_node_providerr&   +ray.autoscaler._private.local.node_providerr'   )r   r&   r'   s      r   _import_localr*   F   sK    //	
 	
 	
 	
 	
 	
 -,QQQQQQ  r   c                     ddl m} |S )Nr   )ReadOnlyNodeProvider).ray.autoscaler._private.readonly.node_providerr,   )r   r,   s     r   _import_readonlyr.   S   s    SSSSSSr   c                     ddl m} |S )Nr   )FakeMultiNodeProvider)5ray.autoscaler._private.fake_multi_node.node_providerr0   )r   r0   s     r   _import_fake_multinoder2   Y   s(          ! r   c                     ddl m} |S )Nr   )FakeMultiNodeDockerProvider)r1   r4   )r   r4   s     r   _import_fake_multinode_dockerr5   a   s(          '&r   c                     ddl m} |S )Nr   )KubeRayNodeProvider)-ray.autoscaler._private.kuberay.node_providerr7   )r   r7   s     r   _import_kuberayr9   i   s    QQQQQQr   c                     ddl m} |S )Nr   )AliyunNodeProvider),ray.autoscaler._private.aliyun.node_providerr;   )r   r;   s     r   _import_aliyunr=   o   s    OOOOOOr   c                     ddl m} |S )Nr   )SparkNodeProvider)+ray.autoscaler._private.spark.node_providerr?   )r   r?   s     r   _import_sparkrA   u   s    MMMMMMr   c                      dd l mc mc m}  t          j                            t          j                            | j                  d          S )Nr   zexample.yaml	'ray.autoscaler._private.fake_multi_node
autoscaler_privatefake_multi_nodeospathjoindirname__file__ray_fake_multinodes    r   $_load_fake_multinode_defaults_configrO   {   sN    HHHHHHHHHHHH7<<(:(CDDnUUUr   c                      dd l mc mc m}  t          j                            t          j                            | j                  d          S Nr   zdefaults.yaml)	 ray.autoscaler._private.readonlyrE   rF   readonlyrH   rI   rJ   rK   rL   )ray_readonlys    r   _load_read_only_defaults_configrU      sM    ;;;;;;;;;;;;7<<(=>>PPPr   c                      dd l mc mc m}  t          j                            t          j                            | j                  d          S )Nr   zexample_docker.yamlrC   rM   s    r   +_load_fake_multinode_docker_defaults_configrW      sV    HHHHHHHHHHHH7<<
*3446K  r   c                      dd l mc m}  t          j                            t          j                            | j                  d          S rQ   )ray.autoscaler.localrE   localrH   rI   rJ   rK   rL   )	ray_locals    r   _load_local_defaults_configr\      D    ,,,,,,,,,7<<	(:;;_MMMr   c                      dd l mc m}  t          j                            t          j                            | j                  d          S rQ   )ray.autoscaler.awsrE   awsrH   rI   rJ   rK   rL   )ray_awss    r   _load_aws_defaults_configrb      D    (((((((((7<<(899?KKKr   c                      dd l mc m}  t          j                            t          j                            | j                  d          S rQ   )ray.autoscaler.vsphererE   vsphererH   rI   rJ   rK   rL   )ray_vspheres    r   _load_vsphere_defaults_configrh      sD    0000000007<<(<==OOOr   c                      dd l mc m}  t          j                            t          j                            | j                  d          S rQ   )ray.autoscaler.gcprE   gcprH   rI   rJ   rK   rL   )ray_gcps    r   _load_gcp_defaults_configrm      rc   r   c                      dd l mc m}  t          j                            t          j                            | j                  d          S rQ   )ray.autoscaler.azurerE   azurerH   rI   rJ   rK   rL   )	ray_azures    r   _load_azure_defaults_configrr      r]   r   c                      dd l mc m}  t          j                            t          j                            | j                  d          S rQ   )ray.autoscaler.aliyunrE   aliyunrH   rI   rJ   rK   rL   )
ray_aliyuns    r   _load_aliyun_defaults_configrw      sD    .........7<<
(;<<oNNNr   c                 2    t          | d                   }|S )Nmodule)rI   r   )r   provider_clss     r   _import_externalr{      s    )x/HIIILr   )rZ   fake_multinodefake_multinode_dockerrS   r`   rk   rf   rp   kuberayru   externalsparkzReadonly (Manual Cluster Setup)zFake MultinodezFake Multinode DockerLocalAWSGCPAzureKubeRayAliyunExternalvSphereSpark)rS   r|   r}   rZ   r`   rk   rp   r~   ru   r   rf   r   )	r|   r}   rZ   r`   rk   rp   ru   rf   rS   r   c                     t                               | d                   }|(t          d                    | d                              ||           S )aQ  Get the node provider class for a given provider config.

    Note that this may be used by private node providers that proxy methods to
    built-in node providers, so we should maintain backwards compatibility.

    Args:
        provider_config: provider section of the autoscaler config.

    Returns:
        NodeProvider class
    typeNUnsupported node provider: {})_NODE_PROVIDERSgetNotImplementedErrorformat)r   importers     r   _get_node_provider_clsr      s\     ""?6#:;;H!+22?63JKK
 
 	
 8O$$$r   Tcluster_name	use_cachereturnc                     t          j        | d          |f}|r|t          v rt          |         S t          |           } || |          }|r
|t          |<   |S )a,  Get the instantiated node provider for a given provider config.

    Note that this may be used by private node providers that proxy methods to
    built-in node providers, so we should maintain backwards compatibility.

    Args:
        provider_config: provider section of the autoscaler config.
        cluster_name: cluster name from the autoscaler config.
        use_cache: whether or not to use a cached definition if available. If
            False, the returned object will also not be stored in the cache.

    Returns:
        NodeProvider
    T)	sort_keys)jsondumps_provider_instancesr   )r   r   r   provider_keyrz   new_providers         r   _get_node_providerr      sr    " J$???NL 1\%888"<00)/::L<>>L 9,8L)r   c                  
    i a d S )N)r    r   r   _clear_provider_cacher     s    r   c                 n   | d         dk    rt          j        t                    S t                              | d                   }|(t          d                    | d                              |            }t          |          5 }t          j	        |          }ddd           n# 1 swxY w Y   |S )zRetrieve a node provider.

    This is an INTERNAL API. It is not allowed to call this from any Ray
    package outside the autoscaler.
    r   r   Nr   )
copydeepcopyMINIMAL_EXTERNAL_CONFIG_DEFAULT_CONFIGSr   r   r   openyaml	safe_load)r   load_configpath_to_defaultfdefaultss        r   _get_default_configr     s     v*,,}4555"&&v'>??K!+22?63JKK
 
 	
 "kmmO	o		 %!>!$$% % % % % % % % % % % % % % % Os   	B**B.1B.)T)-r   r   loggingrH   typingr   r   r   ray.autoscaler._private.loaderr   	getLogger__name__loggerr   r   r   r   r   r#   r*   r.   r2   r5   r9   r=   rA   rO   rU   rW   r\   rb   rh   rm   rr   rw   r{   r   _PROVIDER_PRETTY_NAMESr   strr   boolr   r   r   r   r   r   <module>r      s      				          A A A A A A		8	$	$  
    )         " " "
! 
! 
!     ! ! !' ' '      V V VQ Q Q  N N NL L LP P PL L LN N NO O O   ,:     2&4    ;H($$(*,/
 
 %DcN % % % %* KO #s(^36CG   <  
    r   