Browse Source

feat: support remove single item from installation task

Yeuoly 9 months ago
parent
commit
ffdc6f5c60

+ 15 - 0
api/controllers/console/workspace/plugin.py

@@ -266,6 +266,20 @@ class PluginDeleteInstallTaskApi(Resource):
         return {"success": PluginService.delete_install_task(tenant_id, task_id)}
 
 
+class PluginDeleteInstallTaskItemApi(Resource):
+    @setup_required
+    @login_required
+    @account_initialization_required
+    def post(self, task_id: str, identifier: str):
+        user = current_user
+        if not user.is_admin_or_owner:
+            raise Forbidden()
+
+        tenant_id = user.current_tenant_id
+
+        return {"success": PluginService.delete_install_task_item(tenant_id, task_id, identifier)}
+
+
 class PluginUninstallApi(Resource):
     @setup_required
     @login_required
@@ -296,4 +310,5 @@ api.add_resource(PluginFetchManifestApi, "/workspaces/current/plugin/fetch-manif
 api.add_resource(PluginFetchInstallTasksApi, "/workspaces/current/plugin/tasks")
 api.add_resource(PluginFetchInstallTaskApi, "/workspaces/current/plugin/tasks/<task_id>")
 api.add_resource(PluginDeleteInstallTaskApi, "/workspaces/current/plugin/tasks/<task_id>/delete")
+api.add_resource(PluginDeleteInstallTaskItemApi, "/workspaces/current/plugin/tasks/<task_id>/delete/<identifier>")
 api.add_resource(PluginUninstallApi, "/workspaces/current/plugin/uninstall")

+ 10 - 0
api/core/plugin/manager/plugin.py

@@ -103,6 +103,16 @@ class PluginInstallationManager(BasePluginManager):
             bool,
         )
 
+    def delete_plugin_installation_task_item(self, tenant_id: str, task_id: str, identifier: str) -> bool:
+        """
+        Delete a plugin installation task item.
+        """
+        return self._request_with_plugin_daemon_response(
+            "POST",
+            f"plugin/{tenant_id}/management/install/tasks/{task_id}/delete/{identifier}",
+            bool,
+        )
+
     def fetch_plugin_manifest(self, tenant_id: str, plugin_unique_identifier: str) -> PluginDeclaration:
         """
         Fetch a plugin manifest.

+ 5 - 0
api/services/plugin/plugin_service.py

@@ -67,6 +67,11 @@ class PluginService:
         return manager.delete_plugin_installation_task(tenant_id, task_id)
 
     @staticmethod
+    def delete_install_task_item(tenant_id: str, task_id: str, identifier: str) -> bool:
+        manager = PluginInstallationManager()
+        return manager.delete_plugin_installation_task_item(tenant_id, task_id, identifier)
+
+    @staticmethod
     def upload_pkg(tenant_id: str, pkg: bytes, verify_signature: bool = False) -> PluginUploadResponse:
         """
         Upload plugin package files