@@ -21,7 +21,7 @@ use lance_core::utils::tokio::get_num_compute_intensive_cpus;
21
21
use object_store:: aws:: {
22
22
AmazonS3ConfigKey , AwsCredential as ObjectStoreAwsCredential , AwsCredentialProvider ,
23
23
} ;
24
- use object_store:: gcp:: GoogleCloudStorageBuilder ;
24
+ use object_store:: gcp:: { GcpCredential , GoogleCloudStorageBuilder } ;
25
25
use object_store:: {
26
26
aws:: AmazonS3Builder , azure:: AzureConfigKey , gcp:: GoogleConfigKey , local:: LocalFileSystem ,
27
27
memory:: InMemory , CredentialProvider , Error as ObjectStoreError , Result as ObjectStoreResult ,
@@ -839,6 +839,10 @@ impl StorageOptions {
839
839
} )
840
840
. collect ( )
841
841
}
842
+
843
+ pub fn get ( & self , key : & str ) -> Option < & String > {
844
+ self . 0 . get ( key)
845
+ }
842
846
}
843
847
844
848
impl From < HashMap < String , String > > for StorageOptions {
@@ -929,6 +933,14 @@ async fn configure_store(
929
933
for ( key, value) in storage_options. as_gcs_options ( ) {
930
934
builder = builder. with_config ( key, value) ;
931
935
}
936
+ let token_key = "google_storage_token" ;
937
+ if let Some ( storage_token) = storage_options. get ( token_key) {
938
+ let credential = GcpCredential {
939
+ bearer : storage_token. to_string ( ) ,
940
+ } ;
941
+ let credential_provider = Arc :: new ( StaticCredentialProvider :: new ( credential) ) as _ ;
942
+ builder = builder. with_credentials ( credential_provider) ;
943
+ }
932
944
let store = builder. build ( ) ?;
933
945
let store = Arc :: new ( store) . traced ( ) ;
934
946
0 commit comments