Loading .gitlab-ci.yml +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ include: - local: '/src/qos_profile/.gitlab-ci.yml' - local: '/src/vnt_manager/.gitlab-ci.yml' - local: '/src/e2e_orchestrator/.gitlab-ci.yml' - local: '/src/ztp_server/.gitlab-ci.yml' # This should be last one: end-to-end integration tests - local: '/src/tests/.gitlab-ci.yml' src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java +32 −43 Original line number Diff line number Diff line Loading @@ -41,49 +41,7 @@ import org.etsi.tfs.policy.acl.AclLogActionEnum; import org.etsi.tfs.policy.acl.AclMatch; import org.etsi.tfs.policy.acl.AclRuleSet; import org.etsi.tfs.policy.acl.AclRuleTypeEnum; import org.etsi.tfs.policy.context.model.ConfigActionEnum; import org.etsi.tfs.policy.context.model.ConfigRule; import org.etsi.tfs.policy.context.model.ConfigRuleAcl; import org.etsi.tfs.policy.context.model.ConfigRuleCustom; import org.etsi.tfs.policy.context.model.ConfigRuleTypeAcl; import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom; import org.etsi.tfs.policy.context.model.Constraint; import org.etsi.tfs.policy.context.model.ConstraintCustom; import org.etsi.tfs.policy.context.model.ConstraintEndPointLocation; import org.etsi.tfs.policy.context.model.ConstraintSchedule; import org.etsi.tfs.policy.context.model.ConstraintSlaAvailability; import org.etsi.tfs.policy.context.model.ConstraintSlaCapacity; import org.etsi.tfs.policy.context.model.ConstraintSlaIsolationLevel; import org.etsi.tfs.policy.context.model.ConstraintSlaLatency; import org.etsi.tfs.policy.context.model.ConstraintTypeCustom; import org.etsi.tfs.policy.context.model.ConstraintTypeEndPointLocation; import org.etsi.tfs.policy.context.model.ConstraintTypeSchedule; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaAvailability; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaCapacity; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaIsolationLevel; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaLatency; import org.etsi.tfs.policy.context.model.Device; import org.etsi.tfs.policy.context.model.DeviceConfig; import org.etsi.tfs.policy.context.model.DeviceDriverEnum; import org.etsi.tfs.policy.context.model.DeviceOperationalStatus; import org.etsi.tfs.policy.context.model.Empty; import org.etsi.tfs.policy.context.model.EndPoint; import org.etsi.tfs.policy.context.model.EndPointId; import org.etsi.tfs.policy.context.model.Event; import org.etsi.tfs.policy.context.model.EventTypeEnum; import org.etsi.tfs.policy.context.model.GpsPosition; import org.etsi.tfs.policy.context.model.IsolationLevelEnum; import org.etsi.tfs.policy.context.model.Location; import org.etsi.tfs.policy.context.model.LocationTypeGpsPosition; import org.etsi.tfs.policy.context.model.LocationTypeRegion; import org.etsi.tfs.policy.context.model.Service; import org.etsi.tfs.policy.context.model.ServiceConfig; import org.etsi.tfs.policy.context.model.ServiceId; import org.etsi.tfs.policy.context.model.ServiceStatus; import org.etsi.tfs.policy.context.model.ServiceStatusEnum; import org.etsi.tfs.policy.context.model.ServiceTypeEnum; import org.etsi.tfs.policy.context.model.SliceId; import org.etsi.tfs.policy.context.model.TopologyId; import org.etsi.tfs.policy.context.model.*; import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType; import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor; import org.etsi.tfs.policy.monitoring.model.AlarmResponse; Loading Loading @@ -904,6 +862,22 @@ public class Serializer { builder.setSlaLatency(serializedConstraintSlaLatency); } if (constraintTypeSpecificType instanceof ConstraintExclusions) { final var isPermanent = ((ConstraintExclusions) constraintTypeSpecificType).isPermanent(); final var deviceIds = ((ConstraintExclusions) constraintTypeSpecificType).getDeviceIds(); final var serializedDeviceIds = deviceIds.stream().map(this::serializeDeviceId).collect(Collectors.toList()); final var serializedConstraintExclusions = ContextOuterClass.Constraint_Exclusions.newBuilder() .setIsPermanent(isPermanent) .addAllDeviceIds(serializedDeviceIds) .build(); builder.setExclusions(serializedConstraintExclusions); } return builder.build(); } Loading Loading @@ -982,6 +956,21 @@ public class Serializer { new ConstraintTypeSlaIsolationLevel(constraintSlaIsolation); return new Constraint(constraintTypeSlaIsolation); case EXCLUSIONS: final var exclusions = serializedConstraint.getExclusions(); final var isPermanent = exclusions.getIsPermanent(); final var serializedDevices = exclusions.getDeviceIdsList(); final var deviceIds = serializedDevices.stream().map(this::deserialize).collect(Collectors.toList()); final var constraintExclusions = new org.etsi.tfs.policy.context.model.ConstraintExclusions( isPermanent, deviceIds, new ArrayList<>(), new ArrayList<>()); final var constraintTypeExclusions = new org.etsi.tfs.policy.context.model.ConstraintTypeExclusions(constraintExclusions); return new Constraint(constraintTypeExclusions); default: case CONSTRAINT_NOT_SET: Loading src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintExclusions.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) * * 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 org.etsi.tfs.policy.context.model; import java.util.List; public class ConstraintExclusions { private final boolean isPermanent; private final List<String> deviceIds; private final List<EndPointId> endpointIds; private final List<LinkId> linkIds; public ConstraintExclusions( boolean isPermanent, List<String> deviceIds, List<EndPointId> endpointIds, List<LinkId> linkIds) { this.isPermanent = isPermanent; this.deviceIds = deviceIds; this.endpointIds = endpointIds; this.linkIds = linkIds; } public boolean isPermanent() { return isPermanent; } public List<String> getDeviceIds() { return deviceIds; } public List<EndPointId> getEndpointIds() { return endpointIds; } public List<LinkId> getLinkIds() { return linkIds; } @Override public String toString() { return "ConstraintExclusions{" + "permanent=" + isPermanent + ", deviceIds=" + deviceIds + ", endpointIds=" + endpointIds + ", linkIds=" + linkIds + '}'; } } src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeExclusions.java 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) * * 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 org.etsi.tfs.policy.context.model; public class ConstraintTypeExclusions implements ConstraintType<ConstraintExclusions> { private final ConstraintExclusions constraintExclusions; public ConstraintTypeExclusions(ConstraintExclusions constraintExclusions) { this.constraintExclusions = constraintExclusions; } @Override public ConstraintExclusions getConstraintType() { return this.constraintExclusions; } @Override public String toString() { return String.format("%s:{%s}", getClass().getSimpleName(), constraintExclusions); } } src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceId.java 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) * * 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 org.etsi.tfs.policy.context.model; public class DeviceId { private final String id; public DeviceId(String id) { this.id = id; } public String getId() { return id; } @Override public String toString() { return "DeviceId{" + "id='" + id + '\'' + '}'; } } Loading
.gitlab-ci.yml +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ include: - local: '/src/qos_profile/.gitlab-ci.yml' - local: '/src/vnt_manager/.gitlab-ci.yml' - local: '/src/e2e_orchestrator/.gitlab-ci.yml' - local: '/src/ztp_server/.gitlab-ci.yml' # This should be last one: end-to-end integration tests - local: '/src/tests/.gitlab-ci.yml'
src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java +32 −43 Original line number Diff line number Diff line Loading @@ -41,49 +41,7 @@ import org.etsi.tfs.policy.acl.AclLogActionEnum; import org.etsi.tfs.policy.acl.AclMatch; import org.etsi.tfs.policy.acl.AclRuleSet; import org.etsi.tfs.policy.acl.AclRuleTypeEnum; import org.etsi.tfs.policy.context.model.ConfigActionEnum; import org.etsi.tfs.policy.context.model.ConfigRule; import org.etsi.tfs.policy.context.model.ConfigRuleAcl; import org.etsi.tfs.policy.context.model.ConfigRuleCustom; import org.etsi.tfs.policy.context.model.ConfigRuleTypeAcl; import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom; import org.etsi.tfs.policy.context.model.Constraint; import org.etsi.tfs.policy.context.model.ConstraintCustom; import org.etsi.tfs.policy.context.model.ConstraintEndPointLocation; import org.etsi.tfs.policy.context.model.ConstraintSchedule; import org.etsi.tfs.policy.context.model.ConstraintSlaAvailability; import org.etsi.tfs.policy.context.model.ConstraintSlaCapacity; import org.etsi.tfs.policy.context.model.ConstraintSlaIsolationLevel; import org.etsi.tfs.policy.context.model.ConstraintSlaLatency; import org.etsi.tfs.policy.context.model.ConstraintTypeCustom; import org.etsi.tfs.policy.context.model.ConstraintTypeEndPointLocation; import org.etsi.tfs.policy.context.model.ConstraintTypeSchedule; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaAvailability; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaCapacity; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaIsolationLevel; import org.etsi.tfs.policy.context.model.ConstraintTypeSlaLatency; import org.etsi.tfs.policy.context.model.Device; import org.etsi.tfs.policy.context.model.DeviceConfig; import org.etsi.tfs.policy.context.model.DeviceDriverEnum; import org.etsi.tfs.policy.context.model.DeviceOperationalStatus; import org.etsi.tfs.policy.context.model.Empty; import org.etsi.tfs.policy.context.model.EndPoint; import org.etsi.tfs.policy.context.model.EndPointId; import org.etsi.tfs.policy.context.model.Event; import org.etsi.tfs.policy.context.model.EventTypeEnum; import org.etsi.tfs.policy.context.model.GpsPosition; import org.etsi.tfs.policy.context.model.IsolationLevelEnum; import org.etsi.tfs.policy.context.model.Location; import org.etsi.tfs.policy.context.model.LocationTypeGpsPosition; import org.etsi.tfs.policy.context.model.LocationTypeRegion; import org.etsi.tfs.policy.context.model.Service; import org.etsi.tfs.policy.context.model.ServiceConfig; import org.etsi.tfs.policy.context.model.ServiceId; import org.etsi.tfs.policy.context.model.ServiceStatus; import org.etsi.tfs.policy.context.model.ServiceStatusEnum; import org.etsi.tfs.policy.context.model.ServiceTypeEnum; import org.etsi.tfs.policy.context.model.SliceId; import org.etsi.tfs.policy.context.model.TopologyId; import org.etsi.tfs.policy.context.model.*; import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType; import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor; import org.etsi.tfs.policy.monitoring.model.AlarmResponse; Loading Loading @@ -904,6 +862,22 @@ public class Serializer { builder.setSlaLatency(serializedConstraintSlaLatency); } if (constraintTypeSpecificType instanceof ConstraintExclusions) { final var isPermanent = ((ConstraintExclusions) constraintTypeSpecificType).isPermanent(); final var deviceIds = ((ConstraintExclusions) constraintTypeSpecificType).getDeviceIds(); final var serializedDeviceIds = deviceIds.stream().map(this::serializeDeviceId).collect(Collectors.toList()); final var serializedConstraintExclusions = ContextOuterClass.Constraint_Exclusions.newBuilder() .setIsPermanent(isPermanent) .addAllDeviceIds(serializedDeviceIds) .build(); builder.setExclusions(serializedConstraintExclusions); } return builder.build(); } Loading Loading @@ -982,6 +956,21 @@ public class Serializer { new ConstraintTypeSlaIsolationLevel(constraintSlaIsolation); return new Constraint(constraintTypeSlaIsolation); case EXCLUSIONS: final var exclusions = serializedConstraint.getExclusions(); final var isPermanent = exclusions.getIsPermanent(); final var serializedDevices = exclusions.getDeviceIdsList(); final var deviceIds = serializedDevices.stream().map(this::deserialize).collect(Collectors.toList()); final var constraintExclusions = new org.etsi.tfs.policy.context.model.ConstraintExclusions( isPermanent, deviceIds, new ArrayList<>(), new ArrayList<>()); final var constraintTypeExclusions = new org.etsi.tfs.policy.context.model.ConstraintTypeExclusions(constraintExclusions); return new Constraint(constraintTypeExclusions); default: case CONSTRAINT_NOT_SET: Loading
src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintExclusions.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) * * 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 org.etsi.tfs.policy.context.model; import java.util.List; public class ConstraintExclusions { private final boolean isPermanent; private final List<String> deviceIds; private final List<EndPointId> endpointIds; private final List<LinkId> linkIds; public ConstraintExclusions( boolean isPermanent, List<String> deviceIds, List<EndPointId> endpointIds, List<LinkId> linkIds) { this.isPermanent = isPermanent; this.deviceIds = deviceIds; this.endpointIds = endpointIds; this.linkIds = linkIds; } public boolean isPermanent() { return isPermanent; } public List<String> getDeviceIds() { return deviceIds; } public List<EndPointId> getEndpointIds() { return endpointIds; } public List<LinkId> getLinkIds() { return linkIds; } @Override public String toString() { return "ConstraintExclusions{" + "permanent=" + isPermanent + ", deviceIds=" + deviceIds + ", endpointIds=" + endpointIds + ", linkIds=" + linkIds + '}'; } }
src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeExclusions.java 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) * * 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 org.etsi.tfs.policy.context.model; public class ConstraintTypeExclusions implements ConstraintType<ConstraintExclusions> { private final ConstraintExclusions constraintExclusions; public ConstraintTypeExclusions(ConstraintExclusions constraintExclusions) { this.constraintExclusions = constraintExclusions; } @Override public ConstraintExclusions getConstraintType() { return this.constraintExclusions; } @Override public String toString() { return String.format("%s:{%s}", getClass().getSimpleName(), constraintExclusions); } }
src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceId.java 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) * * 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 org.etsi.tfs.policy.context.model; public class DeviceId { private final String id; public DeviceId(String id) { this.id = id; } public String getId() { return id; } @Override public String toString() { return "DeviceId{" + "id='" + id + '\'' + '}'; } }