Skip to content

Commit be7c697

Browse files
authored
Merge pull request #17 from jaronoff97/update-opamp-protos
update to new opamp version
2 parents 32e7fd6 + f3972a7 commit be7c697

File tree

2 files changed

+44
-11
lines changed

2 files changed

+44
-11
lines changed

lib/tails_web/protobufs/opamp.pb.ex

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ defmodule Opamp.Proto.AgentToServer do
106106

107107
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
108108

109-
field(:instance_uid, 1, type: :string, json_name: "instanceUid")
109+
field(:instance_uid, 1, type: :bytes, json_name: "instanceUid")
110110
field(:sequence_num, 2, type: :uint64, json_name: "sequenceNum")
111111
field(:agent_description, 3, type: Opamp.Proto.AgentDescription, json_name: "agentDescription")
112112
field(:capabilities, 4, type: :uint64)
@@ -126,6 +126,13 @@ defmodule Opamp.Proto.AgentToServer do
126126
type: Opamp.Proto.ConnectionSettingsRequest,
127127
json_name: "connectionSettingsRequest"
128128
)
129+
130+
field(:custom_capabilities, 12,
131+
type: Opamp.Proto.CustomCapabilities,
132+
json_name: "customCapabilities"
133+
)
134+
135+
field(:custom_message, 13, type: Opamp.Proto.CustomMessage, json_name: "customMessage")
129136
end
130137

131138
defmodule Opamp.Proto.AgentDisconnect do
@@ -166,7 +173,7 @@ defmodule Opamp.Proto.ServerToAgent do
166173

167174
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
168175

169-
field(:instance_uid, 1, type: :string, json_name: "instanceUid")
176+
field(:instance_uid, 1, type: :bytes, json_name: "instanceUid")
170177
field(:error_response, 2, type: Opamp.Proto.ServerErrorResponse, json_name: "errorResponse")
171178
field(:remote_config, 3, type: Opamp.Proto.AgentRemoteConfig, json_name: "remoteConfig")
172179

@@ -189,6 +196,13 @@ defmodule Opamp.Proto.ServerToAgent do
189196
)
190197

191198
field(:command, 9, type: Opamp.Proto.ServerToAgentCommand)
199+
200+
field(:custom_capabilities, 10,
201+
type: Opamp.Proto.CustomCapabilities,
202+
json_name: "customCapabilities"
203+
)
204+
205+
field(:custom_message, 11, type: Opamp.Proto.CustomMessage, json_name: "customMessage")
192206
end
193207

194208
defmodule Opamp.Proto.OpAMPConnectionSettings do
@@ -471,7 +485,7 @@ defmodule Opamp.Proto.AgentIdentification do
471485

472486
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
473487

474-
field(:new_instance_uid, 1, type: :string, json_name: "newInstanceUid")
488+
field(:new_instance_uid, 1, type: :bytes, json_name: "newInstanceUid")
475489
end
476490

477491
defmodule Opamp.Proto.AgentRemoteConfig do
@@ -513,3 +527,21 @@ defmodule Opamp.Proto.AgentConfigFile do
513527
field(:body, 1, type: :bytes)
514528
field(:content_type, 2, type: :string, json_name: "contentType")
515529
end
530+
531+
defmodule Opamp.Proto.CustomCapabilities do
532+
@moduledoc false
533+
534+
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
535+
536+
field(:capabilities, 1, repeated: true, type: :string)
537+
end
538+
539+
defmodule Opamp.Proto.CustomMessage do
540+
@moduledoc false
541+
542+
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
543+
544+
field(:capability, 1, type: :string)
545+
field(:type, 2, type: :string)
546+
field(:data, 3, type: :bytes)
547+
end

lib/tails_web/serializer/opampserializer.ex

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,34 +94,35 @@ defmodule TailsWeb.OpAMPSerializer do
9494
data::binary
9595
>>) do
9696
proto = Opamp.Proto.AgentToServer.decode(data)
97+
instance_uuid = UUID.binary_to_string!(proto.instance_uid)
9798
# IO.puts("-----------------------")
9899
# IO.puts("is a memember?")
99100
# IO.inspect(Agent.get(:connections, &MapSet.member?(&1, proto.instance_uid)))
100101
# IO.inspect(Agent.get(:connections, &MapSet.to_list/1))
101102
# IO.puts("-----------------------")
102103

103-
case Agent.get(:connections, &MapSet.member?(&1, proto.instance_uid)) do
104-
false -> respond_join(proto)
105-
true -> respond_heartbeat(proto)
104+
case Agent.get(:connections, &MapSet.member?(&1, instance_uuid)) do
105+
false -> respond_join(proto, instance_uuid)
106+
true -> respond_heartbeat(proto, instance_uuid)
106107
end
107108
end
108109

109-
defp respond_join(proto) do
110-
Agent.update(:connections, &MapSet.put(&1, proto.instance_uid))
110+
defp respond_join(proto, instance_uuid) do
111+
Agent.update(:connections, &MapSet.put(&1, instance_uuid))
111112
IO.puts("JOINING")
112113

113114
%Message{
114-
topic: "agents:" <> proto.instance_uid,
115+
topic: "agents:" <> instance_uuid,
115116
event: "phx_join",
116117
payload: proto,
117118
ref: proto.sequence_num,
118119
join_ref: "join"
119120
}
120121
end
121122

122-
defp respond_heartbeat(proto) when proto.sequence_num > 0 do
123+
defp respond_heartbeat(proto, instance_uuid) when proto.sequence_num > 0 do
123124
%Message{
124-
topic: "agents:" <> proto.instance_uid,
125+
topic: "agents:" <> instance_uuid,
125126
event: "heartbeat",
126127
payload: proto,
127128
ref: proto.sequence_num,

0 commit comments

Comments
 (0)