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={Livebook.Config.teams_url() <> "/orgs/#{@hub.org_id}/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="Authentication"> <%= provider_name(@deployment_group.zta_provider) %>
<.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 provider_name(:livebook_teams), do: "Livebook Teams" defp provider_name(_), do: "None" end