Skip to content
This repository was archived by the owner on Mar 27, 2023. It is now read-only.

Commit df719a5

Browse files
author
Michel Zimmer
committed
Remove agent id and use machine id instead
1 parent 9c24910 commit df719a5

File tree

18 files changed

+72
-127
lines changed

18 files changed

+72
-127
lines changed

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ LABEL org.opencontainers.image.vendor="neuland – Büro für Informatik GmbH"
1212
LABEL org.opencontainers.image.licenses="Apache-2.0"
1313
LABEL org.opencontainers.image.title="bandwhichd-server"
1414
LABEL org.opencontainers.image.description="bandwhichd server collecting measurements and calculating statistics"
15-
LABEL org.opencontainers.image.version="0.6.0-rc5"
15+
LABEL org.opencontainers.image.version="0.6.0-rc6"
1616
USER guest
1717
ENTRYPOINT ["/opt/java/openjdk/bin/java"]
1818
CMD ["-jar", "/opt/bandwhichd-server.jar"]
1919
EXPOSE 8080
2020
STOPSIGNAL SIGTERM
21-
COPY --from=build --chown=root:root /tmp/bandwhichd-server/target/scala-3.1.3/bandwhichd-server-assembly-0.6.0-rc5.jar /opt/bandwhichd-server.jar
21+
COPY --from=build --chown=root:root /tmp/bandwhichd-server/target/scala-3.1.3/bandwhichd-server-assembly-0.6.0-rc6.jar /opt/bandwhichd-server.jar

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ lazy val root = (project in file("."))
22
.settings(
33
organization := "de.neuland-bfi",
44
name := "bandwhichd-server",
5-
version := "0.6.0-rc5",
5+
version := "0.6.0-rc6",
66
scalaVersion := "3.1.3",
77
Compile / scalaSource := baseDirectory.value / "src" / "main" / "scala",
88
Test / scalaSource := baseDirectory.value / "src" / "test" / "scala",

src/main/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/Message.scala

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ object Message {
2929
case MeasurementMessage(nc: Measurement.NetworkConfiguration) =>
3030
Json.obj(
3131
"type" -> Json.fromString(
32-
"bandwhichd/measurement/network-configuration/v1"
32+
"bandwhichd/measurement/agent-network-configuration/v1"
3333
),
3434
"content" -> Encoder[Measurement.NetworkConfiguration].apply(nc)
3535
)
3636
case MeasurementMessage(nu: Measurement.NetworkUtilization) =>
3737
Json.obj(
3838
"type" -> Json.fromString(
39-
"bandwhichd/measurement/network-utilization/v1"
39+
"bandwhichd/measurement/agent-network-utilization/v1"
4040
),
4141
"content" -> Encoder[Measurement.NetworkUtilization].apply(nu)
4242
)
@@ -46,29 +46,27 @@ object Message {
4646
for {
4747
`type` <- c.get[String]("type")
4848
message <- `type` match
49-
case "bandwhichd/measurement/network-configuration/v1" =>
49+
case "bandwhichd/measurement/agent-network-configuration/v1" =>
5050
c.get[Measurement.NetworkConfiguration]("content")
5151
.map(MeasurementMessage.apply)
52-
case "bandwhichd/measurement/network-utilization/v1" =>
52+
case "bandwhichd/measurement/agent-network-utilization/v1" =>
5353
c.get[Measurement.NetworkUtilization]("content")
5454
.map(MeasurementMessage.apply)
5555
case _ =>
5656
Left(DecodingFailure(s"invalid message type ${`type`}", c.history))
5757
} yield message
5858

5959
given Codec[Measurement.NetworkConfiguration] =
60-
Codec.forProduct6(
61-
"agent_id",
62-
"timestamp",
60+
Codec.forProduct5(
6361
"machine_id",
62+
"timestamp",
6463
"hostname",
6564
"interfaces",
6665
"open_sockets"
6766
)(Measurement.NetworkConfiguration.apply)(nc =>
6867
(
69-
nc.agentId,
70-
nc.timing,
7168
nc.machineId,
69+
nc.timing,
7270
nc.hostname,
7371
nc.interfaces,
7472
nc.openSockets
@@ -77,12 +75,12 @@ object Message {
7775

7876
given Codec[Measurement.NetworkUtilization] =
7977
Codec.forProduct3(
80-
"agent_id",
78+
"machine_id",
8179
"timeframe",
8280
"connections"
8381
)(Measurement.NetworkUtilization.apply)(nu =>
8482
(
85-
nu.agentId,
83+
nu.machineId,
8684
nu.timing,
8785
nu.connections
8886
)
@@ -153,8 +151,6 @@ object Message {
153151
Decoder[A].map(Sent.apply)
154152
///////////////////////
155153

156-
given Encoder[AgentId] = Encoder[UUID].contramap(_.value)
157-
given Decoder[AgentId] = Decoder[UUID].map(AgentId.apply)
158154
given Encoder[BytesCount] = Encoder[String].contramap(_.value.toString)
159155
given Decoder[BytesCount] = Decoder[BigInt].map(BytesCount.apply)
160156
given Encoder[InterfaceName] = Encoder[String].contramap(_.value)

src/main/scala/de/neuland/bandwhichd/server/adapter/out/CassandraMigration.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,13 @@ class CassandraMigration[F[_]: Async](
2828
| date date,
2929
| timestamp timestamp,
3030
| end_timestamp timestamp,
31-
| agent_id uuid,
31+
| machine_id uuid,
3232
| measurement_type ascii,
33-
| network_configuration_machine_id uuid,
3433
| network_configuration_hostname text,
3534
| network_configuration_interfaces frozen<list<frozen<measurement_network_configuration_interface>>>,
3635
| network_configuration_open_sockets frozen<list<frozen<measurement_network_configuration_open_socket>>>,
3736
| network_utilization_connections frozen<list<frozen<measurement_network_utilization_connection>>>,
38-
| primary key ((date), timestamp, agent_id, measurement_type),
37+
| primary key ((date), timestamp, machine_id, measurement_type),
3938
|) with clustering order by (timestamp asc)""".stripMargin
4039
)
4140
.setKeyspace(configuration.measurementsKeyspace)

src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementCassandraCodecs.scala

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,21 @@ import de.neuland.bandwhichd.server.domain.measurement.*
88
import de.neuland.bandwhichd.server.lib.time.Interval
99
import io.circe.*
1010

11+
import java.time.*
1112
import java.time.ZoneOffset.UTC
1213
import java.time.format.DateTimeFormatter.ISO_DATE_TIME
1314
import java.time.format.{DateTimeFormatter, DateTimeFormatterBuilder}
14-
import java.time.*
1515
import java.util.UUID
1616
import scala.util.Try
1717

1818
object MeasurementCassandraCodecs {
1919
given Codec[Measurement[Timing]] =
20-
Codec.forProduct10(
20+
Codec.forProduct9(
2121
"date",
2222
"timestamp",
2323
"end_timestamp",
24-
"agent_id",
24+
"machine_id",
2525
"measurement_type",
26-
"network_configuration_machine_id",
2726
"network_configuration_hostname",
2827
"network_configuration_interfaces",
2928
"network_configuration_open_sockets",
@@ -33,9 +32,8 @@ object MeasurementCassandraCodecs {
3332
_: String,
3433
timestamp: Timing.Timestamp,
3534
endTimestamp: Timing.Timestamp,
36-
agentId: AgentId,
35+
machineId: MachineId,
3736
measurementType: String,
38-
machinedId: MachineId,
3937
hostname: Hostname,
4038
interfaces: Seq[Interface],
4139
openSockets: Seq[OpenSocket],
@@ -44,16 +42,15 @@ object MeasurementCassandraCodecs {
4442
measurementType match
4543
case "network_configuration" =>
4644
Measurement.NetworkConfiguration(
47-
agentId = agentId,
45+
machineId = machineId,
4846
timing = timestamp,
49-
machineId = machinedId,
5047
hostname = hostname,
5148
interfaces = interfaces,
5249
openSockets = openSockets
5350
)
5451
case "network_utilization" =>
5552
Measurement.NetworkUtilization(
56-
agentId = agentId,
53+
machineId = machineId,
5754
timing = Timing.Timeframe(
5855
Interval(
5956
start = timestamp.instant,
@@ -69,9 +66,8 @@ object MeasurementCassandraCodecs {
6966
)
7067
)(_ match
7168
case Measurement.NetworkConfiguration(
72-
agentId,
73-
timing,
7469
machineId,
70+
timing,
7571
hostname,
7672
interfaces,
7773
openSockets
@@ -80,26 +76,24 @@ object MeasurementCassandraCodecs {
8076
LocalDate.ofInstant(timing.value, UTC).toString,
8177
timing,
8278
Timing.Timestamp(Instant.EPOCH),
83-
agentId,
84-
"network_configuration",
8579
machineId,
80+
"network_configuration",
8681
hostname,
8782
interfaces,
8883
openSockets,
8984
Seq.empty[Connection]
9085
)
9186
case Measurement.NetworkUtilization(
92-
agentId,
87+
machineId,
9388
timing,
9489
connections
9590
) =>
9691
(
9792
LocalDate.ofInstant(timing.value.normalizedStart, UTC).toString,
9893
Timing.Timestamp(timing.value.normalizedStart),
9994
Timing.Timestamp(timing.value.normalizedStop),
100-
agentId,
95+
machineId,
10196
"network_utilization",
102-
MachineId(new UUID(0, 0)),
10397
Hostname.fromString("a").get,
10498
Seq.empty[Interface],
10599
Seq.empty[OpenSocket],
@@ -182,8 +176,6 @@ object MeasurementCassandraCodecs {
182176

183177
///////////////////////
184178

185-
given Encoder[AgentId] = Encoder[UUID].contramap(_.value)
186-
given Decoder[AgentId] = Decoder[UUID].map(AgentId.apply)
187179
given Encoder[BytesCount] = Encoder[BigInt].contramap(_.value)
188180
given Decoder[BytesCount] = Decoder[BigInt].map(BytesCount.apply)
189181
given Encoder[InterfaceName] = Encoder[String].contramap(_.value)

src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsCassandraRepository.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.datastax.oss.driver.api.core.cql.{SimpleStatement, Statement}
88
import de.neuland.bandwhichd.server.adapter.out.measurement.MeasurementCassandraCodecs.given
99
import de.neuland.bandwhichd.server.boot.Configuration
1010
import de.neuland.bandwhichd.server.domain.measurement.*
11-
import de.neuland.bandwhichd.server.domain.{AgentId, Interface, MachineId}
11+
import de.neuland.bandwhichd.server.domain.{Interface, MachineId}
1212
import de.neuland.bandwhichd.server.lib.cassandra.CassandraContext
1313
import de.neuland.bandwhichd.server.lib.time.Interval
1414
import fs2.Stream

src/main/scala/de/neuland/bandwhichd/server/domain/AgentId.scala

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/scala/de/neuland/bandwhichd/server/domain/measurement/Measurement.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.comcast.ip4s.Hostname
44
import de.neuland.bandwhichd.server.domain.*
55

66
sealed trait Measurement[+T <: Timing] {
7-
def agentId: AgentId
7+
def machineId: MachineId
88
def timing: T
99
def timestamp: Timing.Timestamp =
1010
timing match
@@ -14,16 +14,15 @@ sealed trait Measurement[+T <: Timing] {
1414

1515
object Measurement {
1616
case class NetworkConfiguration(
17-
agentId: AgentId,
18-
timing: Timing.Timestamp,
1917
machineId: MachineId,
18+
timing: Timing.Timestamp,
2019
hostname: Hostname,
2120
interfaces: Seq[Interface],
2221
openSockets: Seq[OpenSocket]
2322
) extends Measurement[Timing.Timestamp]
2423

2524
case class NetworkUtilization(
26-
agentId: AgentId,
25+
machineId: MachineId,
2726
timing: Timing.Timeframe,
2827
connections: Seq[Connection]
2928
) extends Measurement[Timing.Timeframe]

src/main/scala/de/neuland/bandwhichd/server/domain/stats/Host.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ object MachineIdHost {
4545

4646
case class MonitoredHost(
4747
hostId: HostId.MachineId,
48-
agentIds: Set[AgentId],
4948
hostname: Hostname,
5049
additionalHostnames: Set[Hostname],
5150
interfaces: Set[Interface]

src/main/scala/de/neuland/bandwhichd/server/domain/stats/Stats.scala

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,8 @@ object Stats {
6262
): MonitoredStats =
6363
measurement match
6464
case Measurement.NetworkConfiguration(
65-
agentId,
66-
timing,
6765
machineId,
66+
timing,
6867
hostname,
6968
interfaces,
7069
_
@@ -75,9 +74,6 @@ object Stats {
7574
: Option[Bundle[HostId.MachineId, MonitoredHost, HostId]] =
7675
stats.bundles
7776
.get(hostId)
78-
.orElse {
79-
stats.bundles.values.find(_.host.agentIds.contains(agentId))
80-
}
8177
.orElse {
8278
stats.bundles.values.find(_.host.hostnames.contains(hostname))
8379
}
@@ -87,7 +83,6 @@ object Stats {
8783
Stats.Bundle(
8884
host = MonitoredHost(
8985
hostId = hostId,
90-
agentIds = Set(agentId),
9186
hostname = hostname,
9287
additionalHostnames = Set.empty,
9388
interfaces = interfaces.toSet
@@ -99,7 +94,6 @@ object Stats {
9994
bundle.copy(
10095
host = MonitoredHost(
10196
hostId = hostId,
102-
agentIds = bundle.host.agentIds + agentId,
10397
hostname = hostname,
10498
additionalHostnames = bundle.host.hostnames - hostname,
10599
interfaces = bundle.host.interfaces ++ interfaces
@@ -111,12 +105,14 @@ object Stats {
111105
new Stats(stats.bundles + (hostId -> bundle))
112106

113107
case Measurement.NetworkUtilization(
114-
agentId,
108+
machineId,
115109
timing,
116110
connections
117111
) =>
118-
stats.bundles.values
119-
.find(_.host.agentIds.contains(agentId))
112+
val hostId: HostId.MachineId = HostId(machineId)
113+
114+
stats.bundles
115+
.get(hostId)
120116
.fold(stats) { bundle =>
121117
new Stats(
122118
stats.bundles + (bundle.host.hostId -> bundle.copy(

0 commit comments

Comments
 (0)