Skip to content

Commit 9d63b65

Browse files
authored
CORE-586: remove list-snapshot-references on Data tab (#5354)
1 parent bbe1203 commit 9d63b65

File tree

3 files changed

+3
-89
lines changed

3 files changed

+3
-89
lines changed

src/libs/ajax/workspaces/Workspaces.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -276,20 +276,6 @@ export const Workspaces = (signal?: AbortSignal) => ({
276276
return res.json();
277277
},
278278

279-
listSnapshots: async (limit: number, offset: number) => {
280-
const res = await fetchRawls(
281-
`${root}/snapshots/v2?offset=${offset}&limit=${limit}`,
282-
_.merge(authOpts(), { signal })
283-
);
284-
// The list snapshots endpoint returns a "snapshot" field that should really be named "snapshotId". Ideally, this should be fixed in the
285-
// backend, but we've sequestered it here for now.
286-
return _.update(
287-
'gcpDataRepoSnapshots',
288-
_.map(_.update('attributes', (a) => ({ ...a, snapshotId: a.snapshot }))),
289-
await res.json()
290-
);
291-
},
292-
293279
submission: (submissionId: string) => {
294280
const submissionPath = `${root}/submissions/${submissionId}`;
295281

src/workspace-data/Data.js

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -530,13 +530,11 @@ export const WorkspaceData = _.flow(
530530
const forceRefresh = () => setRefreshKey(_.add(1));
531531
const [selectedData, setSelectedData] = useState(() => StateHistory.get().selectedData);
532532
const [entityMetadata, setEntityMetadata] = useState(() => StateHistory.get().entityMetadata);
533-
const [snapshotDetails, setSnapshotDetails] = useState(() => StateHistory.get().snapshotDetails);
534533
const [importingReference, setImportingReference] = useState(false);
535534
const [deletingReference, setDeletingReference] = useState(undefined);
536535
const [uploadingFile, setUploadingFile] = useState(false);
537536
const [uploadingWDSFile, setUploadingWDSFile] = useState(false);
538537
const [entityMetadataError, setEntityMetadataError] = useState();
539-
const [snapshotMetadataError, setSnapshotMetadataError] = useState();
540538
const [sidebarWidth, setSidebarWidth] = useState(280);
541539
const [activeCrossTableTextFilter, setActiveCrossTableTextFilter] = useState('');
542540
const [crossTableResultCounts, setCrossTableResultCounts] = useState({});
@@ -575,36 +573,8 @@ export const WorkspaceData = _.flow(
575573
}
576574
};
577575

578-
const loadSnapshotMetadata = async () => {
579-
try {
580-
setSnapshotMetadataError(false);
581-
const { gcpDataRepoSnapshots: snapshotBody } = await Workspaces(signal).workspace(namespace, name).listSnapshots(1000, 0);
582-
583-
const snapshots = _.reduce(
584-
(acc, { metadata: { name, ...metadata }, attributes }) => {
585-
return _.set([name, 'resource'], _.merge(metadata, attributes), acc);
586-
},
587-
_.pick(_.map('name', _.map('metadata', snapshotBody)), snapshotDetails) || {}, // retain entities if loaded from state history, but only for snapshots that exist
588-
_.filter((snapshot) => {
589-
// Do not display snapshot references that are only created for linking policies.
590-
const isForPolicy = snapshot.metadata.properties.some((p) => p.key === 'purpose' && p.value === 'policy');
591-
return !isForPolicy;
592-
}, snapshotBody)
593-
);
594-
595-
setSnapshotDetails(snapshots);
596-
} catch (error) {
597-
reportError('Error loading workspace snapshot data', error);
598-
setSnapshotMetadataError(true);
599-
setSelectedData(undefined);
600-
setSnapshotDetails({});
601-
}
602-
};
603-
604576
const loadMetadata = () =>
605-
isAzureWorkspace
606-
? Promise.all([refreshRunningImportJobs(), loadWdsData()])
607-
: Promise.all([loadEntityMetadata(), loadSnapshotMetadata(), refreshRunningImportJobs()]);
577+
isAzureWorkspace ? Promise.all([refreshRunningImportJobs(), loadWdsData()]) : Promise.all([loadEntityMetadata(), refreshRunningImportJobs()]);
608578

609579
const toSortedPairs = _.flow(_.toPairs, _.sortBy(_.first));
610580

@@ -638,8 +608,8 @@ export const WorkspaceData = _.flow(
638608
});
639609

640610
useEffect(() => {
641-
StateHistory.update({ entityMetadata, selectedData, snapshotDetails });
642-
}, [entityMetadata, selectedData, snapshotDetails]);
611+
StateHistory.update({ entityMetadata, selectedData });
612+
}, [entityMetadata, selectedData]);
643613

644614
useImperativeHandle(ref, () => ({
645615
refresh: () => {
@@ -651,7 +621,6 @@ export const WorkspaceData = _.flow(
651621
// Render
652622
const referenceData = getReferenceData(attributes);
653623
const sortedEntityPairs = toSortedPairs(entityMetadata);
654-
const sortedSnapshotPairs = toSortedPairs(snapshotDetails);
655624

656625
const { value: canEditWorkspace, message: editWorkspaceErrorMessage } = WorkspaceUtils.canEditWorkspace(workspace);
657626

@@ -664,7 +633,6 @@ export const WorkspaceData = _.flow(
664633
useEffect(() => {
665634
if (isAzureWorkspace) {
666635
// These aren't needed for Azure workspaces; just set them to empty objects
667-
setSnapshotMetadataError(false);
668636
setEntityMetadata({});
669637

670638
if (!wdsReady && !wdsError && !pollWdsInterval.current) {
@@ -908,26 +876,6 @@ export const WorkspaceData = _.flow(
908876
}, wdsTypes.state),
909877
]
910878
),
911-
(!_.isEmpty(sortedSnapshotPairs) || snapshotMetadataError) &&
912-
isGoogleWorkspace &&
913-
h(
914-
DataTypeSection,
915-
{
916-
title: 'Snapshots',
917-
error: snapshotMetadataError,
918-
retryFunction: loadSnapshotMetadata,
919-
},
920-
[
921-
div(
922-
// File Browser Banner
923-
{ style: { padding: '1rem', margin: '0.75rem', backgroundColor: colors.dark(0.1), borderRadius: '0.5rem' } },
924-
[
925-
span({ style: { fontWeight: 'bold' } }, ['Looking for your snapshots?']),
926-
div(['Snapshots of this type are no longer supported in this workspace. Please contact support for assistance.']),
927-
]
928-
),
929-
]
930-
),
931879
isGoogleWorkspace &&
932880
h(
933881
DataTypeSection,

src/workspace-data/Data.test.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ describe('WorkspaceData', () => {
8484
mockGetSchema: MockedFn<WorkspaceDataAjaxContract['getSchema']>;
8585
mockListAppsV2: MockedFn<AppsAjaxContract['listAppsV2']>;
8686
mockEntityMetadata: MockedFn<WorkspaceContract['entityMetadata']>;
87-
mockListSnapshots: MockedFn<WorkspaceContract['listSnapshots']>;
8887
};
8988

9089
const populatedAzureStorageOptions = {
@@ -116,14 +115,12 @@ describe('WorkspaceData', () => {
116115
const mockListAppsV2: MockedFn<AppsAjaxContract['listAppsV2']> = jest.fn();
117116
const mockDetails: MockedFn<WorkspaceContract['details']> = jest.fn();
118117
const mockEntityMetadata: MockedFn<WorkspaceContract['entityMetadata']> = jest.fn();
119-
const mockListSnapshots: MockedFn<WorkspaceContract['listSnapshots']> = jest.fn();
120118

121119
asMockedFn(Workspaces).mockReturnValue(
122120
partial<WorkspacesAjaxContract>({
123121
workspace: (_namespace, _name) =>
124122
partial<WorkspaceContract>({
125123
details: mockDetails.mockResolvedValue(workspace),
126-
listSnapshots: mockListSnapshots.mockRejectedValue({}),
127124
entityMetadata: mockEntityMetadata.mockRejectedValue([]),
128125
}),
129126
})
@@ -155,7 +152,6 @@ describe('WorkspaceData', () => {
155152
mockGetSchema,
156153
mockListAppsV2,
157154
mockEntityMetadata,
158-
mockListSnapshots,
159155
};
160156
}
161157

@@ -174,20 +170,4 @@ describe('WorkspaceData', () => {
174170
// Assert
175171
expect(mockEntityMetadata).not.toHaveBeenCalled();
176172
});
177-
178-
it('does not call Rawls for snapshot metadata on loading an azure workspace', async () => {
179-
// Arrange
180-
const { workspaceDataProps, mockListSnapshots } = setup({
181-
workspace: defaultAzureWorkspace,
182-
status: 'RUNNING',
183-
});
184-
185-
// Act
186-
await act(async () => {
187-
render(h(WorkspaceData, workspaceDataProps));
188-
});
189-
190-
// Assert
191-
expect(mockListSnapshots).not.toHaveBeenCalled();
192-
});
193173
});

0 commit comments

Comments
 (0)