-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Allow setting VSI credentials when loading OGR/GDAL layers #57826
Conversation
Extends decode/encodeUri to handle credential options. This is modeled off the existing support for storing open options. When credential options are found in a layer's URI, we use GDAL's VSISetPathSpecificOption to set the credential option for that VSI driver and bucket. This allows per-vsi driver & bucket credentials for GDAL/OGR layers, whereas other approaches (like environment variable setting) force a single set of credentials to be used for an entire QGIS session. Requires GDAL 3.5+
- Don't rely on translated combo box strings, use item data instead - Reduce duplicate code - Add missing Hadoop option - Avoid unnecessary string list creation/splitting when populating combos
A resuable widget for configuration GDAL credential options for vsi file systems
Allows users to configure credentials to use when connecting to GDAL cloud storage providers, e.g. AWS
This pull request has been tagged for the changelog.
You can edit the description. Format available for credits
Thank you! |
@nyalldawson , that's really nice. The limited one credential (via environment variables) was making it really hard to enjoy cloud hosted datasets before |
@nyalldawson A documentation ticket will be opened at https://github.com/qgis/QGIS-Documentation when this PR is merged. Please update the description (not the comments) with helpful description and screenshot to help the work from documentors. Thank you! |
@nyalldawson |
This PR exposes the VSI credential options for user control when adding OGR vector/GDAL raster layers from the Data Source Manager, eg:
The underlying provider changes were discussed in #57801. When credential options are found in a layer's URI, we use GDAL's VSISetPathSpecificOption to set the credential option for that VSI driver and bucket.
This allows per-vsi driver & bucket credentials for layers, whereas other approaches (like environment variable setting) force a single set of credentials to be used for an entire QGIS session. (And are difficult for users to set)
I've also taken the opportunity to cleanup a bunch of code relating to how VSI protocols are exposed in GUI, and how GUIs for GDAL configuration options are dynamically created.
Requires GDAL 3.5+