Commit a9bbbefd authored by Pablo Armingol's avatar Pablo Armingol
Browse files

Merge branch 'develop' of https://labs.etsi.org/rep/tfs/controller into...

Merge branch 'develop' of https://labs.etsi.org/rep/tfs/controller into feat/299-tid-modify-nbi-to-update-slice-l3vpn
parents 1d0c2fe7 685bdd9e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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'
+32 −43
Original line number Diff line number Diff line
@@ -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;
@@ -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();
    }

@@ -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:
+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
                + '}';
    }
}
+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);
    }
}
+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