Loading src/automation/src/main/java/eu/teraflow/automation/Serializer.java +206 −8 Original line number Diff line number Diff line Loading @@ -40,17 +40,25 @@ import eu.teraflow.automation.context.model.ConfigRuleTypeAcl; import eu.teraflow.automation.context.model.ConfigRuleTypeCustom; import eu.teraflow.automation.context.model.Device; import eu.teraflow.automation.context.model.DeviceConfig; import eu.teraflow.automation.context.model.DeviceDriverEnum; import eu.teraflow.automation.context.model.DeviceEvent; import eu.teraflow.automation.context.model.DeviceOperationalStatus; import eu.teraflow.automation.context.model.EndPoint; import eu.teraflow.automation.context.model.EndPointId; import eu.teraflow.automation.context.model.Event; import eu.teraflow.automation.context.model.EventTypeEnum; import eu.teraflow.automation.context.model.GpsPosition; import eu.teraflow.automation.context.model.Location; import eu.teraflow.automation.context.model.LocationTypeGpsPosition; import eu.teraflow.automation.context.model.LocationTypeRegion; import eu.teraflow.automation.context.model.TopologyId; import eu.teraflow.automation.kpi_sample_types.model.KpiSampleType; import eu.teraflow.automation.model.DeviceRole; import eu.teraflow.automation.model.DeviceRoleId; import eu.teraflow.automation.model.DeviceRoleType; import java.util.stream.Collectors; import javax.inject.Singleton; import kpi_sample_types.KpiSampleTypes; @Singleton public class Serializer { Loading Loading @@ -691,26 +699,216 @@ public class Serializer { } } public KpiSampleTypes.KpiSampleType serialize(KpiSampleType kpiSampleType) { switch (kpiSampleType) { case PACKETS_TRANSMITTED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_PACKETS_TRANSMITTED; case PACKETS_RECEIVED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED; case BYTES_TRANSMITTED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_BYTES_TRANSMITTED; case BYTES_RECEIVED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_BYTES_RECEIVED; case UNKNOWN: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN; default: return KpiSampleTypes.KpiSampleType.UNRECOGNIZED; } } public KpiSampleType deserialize(KpiSampleTypes.KpiSampleType serializedKpiSampleType) { switch (serializedKpiSampleType) { case KPISAMPLETYPE_PACKETS_TRANSMITTED: return KpiSampleType.PACKETS_TRANSMITTED; case KPISAMPLETYPE_PACKETS_RECEIVED: return KpiSampleType.PACKETS_RECEIVED; case KPISAMPLETYPE_BYTES_TRANSMITTED: return KpiSampleType.BYTES_TRANSMITTED; case KPISAMPLETYPE_BYTES_RECEIVED: return KpiSampleType.BYTES_RECEIVED; case KPISAMPLETYPE_UNKNOWN: default: return KpiSampleType.UNKNOWN; } } public ContextOuterClass.Location serialize(Location location) { final var builder = ContextOuterClass.Location.newBuilder(); final var locationType = location.getLocationType(); final var locationTypeSpecificType = locationType.getLocationType(); if (locationTypeSpecificType instanceof GpsPosition) { final var latitude = ((GpsPosition) locationTypeSpecificType).getLatitude(); final var longitude = ((GpsPosition) locationTypeSpecificType).getLongitude(); final var serializedGpsPosition = ContextOuterClass.GPS_Position.newBuilder() .setLatitude(latitude) .setLongitude(longitude) .build(); builder.setGpsPosition(serializedGpsPosition); } if (locationTypeSpecificType instanceof String) { final var region = ((String) locationTypeSpecificType); builder.setRegion(region); } return builder.build(); } public Location deserialize(ContextOuterClass.Location serializedLocation) { final var typeOfLocation = serializedLocation.getLocationCase(); switch (typeOfLocation) { case REGION: final var region = serializedLocation.getRegion(); final var locationTypeRegion = new LocationTypeRegion(region); return new Location(locationTypeRegion); case GPS_POSITION: final var serializedGpsPosition = serializedLocation.getGpsPosition(); final var latitude = serializedGpsPosition.getLatitude(); final var longitude = serializedGpsPosition.getLongitude(); final var gpsPosition = new GpsPosition(latitude, longitude); final var locationTypeGpsPosition = new LocationTypeGpsPosition(gpsPosition); return new Location(locationTypeGpsPosition); default: case LOCATION_NOT_SET: throw new IllegalStateException("Location value not set"); } } public ContextOuterClass.DeviceDriverEnum serialize(DeviceDriverEnum deviceDriverEnum) { switch (deviceDriverEnum) { case OPENCONFIG: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_OPENCONFIG; case TRANSPORT_API: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_TRANSPORT_API; case P4: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_P4; case IETF_NETWORK_TOPOLOGY: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_NETWORK_TOPOLOGY; case ONF_TR_352: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352; case UNDEFINED: default: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_UNDEFINED; } } public DeviceDriverEnum deserialize( ContextOuterClass.DeviceDriverEnum serializedDeviceDriverEnum) { switch (serializedDeviceDriverEnum) { case DEVICEDRIVER_OPENCONFIG: return DeviceDriverEnum.OPENCONFIG; case DEVICEDRIVER_TRANSPORT_API: return DeviceDriverEnum.TRANSPORT_API; case DEVICEDRIVER_P4: return DeviceDriverEnum.P4; case DEVICEDRIVER_IETF_NETWORK_TOPOLOGY: return DeviceDriverEnum.IETF_NETWORK_TOPOLOGY; case DEVICEDRIVER_ONF_TR_352: return DeviceDriverEnum.ONF_TR_352; case DEVICEDRIVER_UNDEFINED: case UNRECOGNIZED: default: return DeviceDriverEnum.UNDEFINED; } } public ContextOuterClass.EndPoint serialize(EndPoint endPoint) { final var builder = ContextOuterClass.EndPoint.newBuilder(); final var endPointId = endPoint.getEndPointId(); final var endPointType = endPoint.getEndPointType(); final var kpiSampleTypes = endPoint.getKpiSampleTypes(); final var endPointLocation = endPoint.getEndPointLocation(); final var serializedEndPointId = serialize(endPointId); final var serializedKpiSampleTypes = kpiSampleTypes.stream().map(this::serialize).collect(Collectors.toList()); final var serializedEndPointLocation = serialize(endPointLocation); builder.setEndpointId(serializedEndPointId); builder.setEndpointType(endPointType); builder.addAllKpiSampleTypes(serializedKpiSampleTypes); builder.setEndpointLocation(serializedEndPointLocation); return builder.build(); } public EndPoint deserialize(ContextOuterClass.EndPoint serializedEndPoint) { final var serializedEndPointId = serializedEndPoint.getEndpointId(); final var endPointType = serializedEndPoint.getEndpointType(); final var serializedKpiSampleTypes = serializedEndPoint.getKpiSampleTypesList(); final var serializedEndPointLocation = serializedEndPoint.getEndpointLocation(); final var endPointId = deserialize(serializedEndPointId); final var kpiSampleTypes = serializedKpiSampleTypes.stream().map(this::deserialize).collect(Collectors.toList()); final var endPointLocation = deserialize(serializedEndPointLocation); return new EndPoint(endPointId, endPointType, kpiSampleTypes, endPointLocation); } public ContextOuterClass.Device serialize(Device device) { final var builder = ContextOuterClass.Device.newBuilder(); final var deviceIdUuid = serializeUuid(device.getDeviceId()); final var deviceId = DeviceId.newBuilder().setDeviceUuid(deviceIdUuid); final var deviceType = device.getDeviceType(); final var deviceConfig = device.getDeviceConfig(); final var deviceOperationalStatus = device.getDeviceOperationalStatus(); final var deviceDrivers = device.getDeviceDrivers(); final var deviceEndPoints = device.getEndPoints(); final var serializedDeviceConfig = serialize(deviceConfig); final var serializedDeviceOperationalStatus = serialize(deviceOperationalStatus); final var serializedDeviceDrivers = deviceDrivers.stream().map(this::serialize).collect(Collectors.toList()); final var serializedDeviceEndPoints = deviceEndPoints.stream().map(this::serialize).collect(Collectors.toList()); builder.setDeviceId(deviceId); builder.setDeviceType(device.getDeviceType()); builder.setDeviceConfig(serialize(device.getDeviceConfig())); builder.setDeviceOperationalStatus(serialize(device.getDeviceOperationalStatus())); builder.setDeviceType(deviceType); builder.setDeviceConfig(serializedDeviceConfig); builder.setDeviceOperationalStatus(serializedDeviceOperationalStatus); builder.addAllDeviceDrivers(serializedDeviceDrivers); builder.addAllDeviceEndpoints(serializedDeviceEndPoints); return builder.build(); } public Device deserialize(ContextOuterClass.Device device) { final var id = deserialize(device.getDeviceId()); final var type = device.getDeviceType(); final var config = deserialize(device.getDeviceConfig()); final var operationalStatus = deserialize(device.getDeviceOperationalStatus()); return new Device(id, type, config, operationalStatus); final var serializedDeviceId = device.getDeviceId(); final var deviceType = device.getDeviceType(); final var serializedDeviceConfig = device.getDeviceConfig(); final var serializedDeviceOperationalStatus = device.getDeviceOperationalStatus(); final var serializedDeviceDrivers = device.getDeviceDriversList(); final var serializedDeviceEndPoints = device.getDeviceEndpointsList(); final var deviceId = deserialize(serializedDeviceId); final var deviceConfig = deserialize(serializedDeviceConfig); final var deviceOperationalStatus = deserialize(serializedDeviceOperationalStatus); final var deviceDrivers = serializedDeviceDrivers.stream().map(this::deserialize).collect(Collectors.toList()); final var deviceEndPoints = serializedDeviceEndPoints.stream().map(this::deserialize).collect(Collectors.toList()); return new Device( deviceId, deviceType, deviceConfig, deviceOperationalStatus, deviceDrivers, deviceEndPoints); } public Uuid serializeUuid(String uuid) { Loading src/automation/src/main/java/eu/teraflow/automation/context/model/ConfigRule.java +2 −2 Original line number Diff line number Diff line Loading @@ -19,9 +19,9 @@ package eu.teraflow.automation.context.model; public class ConfigRule { private final ConfigActionEnum configActionEnum; private final ConfigRuleType configRuleType; private final ConfigRuleType<?> configRuleType; public ConfigRule(ConfigActionEnum configActionEnum, ConfigRuleType configRuleType) { public ConfigRule(ConfigActionEnum configActionEnum, ConfigRuleType<?> configRuleType) { this.configActionEnum = configActionEnum; this.configRuleType = configRuleType; } Loading src/automation/src/main/java/eu/teraflow/automation/context/model/Device.java +37 −4 Original line number Diff line number Diff line Loading @@ -16,30 +16,45 @@ package eu.teraflow.automation.context.model; import java.util.List; import java.util.stream.Collectors; public class Device { private final String deviceId; private final String deviceType; private DeviceConfig deviceConfig; private DeviceOperationalStatus deviceOperationalStatus; private List<DeviceDriverEnum> deviceDrivers; private List<EndPoint> endPoints; public Device( String deviceId, String deviceType, DeviceConfig deviceConfig, DeviceOperationalStatus deviceOperationalStatus) { DeviceOperationalStatus deviceOperationalStatus, List<DeviceDriverEnum> deviceDrivers, List<EndPoint> endPoints) { this.deviceId = deviceId; this.deviceType = deviceType; this.deviceConfig = deviceConfig; this.deviceOperationalStatus = deviceOperationalStatus; this.deviceDrivers = deviceDrivers; this.endPoints = endPoints; } public Device( String deviceId, String deviceType, DeviceOperationalStatus deviceOperationalStatus) { String deviceId, String deviceType, DeviceOperationalStatus deviceOperationalStatus, List<DeviceDriverEnum> deviceDrivers, List<EndPoint> endPoints) { this.deviceId = deviceId; this.deviceType = deviceType; this.deviceOperationalStatus = deviceOperationalStatus; this.deviceDrivers = deviceDrivers; this.endPoints = endPoints; } public boolean isEnabled() { Loading @@ -62,6 +77,14 @@ public class Device { return deviceConfig; } public List<DeviceDriverEnum> getDeviceDrivers() { return deviceDrivers; } public List<EndPoint> getEndPoints() { return endPoints; } public DeviceOperationalStatus getDeviceOperationalStatus() { return deviceOperationalStatus; } Loading @@ -73,7 +96,17 @@ public class Device { @Override public String toString() { return String.format( "%s{id=\"%s\", type=\"%s\", operationalStatus=\"%s\", config=%s", getClass().getSimpleName(), deviceId, deviceType, deviceOperationalStatus, deviceConfig); "%s:{deviceId:\"%s\", deviceType:\"%s\", %s, deviceOperationalStatus=\"%s\", [%s], [%s]}", getClass().getSimpleName(), deviceId, deviceType, deviceConfig, deviceOperationalStatus.toString(), toString(deviceDrivers), toString(endPoints)); } private static <T> String toString(List<T> list) { return list.stream().map(T::toString).collect(Collectors.joining(", ")); } } src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceDriverEnum.java 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.automation.context.model; public enum DeviceDriverEnum { UNDEFINED, OPENCONFIG, TRANSPORT_API, P4, IETF_NETWORK_TOPOLOGY, ONF_TR_352 } src/automation/src/main/java/eu/teraflow/automation/context/model/EndPoint.java 0 → 100644 +70 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.automation.context.model; import eu.teraflow.automation.kpi_sample_types.model.KpiSampleType; import java.util.List; import java.util.stream.Collectors; public class EndPoint { private final EndPointId endPointId; private final String endPointType; private final List<KpiSampleType> kpiSampleTypes; private final Location endPointLocation; public EndPoint( EndPointId endPointId, String endPointType, List<KpiSampleType> kpiSampleTypes, Location endPointLocation) { this.endPointId = endPointId; this.endPointType = endPointType; this.kpiSampleTypes = kpiSampleTypes; this.endPointLocation = endPointLocation; } public EndPointId getEndPointId() { return endPointId; } public String getEndPointType() { return endPointType; } public List<KpiSampleType> getKpiSampleTypes() { return kpiSampleTypes; } public Location getEndPointLocation() { return endPointLocation; } @Override public String toString() { return String.format( "%s:{%s, endPointType:\"%s\", [%s], %s}", getClass().getSimpleName(), endPointId, endPointType, toString(kpiSampleTypes), endPointLocation); } private static <T> String toString(List<T> list) { return list.stream().map(T::toString).collect(Collectors.joining(", ")); } } Loading
src/automation/src/main/java/eu/teraflow/automation/Serializer.java +206 −8 Original line number Diff line number Diff line Loading @@ -40,17 +40,25 @@ import eu.teraflow.automation.context.model.ConfigRuleTypeAcl; import eu.teraflow.automation.context.model.ConfigRuleTypeCustom; import eu.teraflow.automation.context.model.Device; import eu.teraflow.automation.context.model.DeviceConfig; import eu.teraflow.automation.context.model.DeviceDriverEnum; import eu.teraflow.automation.context.model.DeviceEvent; import eu.teraflow.automation.context.model.DeviceOperationalStatus; import eu.teraflow.automation.context.model.EndPoint; import eu.teraflow.automation.context.model.EndPointId; import eu.teraflow.automation.context.model.Event; import eu.teraflow.automation.context.model.EventTypeEnum; import eu.teraflow.automation.context.model.GpsPosition; import eu.teraflow.automation.context.model.Location; import eu.teraflow.automation.context.model.LocationTypeGpsPosition; import eu.teraflow.automation.context.model.LocationTypeRegion; import eu.teraflow.automation.context.model.TopologyId; import eu.teraflow.automation.kpi_sample_types.model.KpiSampleType; import eu.teraflow.automation.model.DeviceRole; import eu.teraflow.automation.model.DeviceRoleId; import eu.teraflow.automation.model.DeviceRoleType; import java.util.stream.Collectors; import javax.inject.Singleton; import kpi_sample_types.KpiSampleTypes; @Singleton public class Serializer { Loading Loading @@ -691,26 +699,216 @@ public class Serializer { } } public KpiSampleTypes.KpiSampleType serialize(KpiSampleType kpiSampleType) { switch (kpiSampleType) { case PACKETS_TRANSMITTED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_PACKETS_TRANSMITTED; case PACKETS_RECEIVED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED; case BYTES_TRANSMITTED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_BYTES_TRANSMITTED; case BYTES_RECEIVED: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_BYTES_RECEIVED; case UNKNOWN: return KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN; default: return KpiSampleTypes.KpiSampleType.UNRECOGNIZED; } } public KpiSampleType deserialize(KpiSampleTypes.KpiSampleType serializedKpiSampleType) { switch (serializedKpiSampleType) { case KPISAMPLETYPE_PACKETS_TRANSMITTED: return KpiSampleType.PACKETS_TRANSMITTED; case KPISAMPLETYPE_PACKETS_RECEIVED: return KpiSampleType.PACKETS_RECEIVED; case KPISAMPLETYPE_BYTES_TRANSMITTED: return KpiSampleType.BYTES_TRANSMITTED; case KPISAMPLETYPE_BYTES_RECEIVED: return KpiSampleType.BYTES_RECEIVED; case KPISAMPLETYPE_UNKNOWN: default: return KpiSampleType.UNKNOWN; } } public ContextOuterClass.Location serialize(Location location) { final var builder = ContextOuterClass.Location.newBuilder(); final var locationType = location.getLocationType(); final var locationTypeSpecificType = locationType.getLocationType(); if (locationTypeSpecificType instanceof GpsPosition) { final var latitude = ((GpsPosition) locationTypeSpecificType).getLatitude(); final var longitude = ((GpsPosition) locationTypeSpecificType).getLongitude(); final var serializedGpsPosition = ContextOuterClass.GPS_Position.newBuilder() .setLatitude(latitude) .setLongitude(longitude) .build(); builder.setGpsPosition(serializedGpsPosition); } if (locationTypeSpecificType instanceof String) { final var region = ((String) locationTypeSpecificType); builder.setRegion(region); } return builder.build(); } public Location deserialize(ContextOuterClass.Location serializedLocation) { final var typeOfLocation = serializedLocation.getLocationCase(); switch (typeOfLocation) { case REGION: final var region = serializedLocation.getRegion(); final var locationTypeRegion = new LocationTypeRegion(region); return new Location(locationTypeRegion); case GPS_POSITION: final var serializedGpsPosition = serializedLocation.getGpsPosition(); final var latitude = serializedGpsPosition.getLatitude(); final var longitude = serializedGpsPosition.getLongitude(); final var gpsPosition = new GpsPosition(latitude, longitude); final var locationTypeGpsPosition = new LocationTypeGpsPosition(gpsPosition); return new Location(locationTypeGpsPosition); default: case LOCATION_NOT_SET: throw new IllegalStateException("Location value not set"); } } public ContextOuterClass.DeviceDriverEnum serialize(DeviceDriverEnum deviceDriverEnum) { switch (deviceDriverEnum) { case OPENCONFIG: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_OPENCONFIG; case TRANSPORT_API: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_TRANSPORT_API; case P4: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_P4; case IETF_NETWORK_TOPOLOGY: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_NETWORK_TOPOLOGY; case ONF_TR_352: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352; case UNDEFINED: default: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_UNDEFINED; } } public DeviceDriverEnum deserialize( ContextOuterClass.DeviceDriverEnum serializedDeviceDriverEnum) { switch (serializedDeviceDriverEnum) { case DEVICEDRIVER_OPENCONFIG: return DeviceDriverEnum.OPENCONFIG; case DEVICEDRIVER_TRANSPORT_API: return DeviceDriverEnum.TRANSPORT_API; case DEVICEDRIVER_P4: return DeviceDriverEnum.P4; case DEVICEDRIVER_IETF_NETWORK_TOPOLOGY: return DeviceDriverEnum.IETF_NETWORK_TOPOLOGY; case DEVICEDRIVER_ONF_TR_352: return DeviceDriverEnum.ONF_TR_352; case DEVICEDRIVER_UNDEFINED: case UNRECOGNIZED: default: return DeviceDriverEnum.UNDEFINED; } } public ContextOuterClass.EndPoint serialize(EndPoint endPoint) { final var builder = ContextOuterClass.EndPoint.newBuilder(); final var endPointId = endPoint.getEndPointId(); final var endPointType = endPoint.getEndPointType(); final var kpiSampleTypes = endPoint.getKpiSampleTypes(); final var endPointLocation = endPoint.getEndPointLocation(); final var serializedEndPointId = serialize(endPointId); final var serializedKpiSampleTypes = kpiSampleTypes.stream().map(this::serialize).collect(Collectors.toList()); final var serializedEndPointLocation = serialize(endPointLocation); builder.setEndpointId(serializedEndPointId); builder.setEndpointType(endPointType); builder.addAllKpiSampleTypes(serializedKpiSampleTypes); builder.setEndpointLocation(serializedEndPointLocation); return builder.build(); } public EndPoint deserialize(ContextOuterClass.EndPoint serializedEndPoint) { final var serializedEndPointId = serializedEndPoint.getEndpointId(); final var endPointType = serializedEndPoint.getEndpointType(); final var serializedKpiSampleTypes = serializedEndPoint.getKpiSampleTypesList(); final var serializedEndPointLocation = serializedEndPoint.getEndpointLocation(); final var endPointId = deserialize(serializedEndPointId); final var kpiSampleTypes = serializedKpiSampleTypes.stream().map(this::deserialize).collect(Collectors.toList()); final var endPointLocation = deserialize(serializedEndPointLocation); return new EndPoint(endPointId, endPointType, kpiSampleTypes, endPointLocation); } public ContextOuterClass.Device serialize(Device device) { final var builder = ContextOuterClass.Device.newBuilder(); final var deviceIdUuid = serializeUuid(device.getDeviceId()); final var deviceId = DeviceId.newBuilder().setDeviceUuid(deviceIdUuid); final var deviceType = device.getDeviceType(); final var deviceConfig = device.getDeviceConfig(); final var deviceOperationalStatus = device.getDeviceOperationalStatus(); final var deviceDrivers = device.getDeviceDrivers(); final var deviceEndPoints = device.getEndPoints(); final var serializedDeviceConfig = serialize(deviceConfig); final var serializedDeviceOperationalStatus = serialize(deviceOperationalStatus); final var serializedDeviceDrivers = deviceDrivers.stream().map(this::serialize).collect(Collectors.toList()); final var serializedDeviceEndPoints = deviceEndPoints.stream().map(this::serialize).collect(Collectors.toList()); builder.setDeviceId(deviceId); builder.setDeviceType(device.getDeviceType()); builder.setDeviceConfig(serialize(device.getDeviceConfig())); builder.setDeviceOperationalStatus(serialize(device.getDeviceOperationalStatus())); builder.setDeviceType(deviceType); builder.setDeviceConfig(serializedDeviceConfig); builder.setDeviceOperationalStatus(serializedDeviceOperationalStatus); builder.addAllDeviceDrivers(serializedDeviceDrivers); builder.addAllDeviceEndpoints(serializedDeviceEndPoints); return builder.build(); } public Device deserialize(ContextOuterClass.Device device) { final var id = deserialize(device.getDeviceId()); final var type = device.getDeviceType(); final var config = deserialize(device.getDeviceConfig()); final var operationalStatus = deserialize(device.getDeviceOperationalStatus()); return new Device(id, type, config, operationalStatus); final var serializedDeviceId = device.getDeviceId(); final var deviceType = device.getDeviceType(); final var serializedDeviceConfig = device.getDeviceConfig(); final var serializedDeviceOperationalStatus = device.getDeviceOperationalStatus(); final var serializedDeviceDrivers = device.getDeviceDriversList(); final var serializedDeviceEndPoints = device.getDeviceEndpointsList(); final var deviceId = deserialize(serializedDeviceId); final var deviceConfig = deserialize(serializedDeviceConfig); final var deviceOperationalStatus = deserialize(serializedDeviceOperationalStatus); final var deviceDrivers = serializedDeviceDrivers.stream().map(this::deserialize).collect(Collectors.toList()); final var deviceEndPoints = serializedDeviceEndPoints.stream().map(this::deserialize).collect(Collectors.toList()); return new Device( deviceId, deviceType, deviceConfig, deviceOperationalStatus, deviceDrivers, deviceEndPoints); } public Uuid serializeUuid(String uuid) { Loading
src/automation/src/main/java/eu/teraflow/automation/context/model/ConfigRule.java +2 −2 Original line number Diff line number Diff line Loading @@ -19,9 +19,9 @@ package eu.teraflow.automation.context.model; public class ConfigRule { private final ConfigActionEnum configActionEnum; private final ConfigRuleType configRuleType; private final ConfigRuleType<?> configRuleType; public ConfigRule(ConfigActionEnum configActionEnum, ConfigRuleType configRuleType) { public ConfigRule(ConfigActionEnum configActionEnum, ConfigRuleType<?> configRuleType) { this.configActionEnum = configActionEnum; this.configRuleType = configRuleType; } Loading
src/automation/src/main/java/eu/teraflow/automation/context/model/Device.java +37 −4 Original line number Diff line number Diff line Loading @@ -16,30 +16,45 @@ package eu.teraflow.automation.context.model; import java.util.List; import java.util.stream.Collectors; public class Device { private final String deviceId; private final String deviceType; private DeviceConfig deviceConfig; private DeviceOperationalStatus deviceOperationalStatus; private List<DeviceDriverEnum> deviceDrivers; private List<EndPoint> endPoints; public Device( String deviceId, String deviceType, DeviceConfig deviceConfig, DeviceOperationalStatus deviceOperationalStatus) { DeviceOperationalStatus deviceOperationalStatus, List<DeviceDriverEnum> deviceDrivers, List<EndPoint> endPoints) { this.deviceId = deviceId; this.deviceType = deviceType; this.deviceConfig = deviceConfig; this.deviceOperationalStatus = deviceOperationalStatus; this.deviceDrivers = deviceDrivers; this.endPoints = endPoints; } public Device( String deviceId, String deviceType, DeviceOperationalStatus deviceOperationalStatus) { String deviceId, String deviceType, DeviceOperationalStatus deviceOperationalStatus, List<DeviceDriverEnum> deviceDrivers, List<EndPoint> endPoints) { this.deviceId = deviceId; this.deviceType = deviceType; this.deviceOperationalStatus = deviceOperationalStatus; this.deviceDrivers = deviceDrivers; this.endPoints = endPoints; } public boolean isEnabled() { Loading @@ -62,6 +77,14 @@ public class Device { return deviceConfig; } public List<DeviceDriverEnum> getDeviceDrivers() { return deviceDrivers; } public List<EndPoint> getEndPoints() { return endPoints; } public DeviceOperationalStatus getDeviceOperationalStatus() { return deviceOperationalStatus; } Loading @@ -73,7 +96,17 @@ public class Device { @Override public String toString() { return String.format( "%s{id=\"%s\", type=\"%s\", operationalStatus=\"%s\", config=%s", getClass().getSimpleName(), deviceId, deviceType, deviceOperationalStatus, deviceConfig); "%s:{deviceId:\"%s\", deviceType:\"%s\", %s, deviceOperationalStatus=\"%s\", [%s], [%s]}", getClass().getSimpleName(), deviceId, deviceType, deviceConfig, deviceOperationalStatus.toString(), toString(deviceDrivers), toString(endPoints)); } private static <T> String toString(List<T> list) { return list.stream().map(T::toString).collect(Collectors.joining(", ")); } }
src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceDriverEnum.java 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.automation.context.model; public enum DeviceDriverEnum { UNDEFINED, OPENCONFIG, TRANSPORT_API, P4, IETF_NETWORK_TOPOLOGY, ONF_TR_352 }
src/automation/src/main/java/eu/teraflow/automation/context/model/EndPoint.java 0 → 100644 +70 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.automation.context.model; import eu.teraflow.automation.kpi_sample_types.model.KpiSampleType; import java.util.List; import java.util.stream.Collectors; public class EndPoint { private final EndPointId endPointId; private final String endPointType; private final List<KpiSampleType> kpiSampleTypes; private final Location endPointLocation; public EndPoint( EndPointId endPointId, String endPointType, List<KpiSampleType> kpiSampleTypes, Location endPointLocation) { this.endPointId = endPointId; this.endPointType = endPointType; this.kpiSampleTypes = kpiSampleTypes; this.endPointLocation = endPointLocation; } public EndPointId getEndPointId() { return endPointId; } public String getEndPointType() { return endPointType; } public List<KpiSampleType> getKpiSampleTypes() { return kpiSampleTypes; } public Location getEndPointLocation() { return endPointLocation; } @Override public String toString() { return String.format( "%s:{%s, endPointType:\"%s\", [%s], %s}", getClass().getSimpleName(), endPointId, endPointType, toString(kpiSampleTypes), endPointLocation); } private static <T> String toString(List<T> list) { return list.stream().map(T::toString).collect(Collectors.joining(", ")); } }