This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch 
2413-incomplete-asset-cleanup-during-resetresource-trigger
in repository https://gitbox.apache.org/repos/asf/streampipes.git


The following commit(s) were added to 
refs/heads/2413-incomplete-asset-cleanup-during-resetresource-trigger by this 
push:
     new 3ef54bc985 fix(#2413): Add clean up for assets and extract methods of 
deletion steps
3ef54bc985 is described below

commit 3ef54bc985b40fe32dfba7ec6cea1c24388cdebd
Author: Philipp Zehnder <[email protected]>
AuthorDate: Tue Feb 20 10:38:53 2024 +0100

    fix(#2413): Add clean up for assets and extract methods of deletion steps
---
 .../apache/streampipes/rest/ResetManagement.java   | 110 +++++++++++++++------
 1 file changed, 78 insertions(+), 32 deletions(-)

diff --git 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
index 31f3fbe720..77fb60bb42 100644
--- 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
+++ 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
@@ -18,6 +18,7 @@
 
 package org.apache.streampipes.rest;
 
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
 import org.apache.streampipes.commons.exceptions.connect.AdapterException;
 import org.apache.streampipes.commons.prometheus.adapter.AdapterMetricsManager;
 import 
org.apache.streampipes.connect.management.management.AdapterMasterManagement;
@@ -36,12 +37,15 @@ import 
org.apache.streampipes.resource.management.UserResourceManager;
 import org.apache.streampipes.storage.api.IDashboardStorage;
 import org.apache.streampipes.storage.api.IDashboardWidgetStorage;
 import org.apache.streampipes.storage.api.IDataExplorerWidgetStorage;
+import org.apache.streampipes.storage.api.IGenericStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 public class ResetManagement {
   // This class should be moved into another package. I moved it here because 
I got a cyclic maven
@@ -52,28 +56,56 @@ public class ResetManagement {
 
   /**
    * Remove all configurations for this user. This includes:
-   * [pipeline assembly cache, pipelines, adapters, files]
+   * [pipeline assembly cache, pipelines, adapters, files, assets]
    *
-   * @param username
+   * @param username of the user to delte the resources
    */
   public static void reset(String username) {
     logger.info("Start resetting the system");
 
-    // Set hide tutorial to false for user
+    setHideTutorialToFalse(username);
+
+    clearPipelineAssemblyCache(username);
+
+    stopAndDeleteAllPipelines();
+
+    stopAndDeleteAllAdapters();
+
+    deleteAllFiles();
+
+    removeAllDataInDataLake();
+
+    removeAllDataViewWidgets();
+
+    removeAllDataViews();
+
+    removeAllDashboardWidgets();
+
+    removeAllDashboards();
+
+    removeAllAssets(username);
+
+    logger.info("Resetting the system was completed");
+  }
+
+  private static void setHideTutorialToFalse(String username) {
     UserResourceManager.setHideTutorial(username, true);
+  }
 
-    // Clear pipeline assembly Cache
+  private static void clearPipelineAssemblyCache(String username) {
     PipelineCacheManager.removeCachedPipeline(username);
     PipelineCanvasMetadataCacheManager.removeCanvasMetadataFromCache(username);
+  }
 
-    // Stop and delete all pipelines
+  private static void stopAndDeleteAllPipelines() {
     List<Pipeline> allPipelines = PipelineManager.getAllPipelines();
     allPipelines.forEach(pipeline -> {
       PipelineManager.stopPipeline(pipeline.getPipelineId(), true);
       PipelineManager.deletePipeline(pipeline.getPipelineId());
     });
+  }
 
-    // Stop and delete all adapters
+  private static void stopAndDeleteAllAdapters() {
     AdapterMasterManagement adapterMasterManagement = new 
AdapterMasterManagement(
         StorageDispatcher.INSTANCE.getNoSqlStore()
                                   .getAdapterInstanceStorage(),
@@ -94,14 +126,14 @@ public class ResetManagement {
     } catch (AdapterException e) {
       logger.error("Failed to load all adapter descriptions", e);
     }
+  }
 
-    // Stop and delete all files
+  private static void deleteAllFiles() {
     List<FileMetadata> allFiles = FileManager.getAllFiles();
-    allFiles.forEach(fileMetadata -> {
-      FileManager.deleteFile(fileMetadata.getFileId());
-    });
+    allFiles.forEach(fileMetadata -> 
FileManager.deleteFile(fileMetadata.getFileId()));
+  }
 
-    // Remove all data in data lake
+  private static void removeAllDataInDataLake() {
     var dataLakeStorage = StorageDispatcher.INSTANCE
         .getNoSqlStore()
         .getDataLakeStorage();
@@ -116,34 +148,48 @@ public class ResetManagement {
         
dataLakeMeasureManagement.deleteMeasurementByName(measurement.getMeasureName());
       }
     });
+  }
 
-    // Remove all data views widgets
+  private static void removeAllDataViewWidgets() {
     IDataExplorerWidgetStorage widgetStorage =
-        
StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerWidgetStorage();
-    widgetStorage.getAllDataExplorerWidgets().forEach(widget -> {
-      widgetStorage.deleteDataExplorerWidget(widget.getId());
-    });
+        StorageDispatcher.INSTANCE.getNoSqlStore()
+                                  .getDataExplorerWidgetStorage();
+    widgetStorage.getAllDataExplorerWidgets()
+                 .forEach(widget -> 
widgetStorage.deleteDataExplorerWidget(widget.getId()));
+  }
 
-    // Remove all data views
+  private static void removeAllDataViews() {
     IDashboardStorage dataLakeDashboardStorage =
-        
StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerDashboardStorage();
-    dataLakeDashboardStorage.getAllDashboards().forEach(dashboard -> {
-      dataLakeDashboardStorage.deleteDashboard(dashboard.getCouchDbId());
-    });
+        StorageDispatcher.INSTANCE.getNoSqlStore()
+                                  .getDataExplorerDashboardStorage();
+    dataLakeDashboardStorage.getAllDashboards()
+                            .forEach(dashboard -> 
dataLakeDashboardStorage.deleteDashboard(dashboard.getCouchDbId()));
+  }
 
-    // Remove all dashboard widgets
+  private static void removeAllDashboardWidgets() {
     IDashboardWidgetStorage dashobardWidgetStorage =
-        StorageDispatcher.INSTANCE.getNoSqlStore().getDashboardWidgetStorage();
-    dashobardWidgetStorage.getAllDashboardWidgets().forEach(widget -> {
-      dashobardWidgetStorage.deleteDashboardWidget(widget.getId());
-    });
+        StorageDispatcher.INSTANCE.getNoSqlStore()
+                                  .getDashboardWidgetStorage();
+    dashobardWidgetStorage.getAllDashboardWidgets()
+                          .forEach(widget -> 
dashobardWidgetStorage.deleteDashboardWidget(widget.getId()));
+  }
 
-    // Remove all dashboards
-    IDashboardStorage dashboardStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getDashboardStorage();
-    dashboardStorage.getAllDashboards().forEach(dashboard -> {
-      dashboardStorage.deleteDashboard(dashboard.getCouchDbId());
-    });
+  private static void removeAllDashboards() {
+    IDashboardStorage dashboardStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore()
+                                                                   
.getDashboardStorage();
+    dashboardStorage.getAllDashboards()
+                    .forEach(dashboard -> 
dashboardStorage.deleteDashboard(dashboard.getCouchDbId()));
+  }
 
-    logger.info("Resetting the system was completed");
+  private static void removeAllAssets(String username) {
+    IGenericStorage genericStorage = StorageDispatcher.INSTANCE.getNoSqlStore()
+                                                               
.getGenericStorage();
+    try {
+      for (Map<String, Object> asset : 
genericStorage.findAll("asset-management")) {
+        genericStorage.delete((String) asset.get("_id"), (String) 
asset.get("_rev"));
+      }
+    } catch (IOException e) {
+      throw new SpRuntimeException("Could not delete assets of user 
%s".formatted(username));
+    }
   }
 }

Reply via email to