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

Suggested actions on selection of several Blob Containers in the desktop version off the app #7697

Open
5 tasks
eugen-nw opened this issue Jan 23, 2024 · 6 comments
Assignees
Labels
💡 feature request New feature or request ❔ investigate We need to look into this further
Milestone

Comments

@eugen-nw
Copy link

eugen-nw commented Jan 23, 2024

Preflight Checklist

Storage Explorer Version

1.32.1 (96)

Regression From

No response

Architecture

x64

Storage Explorer Build Number

20231114.10

Platform

Windows

OS Version

Windows 11

Bug Description

I need to have the ability to delete a group of selected Blob Containers in one action.

Steps to Reproduce

  1. Within Storage Explorer pick a Storage instance
  2. Go to the Blob Containers node, right click -> View All
  3. In the right hand side panel select some Containers

Actual Experience

In response to selecting several Containers, both the toolbar Delete button and the right click Delete option are grayed out.

Expected Experience

Once I select > 1 Container, the toolbar's button and right click's Delete are grayed out so I have to delete them one by one. The Azure Portal version allows the functionality, the desktop application does not. Yet, I cannot use the Azure Portal version application to delete Containers in my local computer's Storage Emulator instance.

Additional Context

Also, it would be nice upon selection of several Containers to be able to:

  • download them all at once
  • in response to a Properties action to obtain their combined size
  • copy and paste Containers across Azure Storages. Really useful for replicating production data to local or test environments

Operations to enable multi-selection

  1. 💡 feature request ⚙️ blobs
    craxal
  2. 💡 feature request ⚙️ blobs
    craxal
  3. 💡 feature request ⚙️ blobs
    craxal
  4. 💡 feature request ⚙️ blobs
    craxal
  5. 💡 feature request ⚙️ blobs
    craxal
@craxal craxal added the 💡 feature request New feature or request label Jan 24, 2024
@MRayermannMSFT MRayermannMSFT added this to the 1.34.0 milestone Jan 29, 2024
@MRayermannMSFT MRayermannMSFT added the ❔ investigate We need to look into this further label Jan 29, 2024
@MRayermannMSFT
Copy link
Member

MRayermannMSFT commented Feb 22, 2024

@craxal for 1.34.0 please identify and propose existing blob container level actions that could/should support being done in batch. Good candidates are feasible if there is a supporting API or if the client logic needed to do the action in batch is fairly trivial. We can then discuss the proposed actions and how they would work, and come to a consensus if they are feasible.

@craxal
Copy link
Contributor

craxal commented Apr 18, 2024

Here's a breakdown of all available blob container commands and their suitability for operating on multiple containers:

Command Good Candidate? Notes
Acquire Lease ✅ Yes Should generate one activity per container.
Break Lease ✅ Yes Should generate one activity per container.
Clone ❌ No Dialog, not suitable for multiple selection.
Copy ⚪️ Maybe Changes clipboard data format.
Copy Direct Link ❌ No Odd UX, unlikely to be useful.
Create ❌ No Dialog not suitable for multiple selection.
Delete ✅ Yes Should generate one activity per container.
Generate SAS ❌ No Dialog, not suitable for multiple selections
Manage ACL ❌ No Dialog, not suitable for multiple selections.
Manage SAP ❌ No Dialog, not suitable for multiple selections.
Open ✅ Yes Should open a new tab for each container selected.
Paste ⚪️ Maybe (see Copy)
Propagate ACL ❌ No Not easy to backtrack even for single items.
Properties ❌ No Dialog, not suitable for multiple selections.
Refresh N/A Doesn't operate on selections.
Rename ❌ No Dialog, not suitable for multiple selections.
Set Public Access ✅ Yes Should generate one activity per container.
  • There are no REST APIs available that operate on more than one container.
  • Multi-container operation candidates may involve more complex activity management, such as nesting activities in a parent activity, which will be more expensive if the original operations weren't designed to handle more than one activity.

@eugen-nw
Copy link
Author

Excelent list, well thought through. In response to properties of multiple blobs, may want to display their total size.

That’s great that there are no REST APIs that operate on multiple blobs. That would just complicate things unnecessarily.

You may want to launch the various API calls that target the selected blobs on independent threads, wait for all to finish and gather their results. If all completed successfully, the app just goes on. Otherwise perhaps report the operations that failed so the user can retry them later.

@craxal
Copy link
Contributor

craxal commented Apr 19, 2024

@eugen-nw

That’s great that there are no REST APIs that operate on multiple blobs. That would just complicate things unnecessarily.

The first note is merely mentioning that orchestrating multiple operations needs to be done client-side. The complexity is there regardless of where it is implemented. The primary concern here is that, without a REST API, it's up to the client to orchestrate everything instead of the server.

You may want to launch the various API calls that target the selected blobs on independent threads, wait for all to finish and gather their results. If all completed successfully, the app just goes on. Otherwise perhaps report the operations that failed so the user can retry them later.

The second note is more a question of presentation than orchestration. Some methods of presentation will take more time than others. It may be something we can refine over time.

@eugen-nw
Copy link
Author

For some fun, you may want try to delete one by one 50 containers. Then you’ll see why this feature request came about.

@MRayermannMSFT
Copy link
Member

I've made issues for these 4:

@craxal, can you please make issues also for "Open" and put it into Future? We can see if people ask for it. And after that you can close this issue as completed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💡 feature request New feature or request ❔ investigate We need to look into this further
Projects
None yet
Development

No branches or pull requests

4 participants