@@ -104,6 +104,14 @@ defmodule Livebook.Hubs.TeamClient do
104104 GenServer . call ( registry_name ( id ) , :get_app_deployments )
105105 end
106106
107+ @ doc """
108+ Returns an app deployment from given data.
109+ """
110+ @ spec get_app_deployment ( String . t ( ) , String . t ( ) , String . t ( ) ) :: Teams.AppDeployment . t ( ) | nil
111+ def get_app_deployment ( id , slug , deployment_group_id ) do
112+ GenServer . call ( registry_name ( id ) , { :get_app_deployment , slug , deployment_group_id } )
113+ end
114+
107115 @ doc """
108116 Returns a list of cached app deployments that should be deployed on
109117 this instance.
@@ -279,6 +287,13 @@ defmodule Livebook.Hubs.TeamClient do
279287 { :reply , state . app_deployments , state }
280288 end
281289
290+ def handle_call ( { :get_app_deployment , slug , deployment_group_id } , _caller , state ) do
291+ case fetch_app_deployment_from_slug ( slug , deployment_group_id , state ) do
292+ { :ok , app_deployment } -> { :reply , app_deployment , state }
293+ state -> { :reply , nil , state }
294+ end
295+ end
296+
282297 def handle_call ( :get_agent_app_deployments , _caller , state ) do
283298 if state . deployment_group_id do
284299 app_deployments =
@@ -341,7 +356,8 @@ defmodule Livebook.Hubs.TeamClient do
341356 def handle_call ( { :check_app_access , groups , slug } , _caller , state ) do
342357 if id = state . deployment_group_id do
343358 with { :ok , deployment_group } <- fetch_deployment_group ( id , state ) ,
344- { :ok , app_deployment } <- fetch_app_deployment_from_slug ( slug , state ) do
359+ { :ok , app_deployment } <-
360+ fetch_app_deployment_from_slug ( slug , deployment_group . id , state ) do
345361 app_access? =
346362 not deployment_group . teams_auth or
347363 not deployment_group . groups_auth or
@@ -568,7 +584,8 @@ defmodule Livebook.Hubs.TeamClient do
568584 groups_auth: deployment_group . groups_auth ,
569585 deploy_auth: deployment_group . deploy_auth ,
570586 authorization_groups: authorization_groups ,
571- deployment_users: deployment_users
587+ deployment_users: deployment_users ,
588+ deployed_apps_counter: deployment_group . deployed_apps_counter
572589 }
573590 end
574591
@@ -587,7 +604,8 @@ defmodule Livebook.Hubs.TeamClient do
587604 url: nullify ( deployment_group_created . url ) ,
588605 teams_auth: deployment_group_created . teams_auth ,
589606 authorization_groups: [ ] ,
590- deployment_users: [ ]
607+ deployment_users: [ ] ,
608+ deployed_apps_counter: 0
591609 }
592610 end
593611
@@ -966,6 +984,15 @@ defmodule Livebook.Hubs.TeamClient do
966984 end
967985 end
968986
987+ defp handle_event ( :deployment_status_updated , % { id: id , deployed_apps_counter: counter } , state ) do
988+ with { :ok , deployment_group } <- fetch_deployment_group ( id , state ) do
989+ deployment_group = % { deployment_group | deployed_apps_counter: counter }
990+
991+ Teams.Broadcasts . deployment_group_updated ( deployment_group )
992+ put_deployment_group ( state , deployment_group )
993+ end
994+ end
995+
969996 defp dispatch_secrets ( state , % { secrets: secrets } ) do
970997 decrypted_secrets = Enum . map ( secrets , & build_secret ( state , & 1 ) )
971998
@@ -1167,8 +1194,13 @@ defmodule Livebook.Hubs.TeamClient do
11671194 defp fetch_app_deployment ( id , state ) ,
11681195 do: fetch_entry ( state . app_deployments , & ( & 1 . id == id ) , state )
11691196
1170- defp fetch_app_deployment_from_slug ( slug , state ) ,
1171- do: fetch_entry ( state . app_deployments , & ( & 1 . slug == slug ) , state )
1197+ defp fetch_app_deployment_from_slug ( slug , deployment_group_id , state ) do
1198+ fetch_entry (
1199+ state . app_deployments ,
1200+ & ( & 1 . slug == slug && & 1 . deployment_group_id == deployment_group_id ) ,
1201+ state
1202+ )
1203+ end
11721204
11731205 defp fetch_app_folder ( id , state ) , do: fetch_entry ( state . app_folders , & ( & 1 . id == id ) , state )
11741206
0 commit comments