Skip to content

GUI for managing document storage tiers (glacier ↔ standard) #995

Description

@stevevanhooser

Summary

Now that the file-tier control API is live end-to-end (MATLAB wrappers in #990; server in Waltham-Data-Science/ndi-cloud-node #139 + #140), users can move the files backing their documents between S3 storage classes — STANDARD, STANDARD_IA, GLACIER_IR, GLACIER, DEEP_ARCHIVE — programmatically. What's missing is a user-facing GUI that makes this discoverable and safe for people who aren't scripting from MATLAB.

What the GUI should let a user do

  • Browse the documents in one of their datasets and see each document's current storage tier (via ndi.cloud.api.files.getFileTier, which surfaces the cached filesTier.dominant + per-tier counts).
  • Select a set of documents (multi-select) and choose a target tier for them.
  • Kick off a file-tier job (ndi.cloud.api.files.setFileTier) and see live progress against the returned jobId — polling getFileTierJob or using waitForFileTierJob.
  • Get feedback on terminal outcomes: completed, failed, superseded — including any per-file errors the server reports.
  • Understand the two-phase nature of a thaw (freeze is quick; thawing from GLACIER/DEEP_ARCHIVE takes minutes to hours before the file is warm again) so the GUI doesn't imply the operation is instantaneous.
  • Optionally: a "freeze everything in this dataset" convenience path with a confirmation step, since a whole-dataset freeze is a common bulk operation.

Underlying pieces already in place

  • ndi.cloud.api.files.setFileTier(datasetId, docIds, targetTier) — kicks off a job.
  • ndi.cloud.api.files.getFileTierJob(jobId) — one poll.
  • ndi.cloud.api.files.waitForFileTierJob(jobId, ...) — poll-with-backoff until terminal.
  • ndi.cloud.api.files.getFileTier(datasetId, docId) — read a document's current tier summary.

Design doc: manuals/file-tier-design.md in ndi-cloud-node.

Not in scope of this issue

Four server-side follow-ups are already known and will be tracked separately: dry-run preview (?dryRun=true), job cancellation, cost / bytes estimator, and upload-time ?storageClass=. A GUI can be built on top of what's live today; those will slot in as the API grows.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions