From 2325c4d10fe4654413905530f1873c6a80d1c47a Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Fri, 20 Jan 2023 18:10:09 +0000
Subject: [PATCH] Context component:

- corrected slice_unset query filters
---
 src/context/service/database/Slice.py | 33 +++++++++++++++------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/src/context/service/database/Slice.py b/src/context/service/database/Slice.py
index 4c65886ab..84bfff343 100644
--- a/src/context/service/database/Slice.py
+++ b/src/context/service/database/Slice.py
@@ -202,21 +202,24 @@ def slice_unset(db_engine : Engine, request : Slice) -> Tuple[Dict, bool]:
 
     def callback(session : Session) -> bool:
         num_deletes = 0
-        num_deletes += session.query(SliceServiceModel)\
-            .filter(and_(
-                SliceServiceModel.slice_uuid == slice_uuid,
-                SliceServiceModel.service_uuid.in_(slice_service_uuids)
-            )).delete()
-        num_deletes += session.query(SliceSubSliceModel)\
-            .filter_by(and_(
-                SliceSubSliceModel.slice_uuid == slice_uuid,
-                SliceSubSliceModel.subslice_uuid.in_(slice_subslice_uuids)
-            )).delete()
-        num_deletes += session.query(SliceEndPointModel)\
-            .filter_by(and_(
-                SliceEndPointModel.slice_uuid == slice_uuid,
-                SliceEndPointModel.endpoint_uuid.in_(slice_endpoint_uuids)
-            )).delete()
+        if len(slice_service_uuids) > 0:
+            num_deletes += session.query(SliceServiceModel)\
+                .filter(and_(
+                    SliceServiceModel.slice_uuid == slice_uuid,
+                    SliceServiceModel.service_uuid.in_(slice_service_uuids)
+                )).delete()
+        if len(slice_subslice_uuids) > 0:
+            num_deletes += session.query(SliceSubSliceModel)\
+                .filter_by(and_(
+                    SliceSubSliceModel.slice_uuid == slice_uuid,
+                    SliceSubSliceModel.subslice_uuid.in_(slice_subslice_uuids)
+                )).delete()
+        if len(slice_endpoint_uuids) > 0:
+            num_deletes += session.query(SliceEndPointModel)\
+                .filter_by(and_(
+                    SliceEndPointModel.slice_uuid == slice_uuid,
+                    SliceEndPointModel.endpoint_uuid.in_(slice_endpoint_uuids)
+                )).delete()
         return num_deletes > 0
 
     updated = run_transaction(sessionmaker(bind=db_engine), callback)
-- 
GitLab