dstack
dstack copied to clipboard
[Bug]: The 'get_offers_by_requirements' function checks all backends for offers, but doesn't use the backend filter.
dstack version
0.16.1
Python version
3.11.8
Host OS
Arch Linux
Host Arch
x86_64
What happened?
There are two bugs when I run dstack pool add -b cudo
for example.
- [ ] I select the Cudo provider, but the request also goes to the DataCrunch provider.
- [ ] The server shows a large stack trace of the network exception. We need to handle network exceptions.
CLI logs
No response
Server logs
The admin token is 31c3a0bb-268e-4129-97f0-f9dd143eaeed
The dstack server (no version) is running at http://127.0.0.1:3000
ERROR: Exception in ASGI application
+ Exception Group Traceback (most recent call last):
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
| yield
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 190, in __call__
| async with anyio.create_task_group() as task_group:
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 678, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 412, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
| await super().__call__(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
| raise exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
| await self.app(scope, receive, _send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
| with collapse_excgroups():
| File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
| self.gen.throw(typ, value, traceback)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
| raise exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/app.py", line 180, in check_client_version
| return await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
| raise app_exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
| with collapse_excgroups():
| File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
| self.gen.throw(typ, value, traceback)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
| raise exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/app.py", line 160, in log_request
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
| raise app_exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
| raise exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| await app(scope, receive, sender)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 758, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 778, in app
| await route.handle(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 299, in handle
| await self.app(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 79, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
| raise exc
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| await app(scope, receive, sender)
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 74, in app
| response = await func(request)
| ^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
| raw_response = await run_endpoint_function(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
| return await dependant.call(**values)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/routers/runs.py", line 136, in get_offers
| offers = await runs.get_create_instance_offers(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/runs.py", line 413, in get_create_instance_offers
| offers = await get_offers_by_requirements(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/runs.py", line 242, in get_offers_by_requirements
| backends: List[Backend] = await backends_services.get_project_backends(project=project)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/backends/__init__.py", line 263, in get_project_backends
| backends_with_models = await get_project_backends_with_models(project)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/backends/__init__.py", line 249, in get_project_backends_with_models
| backend = await run_async(configurator.get_backend, backend_model)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/utils/common.py", line 13, in run_async
| return await asyncio.get_running_loop().run_in_executor(None, func_with_args)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
| result = self.fn(*self.args, **self.kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/backends/configurators/datacrunch.py", line 68, in get_backend
| return DataCrunchBackend(config=config)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/core/backends/datacrunch/__init__.py", line 12, in __init__
| self._compute = DataCrunchCompute(self.config)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/core/backends/datacrunch/compute.py", line 29, in __init__
| self.api_client = DataCrunchAPIClient(config.creds.client_id, config.creds.client_secret)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/core/backends/datacrunch/api_client.py", line 14, in __init__
| self.client = DataCrunchClient(client_id, client_secret)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/datacrunch/datacrunch.py", line 37, in __init__
| self._http_client: HTTPClient = HTTPClient(
| ^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/datacrunch/http_client/http_client.py", line 33, in __init__
| self._auth_service.authenticate()
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/datacrunch/authentication/authentication.py", line 42, in authenticate
| response = requests.post(
| ^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/api.py", line 115, in post
| return request("post", url, data=data, json=json, **kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/api.py", line 59, in request
| return session.request(method=method, url=url, **kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
| resp = self.send(prep, **send_kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
| r = adapter.send(request, **kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/adapters.py", line 519, in send
| raise ConnectionError(e, request=request)
| requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.datacrunch.io', port=443): Max retries exceeded with url: /v1/oauth2/token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x72355d702610>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
+------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 412, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
with collapse_excgroups():
File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
self.gen.throw(typ, value, traceback)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
raise exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/app.py", line 180, in check_client_version
return await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
raise app_exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
with collapse_excgroups():
File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
self.gen.throw(typ, value, traceback)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
raise exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/app.py", line 160, in log_request
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
raise app_exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
raise exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
await app(scope, receive, sender)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 758, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 778, in app
await route.handle(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 299, in handle
await self.app(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 79, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
raise exc
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
await app(scope, receive, sender)
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/starlette/routing.py", line 74, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/routers/runs.py", line 136, in get_offers
offers = await runs.get_create_instance_offers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/runs.py", line 413, in get_create_instance_offers
offers = await get_offers_by_requirements(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/runs.py", line 242, in get_offers_by_requirements
backends: List[Backend] = await backends_services.get_project_backends(project=project)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/backends/__init__.py", line 263, in get_project_backends
backends_with_models = await get_project_backends_with_models(project)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/backends/__init__.py", line 249, in get_project_backends_with_models
backend = await run_async(configurator.get_backend, backend_model)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/utils/common.py", line 13, in run_async
return await asyncio.get_running_loop().run_in_executor(None, func_with_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/server/services/backends/configurators/datacrunch.py", line 68, in get_backend
return DataCrunchBackend(config=config)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/core/backends/datacrunch/__init__.py", line 12, in __init__
self._compute = DataCrunchCompute(self.config)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/core/backends/datacrunch/compute.py", line 29, in __init__
self.api_client = DataCrunchAPIClient(config.creds.client_id, config.creds.client_secret)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/dstack/_internal/core/backends/datacrunch/api_client.py", line 14, in __init__
self.client = DataCrunchClient(client_id, client_secret)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/datacrunch/datacrunch.py", line 37, in __init__
self._http_client: HTTPClient = HTTPClient(
^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/datacrunch/http_client/http_client.py", line 33, in __init__
self._auth_service.authenticate()
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/datacrunch/authentication/authentication.py", line 42, in authenticate
response = requests.post(
^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/thebits/dstack/dstack/.direnv/python-3.11/lib/python3.11/site-packages/requests/adapters.py", line 519, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.datacrunch.io', port=443): Max retries exceeded with url: /v1/oauth2/token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x72355d702610>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
### Runner logs
_No response_
### Additional Information
_No response_