Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restore dry run option #448

Open
rocketraman opened this issue Apr 23, 2018 · 12 comments
Open

Restore dry run option #448

rocketraman opened this issue Apr 23, 2018 · 12 comments
Labels

Comments

@rocketraman
Copy link

A dry-run option to ark restore create would be awesome. Given that we don't have any easy visibility as to what's inside a backup (as per issue #396), doing a partial ark restore is a bit of a hair-raising / fingers crossed event, because the right values we need to pass to --include-resources and --exclude-resources are not at all obvious.

A dry-run option would list the actions ark would take / print the restore log given the parameters passed but not actually carry out those actions.

@rosskukulinski
Copy link
Contributor

Yes! I think this is a critical user experience feature enhancement. This should probably be in-place before we go to implement #469.

@rosskukulinski
Copy link
Contributor

I'd like to propose having a backup AND restore --dry-run that will capture what resources are to be captured/snapshotted. Having the backup dry-run would help in situations like #579 where the user isn't sure what will be backed up.

@ncdc
Copy link
Contributor

ncdc commented Jun 25, 2018

We need to figure out the technical means to achieve this. Ark is not an aggregated API server, so we don't have the ability for the ark client to send an http request to the Ark pod and wait for a response. What we've done so far for "request-response" semantics is to have the ark client create a custom resource and wait for it to be updated with the response information.

There is a challenge to that: etcd has a 1.5MB entry size limit, so we can't stuff the response into a single custom resource because we might exceed the limit.

We could upload the response to object storage, then give the client a pre-signed URL it can use to download the response (this is what we do for ark backup download, ark backup logs, and ark restore logs).

We could create a series of small custom resources (like Kubernetes events). I worry, though, that that might overwhelm the apiserver at some point.

@rosskukulinski rosskukulinski added Enhancement/User End-User Enhancement to Velero and removed Enhancement labels Jun 25, 2018
@ncdc
Copy link
Contributor

ncdc commented Nov 5, 2018

Including info from 654: make sure we allow plugins to know if this is a dry-run or real.

@jprecuch
Copy link

jprecuch commented Oct 8, 2020

@ncdc is there something for this ongoing or was this put on hold for now?

@ncdc
Copy link
Contributor

ncdc commented Oct 8, 2020

Hi @jprecuch, I don't work on Velero any more, but @carlisia @nrb @ashish-amarnath should be able to help you

@xeor
Copy link

xeor commented Nov 30, 2021

Still no way to know what you are about to restore before you restore..?

@BalintSzigeti
Copy link

yep, that feature would be welcomed..... :/

@reasonerjt reasonerjt added kind/requirement Reviewed Q2 2021 Enhancement/User End-User Enhancement to Velero and removed Enhancement/User End-User Enhancement to Velero Reviewed Q2 2021 labels May 20, 2022
@mackmittal-wk
Copy link

any updates on this feature request ?

@mattiasnensen
Copy link

This feature is very much wanted by me as well.

@kaovilai
Copy link
Contributor

kaovilai commented Apr 4, 2024

I can be assigned this issue

@sseago
Copy link
Collaborator

sseago commented May 1, 2024

I think restore is more critical than backup, since on the backup side, just doing a backup with snapshotVolumes=false will get you the same thing as long as the object list isn't huge (if obj list is huge you don't want the tarball).

Rough idea of how I think this should work:

  • for restore:
    • add new spec.DryRun field
    • if dry run, skip create/patch calls on resource
    • if dry run, skip PVR/DataDownload creation
    • plugins should be encouraged to check restore.spec.dryRun before directly creating anything in-cluster (normal modifying yaml/returning additional items, and passing withoutRestore should happen as usual, since that affects what resources would have been restored) .
    • upload log, results, and restore resource list as usual
  • for backup:
    • add new spec.DryRun field
  • if dry run, don't create/upload resource tarball
    • if dry run, skip PVR/DataDownload creation
    • plugins should be encouraged to check backup.spec.dryRun before directly creating anything in-cluster (normal modifying yaml/returning additional items should happen as usual, since that affects what resources would have been backed up) .
    • upload log, results, and bakcup resource list as usual

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests