@@ -22,7 +22,7 @@ use lance_core::utils::tokio::get_num_compute_intensive_cpus;
22
22
use object_store:: aws:: {
23
23
AmazonS3ConfigKey , AwsCredential as ObjectStoreAwsCredential , AwsCredentialProvider ,
24
24
} ;
25
- use object_store:: gcp:: GoogleCloudStorageBuilder ;
25
+ use object_store:: gcp:: { GoogleCloudStorageBuilder , GcpCredential } ;
26
26
use object_store:: {
27
27
aws:: AmazonS3Builder , azure:: AzureConfigKey , gcp:: GoogleConfigKey , local:: LocalFileSystem ,
28
28
memory:: InMemory , CredentialProvider , Error as ObjectStoreError , Result as ObjectStoreResult ,
@@ -840,6 +840,10 @@ impl StorageOptions {
840
840
} )
841
841
. collect ( )
842
842
}
843
+
844
+ pub fn get ( & self , key : & str ) -> Option < & String > {
845
+ self . 0 . get ( key)
846
+ }
843
847
}
844
848
845
849
impl From < HashMap < String , String > > for StorageOptions {
@@ -932,6 +936,13 @@ async fn configure_store(
932
936
for ( key, value) in storage_options. as_gcs_options ( ) {
933
937
builder = builder. with_config ( key, value) ;
934
938
}
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
+ }
935
946
let store = builder. build ( ) ?;
936
947
let store = Arc :: new ( store) . traced ( ) ;
937
948
0 commit comments