def test_split_address(address): assert client_builder._split_address(address) == ("ray", address) specified_module = f"ray://{address}" assert client_builder._split_address(specified_module) == ("ray", address) specified_other_module = f"module://{address}" assert client_builder._split_address(specified_other_module) == ("module", address)
def test_split_address(address): assert client_builder._split_address(address) == ("ray", address) specified_module = f"ray://{address}" assert client_builder._split_address(specified_module) == ("ray", address) specified_other_module = f"module://{address}" assert client_builder._split_address(specified_other_module) == ("module", address) non_url_compliant_module = f"module_test://{address}" assert client_builder._split_address(non_url_compliant_module) == ( "module_test", address, )
def parse_cluster_info( address: Optional[str] = None, create_cluster_if_needed: bool = False, cookies: Optional[Dict[str, Any]] = None, metadata: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, Any]] = None, ) -> ClusterInfo: if address is None: logger.info( f"No address provided, defaulting to {DEFAULT_DASHBOARD_ADDRESS}.") address = DEFAULT_DASHBOARD_ADDRESS module_string, inner_address = _split_address(address) # If user passes in ray://, raise error. Dashboard submission should # not use a Ray client address. if module_string == "ray": raise ValueError( f'Got an unexpected Ray client address "{address}" while trying ' "to connect to the Ray dashboard. The dashboard SDK requires the " "Ray dashboard server's HTTP(S) address (which should start with " '"http://" or "https://", not "ray://"). If this address ' "wasn't passed explicitly, it may be set in the RAY_ADDRESS " "environment variable.") # If user passes http(s)://, go through normal parsing. if module_string in {"http", "https"}: return get_job_submission_client_cluster_info( inner_address, create_cluster_if_needed=create_cluster_if_needed, cookies=cookies, metadata=metadata, headers=headers, _use_tls=module_string == "https", ) # Try to dynamically import the function to get cluster info. else: try: module = importlib.import_module(module_string) except Exception: raise RuntimeError( f"Module: {module_string} does not exist.\n" f"This module was parsed from Address: {address}") from None assert "get_job_submission_client_cluster_info" in dir(module), ( f"Module: {module_string} does " "not have `get_job_submission_client_cluster_info`.") return module.get_job_submission_client_cluster_info( inner_address, create_cluster_if_needed=create_cluster_if_needed, cookies=cookies, metadata=metadata, headers=headers, )
def parse_cluster_info( address: str, create_cluster_if_needed: bool = False, cookies: Optional[Dict[str, Any]] = None, metadata: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, Any]] = None, ) -> ClusterInfo: module_string, inner_address = _split_address(address.rstrip("/")) # If user passes in a raw HTTP(S) address, just pass it through. if module_string == "http" or module_string == "https": return ClusterInfo(address=address, cookies=cookies, metadata=metadata, headers=headers) # If user passes in a Ray address, convert it to HTTP. elif module_string == "ray": return get_job_submission_client_cluster_info( inner_address, create_cluster_if_needed=create_cluster_if_needed, cookies=cookies, metadata=metadata, headers=headers, ) # Try to dynamically import the function to get cluster info. else: try: module = importlib.import_module(module_string) except Exception: raise RuntimeError( f"Module: {module_string} does not exist.\n" f"This module was parsed from Address: {address}") from None assert "get_job_submission_client_cluster_info" in dir(module), ( f"Module: {module_string} does " "not have `get_job_submission_client_cluster_info`.") return module.get_job_submission_client_cluster_info( inner_address, create_cluster_if_needed=create_cluster_if_needed, cookies=cookies, metadata=metadata, headers=headers, )
def parse_cluster_info( address: str, create_cluster_if_needed: bool = False, cookies: Optional[Dict[str, Any]] = None, metadata: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, Any]] = None, ) -> ClusterInfo: module_string, inner_address = _split_address(address) # If user passes http(s):// or ray://, go through normal parsing. if module_string in {"http", "https", "ray"}: return get_job_submission_client_cluster_info( inner_address, create_cluster_if_needed=create_cluster_if_needed, cookies=cookies, metadata=metadata, headers=headers, _use_tls=module_string == "https", ) # Try to dynamically import the function to get cluster info. else: try: module = importlib.import_module(module_string) except Exception: raise RuntimeError( f"Module: {module_string} does not exist.\n" f"This module was parsed from Address: {address}" ) from None assert "get_job_submission_client_cluster_info" in dir(module), ( f"Module: {module_string} does " "not have `get_job_submission_client_cluster_info`." ) return module.get_job_submission_client_cluster_info( inner_address, create_cluster_if_needed=create_cluster_if_needed, cookies=cookies, metadata=metadata, headers=headers, )