X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/47f421fa743e2b4b09d4f0fbfbead00545e327d4..7e5633a7611e686389fa0c6b9f8b47db492e5bb7:/src/store/advanced-tab/advanced-tab.tsx?ds=sidebyside diff --git a/src/store/advanced-tab/advanced-tab.tsx b/src/store/advanced-tab/advanced-tab.tsx index 3d10e54a..ac088f02 100644 --- a/src/store/advanced-tab/advanced-tab.tsx +++ b/src/store/advanced-tab/advanced-tab.tsx @@ -3,32 +3,32 @@ // SPDX-License-Identifier: AGPL-3.0 import { Dispatch } from 'redux'; -import { dialogActions } from '~/store/dialog/dialog-actions'; -import { RootState } from '~/store/store'; -import { ResourceKind, extractUuidKind } from '~/models/resource'; -import { getResource } from '~/store/resources/resources'; -import { GroupContentsResourcePrefix } from '~/services/groups-service/groups-service'; -import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; -import { ContainerRequestResource } from '~/models/container-request'; -import { CollectionResource } from '~/models/collection'; -import { ProjectResource } from '~/models/project'; -import { ServiceRepository } from '~/services/services'; -import { FilterBuilder } from '~/services/api/filter-builder'; -import { ListResults } from '~/services/common-service/common-service'; -import { RepositoryResource } from '~/models/repositories'; -import { SshKeyResource } from '~/models/ssh-key'; -import { VirtualMachinesResource } from '~/models/virtual-machines'; -import { UserResource } from '~/models/user'; -import { LinkResource } from '~/models/link'; -import { KeepServiceResource } from '~/models/keep-services'; -import { NodeResource } from '~/models/node'; -import { ApiClientAuthorization } from '~/models/api-client-authorization'; -import * as React from 'react'; +import { dialogActions } from 'store/dialog/dialog-actions'; +import { RootState } from 'store/store'; +import { ResourceKind, extractUuidKind } from 'models/resource'; +import { getResource } from 'store/resources/resources'; +import { GroupContentsResourcePrefix } from 'services/groups-service/groups-service'; +import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions'; +import { ContainerRequestResource } from 'models/container-request'; +import { CollectionResource } from 'models/collection'; +import { ProjectResource } from 'models/project'; +import { ServiceRepository } from 'services/services'; +import { FilterBuilder } from 'services/api/filter-builder'; +import { ListResults } from 'services/common-service/common-service'; +import { RepositoryResource } from 'models/repositories'; +import { SshKeyResource } from 'models/ssh-key'; +import { VirtualMachinesResource } from 'models/virtual-machines'; +import { UserResource } from 'models/user'; +import { LinkResource } from 'models/link'; +import { KeepServiceResource } from 'models/keep-services'; +import { ApiClientAuthorization } from 'models/api-client-authorization'; +import React from 'react'; export const ADVANCED_TAB_DIALOG = 'advancedTabDialog'; -interface AdvancedTabDialogData { - apiResponse: any; +export interface AdvancedTabDialogData { + uuid: string; + apiResponse: JSX.Element; metadata: ListResults | string; user: UserResource | string; pythonHeader: string; @@ -76,7 +76,6 @@ enum ResourcePrefix { AUTORIZED_KEYS = 'authorized_keys', VIRTUAL_MACHINES = 'virtual_machines', KEEP_SERVICES = 'keep_services', - COMPUTE_NODES = 'nodes', USERS = 'users', API_CLIENT_AUTHORIZATIONS = 'api_client_authorizations', LINKS = 'links' @@ -92,11 +91,6 @@ enum UserData { USERNAME = 'username' } -enum ComputeNodeData { - COMPUTE_NODE = 'node', - PROPERTIES = 'properties' -} - enum ApiClientAuthorizationsData { API_CLIENT_AUTHORIZATION = 'api_client_authorization', DEFAULT_OWNER_UUID = 'default_owner_uuid' @@ -107,9 +101,9 @@ enum LinkData { PROPERTIES = 'properties' } -type AdvanceResourceKind = CollectionData | ProcessData | ProjectData | RepositoryData | SshKeyData | VirtualMachineData | KeepServiceData | ComputeNodeData | ApiClientAuthorizationsData | UserData | LinkData; +type AdvanceResourceKind = CollectionData | ProcessData | ProjectData | RepositoryData | SshKeyData | VirtualMachineData | KeepServiceData | ApiClientAuthorizationsData | UserData | LinkData; type AdvanceResourcePrefix = GroupContentsResourcePrefix | ResourcePrefix; -type AdvanceResponseData = ContainerRequestResource | ProjectResource | CollectionResource | RepositoryResource | SshKeyResource | VirtualMachinesResource | KeepServiceResource | NodeResource | ApiClientAuthorization | UserResource | LinkResource | undefined; +type AdvanceResponseData = ContainerRequestResource | ProjectResource | CollectionResource | RepositoryResource | SshKeyResource | VirtualMachinesResource | KeepServiceResource | ApiClientAuthorization | UserResource | LinkResource | undefined; export const openAdvancedTabDialog = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { @@ -225,7 +219,7 @@ export const openAdvancedTabDialog = (uuid: string) => const data = getResource(uuid)(resources); const metadata = await services.linkService.list({ filters: new FilterBuilder() - .addEqual('headUuid', uuid) + .addEqual('head_uuid', uuid) .getFilters() }); const advanceDataUser = advancedTabData({ @@ -241,22 +235,6 @@ export const openAdvancedTabDialog = (uuid: string) => }); dispatch(initAdvancedTabDialog(advanceDataUser)); break; - case ResourceKind.NODE: - const computeNodeResources = getState().resources; - const dataComputeNode = getResource(uuid)(computeNodeResources); - const advanceDataComputeNode = advancedTabData({ - uuid, - metadata: '', - user: '', - apiResponseKind: computeNodeApiResponse, - data: dataComputeNode, - resourceKind: ComputeNodeData.COMPUTE_NODE, - resourcePrefix: ResourcePrefix.COMPUTE_NODES, - resourceKindProperty: ComputeNodeData.PROPERTIES, - property: dataComputeNode ? dataComputeNode.properties : {} - }); - dispatch(initAdvancedTabDialog(advanceDataComputeNode)); - break; case ResourceKind.API_CLIENT_AUTHORIZATION: const apiClientAuthorizationResources = getState().resources; const dataApiClientAuthorization = getResource(uuid)(apiClientAuthorizationResources); @@ -300,11 +278,11 @@ const getDataForAdvancedTab = (uuid: string) => const data = getResource(uuid)(resources); const metadata = await services.linkService.list({ filters: new FilterBuilder() - .addEqual('headUuid', uuid) + .addEqual('head_uuid', uuid) .getFilters() }); - const user = metadata.itemsAvailable && await services.userService.get(metadata.items[0].tailUuid || ''); - return { data, metadata, user }; + + return { data, metadata }; }; const initAdvancedTabDialog = (data: AdvancedTabDialogData) => dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data }); @@ -313,7 +291,7 @@ interface AdvancedTabData { uuid: string; metadata: ListResults | string; user: UserResource | string; - apiResponseKind: any; + apiResponseKind: (apiResponse) => JSX.Element; data: AdvanceResponseData; resourceKind: AdvanceResourceKind; resourcePrefix: AdvanceResourcePrefix; @@ -393,7 +371,7 @@ const stringify = (item: string | null | number | boolean) => const stringifyObject = (item: any) => JSON.stringify(item, null, 2) || 'null'; -const containerRequestApiResponse = (apiResponse: ContainerRequestResource) => { +const containerRequestApiResponse = (apiResponse: ContainerRequestResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, description, properties, state, requestingContainerUuid, containerUuid, containerCountMax, mounts, runtimeConstraints, containerImage, environment, cwd, command, outputPath, priority, expiresAt, filters, containerCount, useExisting, schedulingParameters, outputUuid, logUuid, outputName, outputTtl } = apiResponse; @@ -413,7 +391,7 @@ const containerRequestApiResponse = (apiResponse: ContainerRequestResource) => { "container_count_max": ${stringify(containerCountMax)}, "mounts": ${stringifyObject(mounts)}, "runtime_constraints": ${stringifyObject(runtimeConstraints)}, -"container_image": "${stringify(containerImage)}", +"container_image": ${stringify(containerImage)}, "environment": ${stringifyObject(environment)}, "cwd": ${stringify(cwd)}, "command": ${stringifyObject(command)}, @@ -432,10 +410,10 @@ const containerRequestApiResponse = (apiResponse: ContainerRequestResource) => { return {'{'} {response} {'\n'} {'}'}; }; -const collectionApiResponse = (apiResponse: CollectionResource) => { +const collectionApiResponse = (apiResponse: CollectionResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, description, properties, portableDataHash, replicationDesired, - replicationConfirmedAt, replicationConfirmed, manifestText, deleteAt, trashAt, isTrashed, storageClassesDesired, - storageClassesConfirmed, storageClassesConfirmedAt, currentVersionUuid, version, preserveVersion } = apiResponse; + replicationConfirmedAt, replicationConfirmed, deleteAt, trashAt, isTrashed, storageClassesDesired, + storageClassesConfirmed, storageClassesConfirmedAt, currentVersionUuid, version, preserveVersion, fileCount, fileSizeTotal } = apiResponse; const response = ` "uuid": "${uuid}", "owner_uuid": "${ownerUuid}", @@ -447,7 +425,6 @@ const collectionApiResponse = (apiResponse: CollectionResource) => { "replication_desired": ${stringify(replicationDesired)}, "replication_confirmed_at": ${stringify(replicationConfirmedAt)}, "replication_confirmed": ${stringify(replicationConfirmed)}, -"manifest_text": ${stringify(manifestText)}, "name": ${stringify(name)}, "description": ${stringify(description)}, "properties": ${stringifyObject(properties)}, @@ -457,15 +434,17 @@ const collectionApiResponse = (apiResponse: CollectionResource) => { "storage_classes_desired": ${JSON.stringify(storageClassesDesired, null, 2)}, "storage_classes_confirmed": ${JSON.stringify(storageClassesConfirmed, null, 2)}, "storage_classes_confirmed_at": ${stringify(storageClassesConfirmedAt)}, -"currentVersionUuid": ${stringify(currentVersionUuid)}, +"current_version_uuid": ${stringify(currentVersionUuid)}, "version": ${version}, -"preserveVersion": ${preserveVersion}`; +"preserve_version": ${preserveVersion}, +"file_count": ${fileCount}, +"file_size_total": ${fileSizeTotal}`; return {'{'} {response} {'\n'} {'}'}; }; -const groupRequestApiResponse = (apiResponse: ProjectResource) => { - const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, description, groupClass, trashAt, isTrashed, deleteAt, properties, writeableBy } = apiResponse; +const groupRequestApiResponse = (apiResponse: ProjectResource): JSX.Element => { + const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, description, groupClass, trashAt, isTrashed, deleteAt, properties, writableBy } = apiResponse; const response = ` "uuid": "${uuid}", "owner_uuid": "${ownerUuid}", @@ -480,12 +459,12 @@ const groupRequestApiResponse = (apiResponse: ProjectResource) => { "is_trashed": ${stringify(isTrashed)}, "delete_at": ${stringify(deleteAt)}, "properties": ${stringifyObject(properties)}, -"witable_by": ${stringifyObject(writeableBy)}`; +"writable_by": ${stringifyObject(writableBy)}`; return {'{'} {response} {'\n'} {'}'}; }; -const repositoryApiResponse = (apiResponse: RepositoryResource) => { +const repositoryApiResponse = (apiResponse: RepositoryResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, cloneUrls } = apiResponse; const response = ` "uuid": "${uuid}", @@ -500,7 +479,7 @@ const repositoryApiResponse = (apiResponse: RepositoryResource) => { return {'{'} {response} {'\n'} {'}'}; }; -const sshKeyApiResponse = (apiResponse: SshKeyResource) => { +const sshKeyApiResponse = (apiResponse: SshKeyResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, authorizedUserUuid, expiresAt } = apiResponse; const response = ` "uuid": "${uuid}", @@ -515,7 +494,7 @@ const sshKeyApiResponse = (apiResponse: SshKeyResource) => { return {'{'} {response} {'\n'} {'}'}; }; -const virtualMachineApiResponse = (apiResponse: VirtualMachinesResource) => { +const virtualMachineApiResponse = (apiResponse: VirtualMachinesResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, hostname } = apiResponse; const response = ` "hostname": ${stringify(hostname)}, @@ -530,7 +509,7 @@ const virtualMachineApiResponse = (apiResponse: VirtualMachinesResource) => { return {'{'} {response} {'\n'} {'}'}; }; -const keepServiceApiResponse = (apiResponse: KeepServiceResource) => { +const keepServiceApiResponse = (apiResponse: KeepServiceResource): JSX.Element => { const { uuid, readOnly, serviceHost, servicePort, serviceSslFlag, serviceType, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid @@ -551,10 +530,10 @@ const keepServiceApiResponse = (apiResponse: KeepServiceResource) => { return {'{'} {response} {'\n'} {'}'}; }; -const userApiResponse = (apiResponse: UserResource) => { +const userApiResponse = (apiResponse: UserResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, - email, firstName, lastName, identityUrl, isActive, isAdmin, prefs, defaultOwnerUuid, username + email, firstName, lastName, username, isActive, isAdmin, prefs, defaultOwnerUuid, } = apiResponse; const response = ` "uuid": "${uuid}", @@ -566,7 +545,7 @@ const userApiResponse = (apiResponse: UserResource) => { "email": "${email}", "first_name": "${firstName}", "last_name": "${stringify(lastName)}", -"identity_url": "${identityUrl}", +"username": "${username}", "is_active": "${isActive}, "is_admin": "${isAdmin}, "prefs": "${stringifyObject(prefs)}, @@ -576,33 +555,7 @@ const userApiResponse = (apiResponse: UserResource) => { return {'{'} {response} {'\n'} {'}'}; }; -const computeNodeApiResponse = (apiResponse: NodeResource) => { - const { - uuid, slotNumber, hostname, domain, ipAddress, firstPingAt, lastPingAt, jobUuid, - ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, - properties, info - } = apiResponse; - const response = ` -"uuid": "${uuid}", -"owner_uuid": "${ownerUuid}", -"modified_by_client_uuid": ${stringify(modifiedByClientUuid)}, -"modified_by_user_uuid": ${stringify(modifiedByUserUuid)}, -"modified_at": ${stringify(modifiedAt)}, -"created_at": "${createdAt}", -"slot_number": "${stringify(slotNumber)}", -"hostname": "${stringify(hostname)}", -"domain": "${stringify(domain)}", -"ip_address": "${stringify(ipAddress)}", -"first_ping_at": "${stringify(firstPingAt)}", -"last_ping_at": "${stringify(lastPingAt)}", -"job_uuid": "${stringify(jobUuid)}", -"properties": "${JSON.stringify(properties, null, 2)}", -"info": "${JSON.stringify(info, null, 2)}"`; - - return {'{'} {response} {'\n'} {'}'}; -}; - -const apiClientAuthorizationApiResponse = (apiResponse: ApiClientAuthorization) => { +const apiClientAuthorizationApiResponse = (apiResponse: ApiClientAuthorization): JSX.Element => { const { uuid, ownerUuid, apiToken, apiClientId, userId, createdByIpAddress, lastUsedByIpAddress, lastUsedAt, expiresAt, defaultOwnerUuid, scopes, updatedAt, createdAt @@ -625,7 +578,7 @@ const apiClientAuthorizationApiResponse = (apiResponse: ApiClientAuthorization) return {'{'} {response} {'\n'} {'}'}; }; -const linkApiResponse = (apiResponse: LinkResource) => { +const linkApiResponse = (apiResponse: LinkResource): JSX.Element => { const { uuid, name, headUuid, properties, headKind, tailUuid, tailKind, linkClass, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid @@ -646,4 +599,4 @@ const linkApiResponse = (apiResponse: LinkResource) => { "properties": "${JSON.stringify(properties, null, 2)}"`; return {'{'} {response} {'\n'} {'}'}; -}; \ No newline at end of file +};