Merge branch '19142-avoid-loading-unneeded-mounts' into main. Closes #19142
authorStephen Smith <stephen@curii.com>
Thu, 4 Aug 2022 19:17:52 +0000 (15:17 -0400)
committerStephen Smith <stephen@curii.com>
Thu, 4 Aug 2022 19:17:52 +0000 (15:17 -0400)
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>

src/store/all-processes-panel/all-processes-panel-middleware-service.ts
src/store/processes/processes-actions.ts
src/store/project-panel/project-panel-middleware-service.ts
src/store/subprocess-panel/subprocess-panel-middleware-service.ts
src/views-components/context-menu/action-sets/process-resource-action-set.ts

index 88b64e6243955f7a9e15d90e51176efc29932bad..5d5e77d6c64396af8628fb9d1ccb9e3aef3cea83 100644 (file)
@@ -37,7 +37,11 @@ export class AllProcessesPanelMiddlewareService extends DataExplorerMiddlewareSe
             try {
                 api.dispatch(progressIndicatorActions.START_WORKING(this.getId()));
                 const processItems = await this.services.containerRequestService.list(
-                    { ...getParams(dataExplorer) });
+                    {
+                        ...getParams(dataExplorer),
+                        // Omit mounts when viewing all process panel
+                        select: containerRequestFieldsNoMounts,
+                    });
 
                 api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId()));
                 api.dispatch(resourcesActions.SET_RESOURCES(processItems.items));
@@ -62,6 +66,44 @@ export class AllProcessesPanelMiddlewareService extends DataExplorerMiddlewareSe
     }
 }
 
+// Until the api supports unselecting fields, we need a list of all other fields to omit mounts
+export const containerRequestFieldsNoMounts = [
+    "command",
+    "container_count_max",
+    "container_count",
+    "container_image",
+    "container_uuid",
+    "created_at",
+    "cwd",
+    "description",
+    "environment",
+    "etag",
+    "expires_at",
+    "filters",
+    "href",
+    "kind",
+    "log_uuid",
+    "modified_at",
+    "modified_by_client_uuid",
+    "modified_by_user_uuid",
+    "name",
+    "output_name",
+    "output_path",
+    "output_properties",
+    "output_storage_classes",
+    "output_ttl",
+    "output_uuid",
+    "owner_uuid",
+    "priority",
+    "properties",
+    "requesting_container_uuid",
+    "runtime_constraints",
+    "scheduling_parameters",
+    "state",
+    "use_existing",
+    "uuid",
+];
+
 const getParams = ( dataExplorer: DataExplorer ) => ({
     ...dataExplorerToListParams(dataExplorer),
     order: getOrder(dataExplorer),
index 213e292bfe6f047e306d20dda6ad477e7652b525..c4d421ac09d9b5719a9f8d1b8f9a00833b7cf662 100644 (file)
@@ -34,13 +34,55 @@ export const loadProcess = (containerRequestUuid: string) =>
         return { containerRequest };
     };
 
-export const loadContainers = (filters: string) =>
+export const loadContainers = (filters: string, loadMounts: boolean = true) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        const { items } = await services.containerService.list({ filters });
+        let args: any = { filters };
+        if (!loadMounts) {
+            args.select = containerFieldsNoMounts;
+        }
+        const { items } = await services.containerService.list(args);
         dispatch<any>(updateResources(items));
         return items;
     };
 
+// Until the api supports unselecting fields, we need a list of all other fields to omit mounts
+const containerFieldsNoMounts = [
+    "auth_uuid",
+    "command",
+    "container_image",
+    "created_at",
+    "cwd",
+    "environment",
+    "etag",
+    "exit_code",
+    "finished_at",
+    "gateway_address",
+    "href",
+    "interactive_session_started",
+    "kind",
+    "lock_count",
+    "locked_by_uuid",
+    "log",
+    "modified_at",
+    "modified_by_client_uuid",
+    "modified_by_user_uuid",
+    "output_path",
+    "output_properties",
+    "output_storage_classes",
+    "output",
+    "owner_uuid",
+    "priority",
+    "progress",
+    "runtime_auth_scopes",
+    "runtime_constraints",
+    "runtime_status",
+    "runtime_user_uuid",
+    "scheduling_parameters",
+    "started_at",
+    "state",
+    "uuid",
+]
+
 export const cancelRunningWorkflow = (uuid: string) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
         try {
index ccfa4fff9fcc4d0a34cef6a2af20f7388344a425..d8a5d82dc22b5444cbd4196abb18e8402b2b929c 100644 (file)
@@ -89,7 +89,8 @@ export const loadMissingProcessesInformation = (resources: GroupContentsResource
         }, []);
         if (containerUuids.length > 0) {
             await dispatch<any>(loadContainers(
-                new FilterBuilder().addIn('uuid', containerUuids).getFilters()
+                new FilterBuilder().addIn('uuid', containerUuids).getFilters(),
+                false
             ));
         }
     };
index fb9b0e8b01b4fcd50b9222ed3d46b23b3a12121e..dd303233117af7a74e77f8bfa34b381ac183ddfa 100644 (file)
@@ -24,6 +24,7 @@ import { ProcessStatusFilter, buildProcessStatusFilters } from '../resource-type
 import { ContainerRequestResource } from 'models/container-request';
 import { progressIndicatorActions } from '../progress-indicator/progress-indicator-actions';
 import { loadMissingProcessesInformation } from '../project-panel/project-panel-middleware-service';
+import { containerRequestFieldsNoMounts } from 'store/all-processes-panel/all-processes-panel-middleware-service';
 
 export class SubprocessMiddlewareService extends DataExplorerMiddlewareService {
     constructor(private services: ServiceRepository, id: string) {
@@ -40,7 +41,10 @@ export class SubprocessMiddlewareService extends DataExplorerMiddlewareService {
             api.dispatch(progressIndicatorActions.START_WORKING(this.getId()));
             const parentContainerRequest = await this.services.containerRequestService.get(parentContainerRequestUuid);
             const containerRequests = await this.services.containerRequestService.list(
-                { ...getParams(dataExplorer, parentContainerRequest) });
+                {
+                    ...getParams(dataExplorer, parentContainerRequest) ,
+                    select: containerRequestFieldsNoMounts
+                });
 
             api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId()));
             api.dispatch(updateResources(containerRequests.items));
index a7a7590148521e480a5daf7822319b9c93effecf..f17d74c92ba79dd1fd6ad68dcecf69f8ab38c2c7 100644 (file)
@@ -7,7 +7,7 @@ import { ToggleFavoriteAction } from "../actions/favorite-action";
 import { toggleFavorite } from "store/favorites/favorites-actions";
 import {
     RenameIcon, ShareIcon, MoveToIcon, CopyIcon, DetailsIcon,
-    RemoveIcon, ReRunProcessIcon, InputIcon, OutputIcon,
+    RemoveIcon, ReRunProcessIcon, OutputIcon,
     AdvancedIcon
 } from "components/icon/icon";
 import { favoritePanelActions } from "store/favorite-panel/favorite-panel-action";
@@ -18,7 +18,6 @@ import { openSharingDialog } from "store/sharing-dialog/sharing-dialog-actions";
 import { openRemoveProcessDialog, reRunProcess } from "store/processes/processes-actions";
 import { toggleDetailsPanel } from 'store/details-panel/details-panel-action';
 import { snackbarActions, SnackbarKind } from "store/snackbar/snackbar-actions";
-import { openProcessInputDialog } from "store/processes/process-input-actions";
 import { navigateToOutput } from "store/process-panel/process-panel-actions";
 import { openAdvancedTabDialog } from "store/advanced-tab/advanced-tab";
 import { TogglePublicFavoriteAction } from "../actions/public-favorite-action";
@@ -52,13 +51,6 @@ export const readOnlyProcessResourceActionSet: ContextMenuActionSet = [[
             }
         }
     },
-    {
-        icon: InputIcon,
-        name: "Inputs",
-        execute: (dispatch, resource) => {
-            dispatch<any>(openProcessInputDialog(resource.uuid));
-        }
-    },
     {
         icon: OutputIcon,
         name: "Outputs",