Skip to content

Commit

Permalink
Hide local backend from the UI (#644)
Browse files Browse the repository at this point in the history
  • Loading branch information
r4victor authored Aug 15, 2023
1 parent 2e5b093 commit a079e9f
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 26 deletions.
3 changes: 2 additions & 1 deletion cli/dstack/_internal/cli/commands/start/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ def _command(self, args: Namespace):
os.environ["DSTACK_HUB_LOG_LEVEL"] = args.log_level
if args.token:
os.environ["DSTACK_HUB_ADMIN_TOKEN"] = args.token
uvicorn_log_level = os.getenv("DSTACK_HUB_UVICORN_LOG_LEVEL", "error")
uvicorn.run(
"dstack._internal.hub.main:app",
host=args.host,
port=args.port,
reload=version.__version__ is None,
log_level="info" if version.__version__ is None else "error",
log_level=uvicorn_log_level,
)

def register(self):
Expand Down
8 changes: 4 additions & 4 deletions cli/dstack/_internal/hub/background/tasks/resubmit_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@ async def resubmit_jobs():

async def _resubmit_projects_jobs(projects: List[Project]):
for project in projects:
logger.info("Resubmitting jobs for %s project", project.name)
logger.debug("Resubmitting jobs for %s project", project.name)
backends = await get_backends(project)
for db_backend, backend in backends:
logger.info("Resubmitting jobs for %s backend", db_backend.name)
logger.debug("Resubmitting jobs for %s backend", db_backend.name)
try:
await run_async(_resubmit_backend_jobs, backend)
except google.api_core.exceptions.RetryError as e:
logger.warning(
"Error when resubmitting jobs for %s backend: %s", db_backend.name, e.message
)
logger.info("Finished resubmitting jobs for %s backend", db_backend.name)
logger.info("Finished resubmitting jobs for %s project", project.name)
logger.debug("Finished resubmitting jobs for %s backend", db_backend.name)
logger.debug("Finished resubmitting jobs for %s project", project.name)


def _resubmit_backend_jobs(backend: Backend):
Expand Down
35 changes: 20 additions & 15 deletions cli/dstack/_internal/hub/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
tags,
users,
)
from dstack._internal.hub.schemas import LocalBackendConfig
from dstack._internal.hub.utils.logging import configure_logger
from dstack._internal.hub.utils.ssh import generate_hub_ssh_key_pair
from dstack._internal.utils import logging
Expand All @@ -46,11 +45,20 @@ async def lifespan(app: FastAPI):
admin_user = await update_admin_user()
await create_default_project(admin_user)
scheduler = start_background_tasks()
url = f"http://{os.getenv('DSTACK_HUB_HOST')}:{os.getenv('DSTACK_HUB_PORT')}"
url_with_token = f"{url}?token={admin_user.token}"
create_default_project_config(url, admin_user.token)
base_url = f"http://{os.getenv('DSTACK_HUB_HOST')}:{os.getenv('DSTACK_HUB_PORT')}"
url = f"{base_url}?token={admin_user.token}"
create_default_project_config(base_url, admin_user.token)
generate_hub_ssh_key_pair()
print(f"The server is available at {url_with_token}")
print(f"\nThe server is available at {url}")
add_backend_url = (
f"{base_url}/projects/{DEFAULT_PROJECT_NAME}/backends/add?token={admin_user.token}"
)
print(
"\nTo start using dstack:\n"
f"\n 1. Configure one or more clouds at {add_backend_url}."
"\n 2. Initialize a repo with `dstack init`."
"\n 3. Define and run a dev enviroment, a task, or a service. For details, see https://dstack.ai/docs/.\n"
)
yield
scheduler.shutdown()

Expand Down Expand Up @@ -107,17 +115,14 @@ async def update_admin_user() -> User:
return admin_user


async def create_default_project(user: User):
async def create_default_project(user: User) -> bool:
default_project = await ProjectManager.get(DEFAULT_PROJECT_NAME)
if default_project is None:
default_project = await ProjectManager.create(
user=user, project_name=DEFAULT_PROJECT_NAME, members=[]
)
backend = await ProjectManager.get_backend(project=default_project, backend_name="local")
if backend is None:
backend = await ProjectManager.create_backend(
project=default_project, backend_config=LocalBackendConfig()
)
if default_project is not None:
return False
default_project = await ProjectManager.create(
user=user, project_name=DEFAULT_PROJECT_NAME, members=[]
)
return True


def create_default_project_config(url: str, token: str):
Expand Down
4 changes: 0 additions & 4 deletions cli/dstack/_internal/hub/services/backends/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,6 @@ def local_backend_available() -> bool:
return docker_available


if local_backend_available():
configurators_classes.append(LocalConfigurator)


backend_type_to_configurator_class_map = {c.NAME: c for c in configurators_classes}


Expand Down
3 changes: 1 addition & 2 deletions hub/src/pages/Project/Backends/Form/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ export interface IProps {

export enum BackendTypesEnum {
AWS = 'aws',
GCP = 'gcp',
AZURE = 'azure',
GCP = 'gcp',
LAMBDA = 'lambda',
LOCAL = 'local',
}

export type TBackendOption = { label: string; value: TBackendType; description: string; disabled?: boolean };

0 comments on commit a079e9f

Please sign in to comment.