diff --git a/lib/livebook_web/live/session_live/k8s_runtime_component.ex b/lib/livebook_web/live/session_live/k8s_runtime_component.ex index 3c279c5de..b342bd262 100644 --- a/lib/livebook_web/live/session_live/k8s_runtime_component.ex +++ b/lib/livebook_web/live/session_live/k8s_runtime_component.ex @@ -536,7 +536,6 @@ defmodule LivebookWeb.SessionLive.K8sRuntimeComponent do def handle_async(:cluster_check, {:ok, results}, socket) do [access_review_result, namespaces_result] = results - context_namespace = socket.assigns.kubeconfig.current_namespace access_review_result = case access_review_result do @@ -549,7 +548,15 @@ defmodule LivebookWeb.SessionLive.K8sRuntimeComponent do case namespaces_result do {:ok, namespaces} -> namespace_options = Enum.map(namespaces, & &1.name) - {:ok, namespace_options, context_namespace || List.first(namespace_options)} + + default_namespace = + if socket.assigns.context == socket.assigns.config_defaults["context"] do + socket.assigns.config_defaults["namespace"] + end + + context_namespace = socket.assigns.kubeconfig.current_namespace + namespace = default_namespace || context_namespace || List.first(namespace_options) + {:ok, namespace_options, namespace} {:error, %{status: 403}} -> # No access to list namespaces, we will show an input instead @@ -768,9 +775,8 @@ defmodule LivebookWeb.SessionLive.K8sRuntimeComponent do pvc_name: config_defaults["pvc_name"], docker_tag: config_defaults["docker_tag"] ) - |> set_context(config_defaults["context"]) - |> set_namespace(config_defaults["namespace"]) |> set_pod_template(config_defaults["pod_template"]) + |> set_context(config_defaults["context"]) end defp build_config(socket) do diff --git a/test/livebook_web/live/session_live_test.exs b/test/livebook_web/live/session_live_test.exs index cc4560302..c5e157475 100644 --- a/test/livebook_web/live/session_live_test.exs +++ b/test/livebook_web/live/session_live_test.exs @@ -1350,6 +1350,9 @@ defmodule LivebookWeb.SessionLiveTest do {:ok, view, _} = live(conn, ~p"/sessions/#{session.id}/settings/runtime") + # We load cluster information async, and then run namespace + # checks async, so we need to await async twice + _ = render_async(view) assert render_async(view) =~ "You can fully customize" assert view @@ -1439,7 +1442,7 @@ defmodule LivebookWeb.SessionLiveTest do # Set a different runtime, so there are no defaults Session.set_runtime(session.pid, Runtime.Standalone.new()) - # Open new runtime configuratino + # Open new runtime configuration {:ok, view, _} = live(conn, ~p"/sessions/#{session.id}/settings/runtime") view