Skip to content

Commit

Permalink
Merge branch 'main' into distributed-deployment-orchestrator
Browse files Browse the repository at this point in the history
  • Loading branch information
joshk committed Feb 1, 2025
2 parents bcbc222 + a8537b1 commit 4db1922
Show file tree
Hide file tree
Showing 7 changed files with 163 additions and 81 deletions.
130 changes: 68 additions & 62 deletions assets/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 9 additions & 5 deletions lib/nerves_hub/devices.ex
Original file line number Diff line number Diff line change
Expand Up @@ -778,7 +778,7 @@ defmodule NervesHub.Devices do
|> Ecto.Changeset.put_change(:deployment_id, deployment.id)
|> Repo.update!()

_ = broadcast(device, "devices/updated")
_ = broadcast(device, "devices/deployment-updated", %{deployment_id: deployment.id})

Map.put(device, :deployment, deployment)
end
Expand All @@ -791,7 +791,7 @@ defmodule NervesHub.Devices do
|> Ecto.Changeset.put_change(:deployment_id, nil)
|> Repo.update!()

_ = broadcast(device, "devices/updated")
_ = broadcast(device, "devices/deployment-cleared")

Map.put(device, :deployment, nil)
end
Expand Down Expand Up @@ -1230,11 +1230,15 @@ defmodule NervesHub.Devices do
end
end

defp broadcast(%Device{id: id}, event) do
defp broadcast(device, event), do: broadcast(device, event, %{})

defp broadcast(%Device{id: id}, event, payload) do
topic = "device:#{id}"

Phoenix.PubSub.broadcast(
NervesHub.PubSub,
"device:#{id}",
%Phoenix.Socket.Broadcast{topic: "device:#{id}", event: event}
topic,
%Phoenix.Socket.Broadcast{topic: topic, event: event, payload: payload}
)
end

Expand Down
26 changes: 19 additions & 7 deletions lib/nerves_hub_web/channels/device_channel.ex
Original file line number Diff line number Diff line change
Expand Up @@ -194,12 +194,22 @@ defmodule NervesHubWeb.DeviceChannel do
{:noreply, socket}
end

@decorate with_span("Channels.DeviceChannel.handle_info:clear-deployment")
@decorate with_span("Channels.DeviceChannel.handle_info:deployment-cleared")
def handle_info(
%Broadcast{event: "devices/clear-deployment"},
%Broadcast{event: "devices/deployment-cleared"},
%{assigns: %{device: device}} = socket
) do
device = %{device | deployment_id: nil, deployment: nil}
device = %{device | deployment_id: nil}

{:noreply, update_device(socket, device)}
end

@decorate with_span("Channels.DeviceChannel.handle_info:deployment-updated")
def handle_info(
%Broadcast{event: "devices/deployment-updated", payload: %{deployment_id: deployment_id}},
%{assigns: %{device: device}} = socket
) do
device = %{device | deployment_id: deployment_id}

{:noreply, update_device(socket, device)}
end
Expand Down Expand Up @@ -411,15 +421,19 @@ defmodule NervesHubWeb.DeviceChannel do
:ok
end

defp subscribe(topic) do
defp subscribe(topic) when not is_nil(topic) do
_ = Phoenix.PubSub.subscribe(NervesHub.PubSub, topic)
:ok
end

defp unsubscribe(topic) do
defp subscribe(nil), do: :ok

defp unsubscribe(topic) when not is_nil(topic) do
Phoenix.PubSub.unsubscribe(NervesHub.PubSub, topic)
end

defp unsubscribe(nil), do: :ok

defp device_internal_broadcast!(socket, device, event, payload) do
topic = "device:#{device.identifier}:internal"
socket.endpoint.broadcast_from!(self(), topic, event, payload)
Expand Down Expand Up @@ -495,8 +509,6 @@ defmodule NervesHubWeb.DeviceChannel do
defp deployment_channel(device) do
if device.deployment_id do
"deployment:#{device.deployment_id}"
else
"deployment:none"
end
end

Expand Down
Loading

0 comments on commit 4db1922

Please sign in to comment.