diff --git a/lib/trento/application/projectors/host_projector.ex b/lib/trento/application/projectors/host_projector.ex index 0104ed5c24..7892b8d585 100644 --- a/lib/trento/application/projectors/host_projector.ex +++ b/lib/trento/application/projectors/host_projector.ex @@ -275,6 +275,17 @@ defmodule Trento.HostProjector do end end + def after_update( + %HostRemovedFromCluster{host_id: host_id}, + _, + %{host: %Trento.HostReadModel{cluster_id: nil}} + ) do + TrentoWeb.Endpoint.broadcast("monitoring:hosts", "host_details_updated", %{ + id: host_id, + cluster_id: nil + }) + end + def after_update( %HostDetailsUpdated{}, _, diff --git a/test/trento/application/projectors/host_projector_test.exs b/test/trento/application/projectors/host_projector_test.exs index b5cd403776..084cd6b632 100644 --- a/test/trento/application/projectors/host_projector_test.exs +++ b/test/trento/application/projectors/host_projector_test.exs @@ -151,6 +151,10 @@ defmodule Trento.HostProjectorTest do projection = Repo.get!(HostReadModel, host_id) assert nil == projection.cluster_id + + assert_broadcast "host_details_updated", + %{id: ^host_id, cluster_id: nil}, + 1000 end test "should not set the cluster_id to nil if a HostRemovedFromCluster event is received and the host is not part of the cluster anymore" do @@ -172,6 +176,8 @@ defmodule Trento.HostProjectorTest do projection = Repo.get!(HostReadModel, host_id) assert cluster_id == projection.cluster_id + + refute_broadcast "host_details_updated", %{id: ^host_id} end test "should update an existing host when HostDetailsUpdated event is received", %{