defmodule LivebookWeb.Hub.Teams.DeploymentGroupComponent do use LivebookWeb, :live_component alias LivebookWeb.NotFoundError alias Livebook.Teams.DeploymentGroup @impl true def update(assigns, socket) do deployment_group = assigns.deployment_group secret_name = assigns.params["secret_name"] secret_value = if assigns.params["deployment_group_id"] == deployment_group.id and assigns.live_action == :edit_deployment_group_secret do Enum.find_value(deployment_group.secrets, &(&1.name == secret_name and &1.value)) || raise(NotFoundError, "could not find secret matching #{inspect(secret_name)}") end {:ok, socket |> assign(assigns) |> assign(secret_name: secret_name, secret_value: secret_value)} end @impl true def render(assigns) do ~H"""

{@deployment_group.name}

<%= if @deployment_group.mode == :online do %>
Online
<% else %>
Airgapped
<% end %>
<.link :if={@deployment_group.url} href={@deployment_group.url} class="text-xs font-medium text-blue-600 mt-1" target="_blank" > {DeploymentGroup.url_without_scheme(@deployment_group)}
<.link href={org_url(@hub, "/deployments/groups/#{@deployment_group.id}")} class="text-sm font-medium text-blue-600" target="_blank" > <.remix_icon icon="external-link-line" /> Edit on Teams
<.labeled_text class="grow mt-6 lg:border-l border-gray-200 lg:pl-4" label="App servers"> {@agents_count} <.link patch={~p"/hub/#{@hub.id}/groups/#{@deployment_group.id}/agents/new"} class="pl-2 text-blue-600 font-medium" > + Deploy <.labeled_text class="grow mt-6 lg:border-l border-gray-200 lg:pl-4" label="Apps deployed"> {@app_deployments_count} <.link patch={~p"/hub/#{@hub.id}/groups/#{@deployment_group.id}/apps/new"} class="pl-2 text-blue-600 font-medium" > + Add new <.labeled_text class="grow mt-6 lg:border-l border-gray-200 lg:pl-4" label="Environment variables" > {@environment_variables_count} <.link href={ org_url(@hub, "/deployments/groups/#{@deployment_group.id}/environment-variables") } target="_blank" class="pl-2 text-blue-600 font-medium" > + Manage
<.remix_icon data-toggle icon="arrow-right-s-line" /> <.remix_icon data-toggle icon="arrow-down-s-line hidden" /> Additional secrets
<%= if @params["deployment_group_id"] == @deployment_group.id do %> <.modal :if={@live_action in [:new_deployment_group_secret, :edit_deployment_group_secret]} id="deployment-group-secrets-modal" show width="medium" patch={~p"/hub/#{@hub.id}"} > <.live_component module={LivebookWeb.Hub.SecretFormComponent} id="deployment-group-secrets" hub={@hub} deployment_group_id={@deployment_group.id} secret_name={@secret_name} secret_value={@secret_value} return_to={~p"/hub/#{@hub.id}"} /> <.modal :if={@live_action == :new_deployment_group_agent} id="deployment-group-agent-modal" show width="big" patch={~p"/hub/#{@hub.id}"} > <.live_component module={LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent} id="deployment-group-agent-instance" hub={@hub} deployment_group={@deployment_group} return_to={nil} /> <.modal :if={@live_action == :new_deployment_group_app} id="deployment-group-app-modal" show width="medium" patch={~p"/hub/#{@hub.id}"} >

New app deployment

To deploy a new app, open up a notebook of your choice and click on the <.remix_icon icon="rocket-line" /> icon on the sidebar. Follow the steps there to deploy with Livebook Teams.

<% end %>
""" end defp org_url(hub, path) do Livebook.Config.teams_url() <> "/orgs/#{hub.org_id}" <> path end end