From be23914f8ae904d21e300d7600aa3822e86b2106 Mon Sep 17 00:00:00 2001 From: Ai Hamano Date: Fri, 7 Dec 2018 13:10:19 +0900 Subject: [PATCH] [ODTN]Add SIP validation check Add check of SIP which is input of create-connectivity-service is used Change-Id: I95f50fcc98d40f462cc3c50a7f461e3f7e6686e4 --- .../tapi/TapiConnectivityServiceHandler.java | 5 +++ .../internal/DcsBasedTapiConnectivityRpc.java | 31 +++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) mode change 100644 => 100755 apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java mode change 100644 => 100755 apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java old mode 100644 new mode 100755 index c32558c12a..5bbed4a497 --- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java +++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java @@ -16,6 +16,7 @@ package org.onosproject.odtn.utils.tapi; +import java.util.List; import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext; import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid; import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectivityServiceKeys; @@ -82,6 +83,10 @@ public final class TapiConnectivityServiceHandler extends TapiObjectHandler getEndPoint() { + return obj.endPoint(); + } + public TapiConnectivityServiceHandler addSep(EndPoint sep) { obj.addToEndPoint(sep); return this; diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java old mode 100644 new mode 100755 index a5bed1faf8..c0ed9564ba --- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java +++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java @@ -16,6 +16,7 @@ package org.onosproject.odtn.internal; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.onosproject.config.DynamicConfigService; @@ -43,6 +44,7 @@ import org.onosproject.yang.model.RpcOutput; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static java.util.Collections.disjoint; import static org.onlab.osgi.DefaultServiceDirectory.getService; @@ -75,9 +77,15 @@ public class DcsBasedTapiConnectivityRpc implements TapiConnectivityService { try { TapiCreateConnectivityInputHandler input = new TapiCreateConnectivityInputHandler(); input.setRpcInput(inputVar); - // TODO validation check log.info("input SIPs: {}", input.getSips()); + // check SIP validation + if (!disjoint(getUsedSips(), input.getSips())) { + log.error("check SIP validation : NG"); + return new RpcOutput(RpcOutput.Status.RPC_FAILURE, null); + } + log.debug("check SIP validation : OK"); + List nepRefs = input.getSips().stream() .map(sipId -> resolver.getNepRef(sipId)) .collect(Collectors.toList()); @@ -116,7 +124,6 @@ public class DcsBasedTapiConnectivityRpc implements TapiConnectivityService { } - /** * Service interface of deleteConnectivityService. * @@ -195,7 +202,6 @@ public class DcsBasedTapiConnectivityRpc implements TapiConnectivityService { } } - /** * Service interface of getConnectivityServiceDetails. * @@ -249,4 +255,23 @@ public class DcsBasedTapiConnectivityRpc implements TapiConnectivityService { return new RpcOutput(RpcOutput.Status.RPC_FAILURE, null); } + + /** + * Get used SIPs. + * + * @return list of used SIPs + */ + private List getUsedSips() { + TapiContextHandler handler = TapiContextHandler.create(); + handler.read(); + + List usedSips = new ArrayList(); + handler.getConnectivityServices().stream() + .forEach(connectivityService -> connectivityService.getEndPoint().stream() + .forEach(endPoint -> usedSips.add(endPoint.serviceInterfacePoint() + .serviceInterfacePointUuid().toString()))); + + log.debug("usedSips: {}", usedSips); + return usedSips; + } }