Skip to content

Commit 1a18b8d

Browse files
add gcp token support
1 parent 949c6e7 commit 1a18b8d

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

rust/lance-io/src/object_store.rs

+12-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use lance_core::utils::tokio::get_num_compute_intensive_cpus;
2222
use object_store::aws::{
2323
AmazonS3ConfigKey, AwsCredential as ObjectStoreAwsCredential, AwsCredentialProvider,
2424
};
25-
use object_store::gcp::GoogleCloudStorageBuilder;
25+
use object_store::gcp::{GoogleCloudStorageBuilder, GcpCredential};
2626
use object_store::{
2727
aws::AmazonS3Builder, azure::AzureConfigKey, gcp::GoogleConfigKey, local::LocalFileSystem,
2828
memory::InMemory, CredentialProvider, Error as ObjectStoreError, Result as ObjectStoreResult,
@@ -840,6 +840,10 @@ impl StorageOptions {
840840
})
841841
.collect()
842842
}
843+
844+
pub fn get(&self, key: &str) -> Option<&String> {
845+
self.0.get(key)
846+
}
843847
}
844848

845849
impl From<HashMap<String, String>> for StorageOptions {
@@ -932,6 +936,13 @@ async fn configure_store(
932936
for (key, value) in storage_options.as_gcs_options() {
933937
builder = builder.with_config(key, value);
934938
}
939+
let token_key = "google_storage_token";
940+
if let Some(storage_token) = storage_options.get(token_key) {
941+
let credential = GcpCredential { bearer: storage_token.to_string() };
942+
let credential_provider =
943+
Arc::new(StaticCredentialProvider::new(credential)) as _;
944+
builder = builder.with_credentials(credential_provider);
945+
}
935946
let store = builder.build()?;
936947
let store = Arc::new(store).traced();
937948

0 commit comments

Comments
 (0)