@@ -765,6 +765,7 @@ struct ObjectStorageDesc {
765
765
std::string& endpoint;
766
766
std::string& external_endpoint;
767
767
std::string& region;
768
+ bool & use_path_style;
768
769
};
769
770
770
771
static int extract_object_storage_info (const AlterObjStoreInfoRequest* request,
@@ -777,7 +778,7 @@ static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
777
778
msg = " s3 obj info err " + proto_to_json (*request);
778
779
return -1 ;
779
780
}
780
- auto & [ak, sk, bucket, prefix, endpoint, external_endpoint, region] = obj_desc;
781
+ auto & [ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style ] = obj_desc;
781
782
const auto & obj = request->has_obj () ? request->obj () : request->vault ().obj_info ();
782
783
// Prepare data
783
784
if (!obj.has_ak () || !obj.has_sk ()) {
@@ -803,6 +804,7 @@ static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
803
804
endpoint = obj.has_endpoint () ? obj.endpoint () : " " ;
804
805
external_endpoint = obj.has_external_endpoint () ? obj.external_endpoint () : " " ;
805
806
region = obj.has_region () ? obj.region () : " " ;
807
+ use_path_style = obj.use_path_style ();
806
808
// obj size > 1k, refuse
807
809
if (obj.ByteSizeLong () > 1024 ) {
808
810
code = MetaServiceCode::INVALID_ARGUMENT;
@@ -812,13 +814,13 @@ static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
812
814
return 0 ;
813
815
}
814
816
815
- static ObjectStoreInfoPB object_info_pb_factory (ObjectStorageDesc& obj_info ,
817
+ static ObjectStoreInfoPB object_info_pb_factory (ObjectStorageDesc& obj_desc ,
816
818
const ObjectStoreInfoPB& obj,
817
819
InstanceInfoPB& instance,
818
820
EncryptionInfoPB& encryption_info,
819
821
AkSkPair& cipher_ak_sk_pair) {
820
822
ObjectStoreInfoPB last_item;
821
- auto & [ak, sk, bucket, prefix, endpoint, external_endpoint, region] = obj_info ;
823
+ auto & [ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style ] = obj_desc ;
822
824
auto now_time = std::chrono::system_clock::now ();
823
825
uint64_t time =
824
826
std::chrono::duration_cast<std::chrono::seconds>(now_time.time_since_epoch ()).count ();
@@ -840,6 +842,7 @@ static ObjectStoreInfoPB object_info_pb_factory(ObjectStorageDesc& obj_info,
840
842
last_item.set_region (region);
841
843
last_item.set_provider (obj.provider ());
842
844
last_item.set_sse_enabled (instance.sse_enabled ());
845
+ last_item.set_use_path_style (use_path_style);
843
846
return last_item;
844
847
}
845
848
@@ -848,14 +851,15 @@ void MetaServiceImpl::alter_storage_vault(google::protobuf::RpcController* contr
848
851
AlterObjStoreInfoResponse* response,
849
852
::google::protobuf::Closure* done) {
850
853
std::string ak, sk, bucket, prefix, endpoint, external_endpoint, region;
854
+ bool use_path_style;
851
855
EncryptionInfoPB encryption_info;
852
856
AkSkPair cipher_ak_sk_pair;
853
857
RPC_PREPROCESS (alter_storage_vault);
854
858
switch (request->op ()) {
855
859
case AlterObjStoreInfoRequest::ADD_S3_VAULT:
856
860
case AlterObjStoreInfoRequest::DROP_S3_VAULT: {
857
- auto tmp_desc =
858
- ObjectStorageDesc { ak, sk, bucket, prefix, endpoint, external_endpoint, region};
861
+ auto tmp_desc = ObjectStorageDesc {
862
+ ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style };
859
863
if (0 != extract_object_storage_info (request, code, msg, tmp_desc, encryption_info,
860
864
cipher_ak_sk_pair)) {
861
865
return ;
@@ -994,8 +998,8 @@ void MetaServiceImpl::alter_storage_vault(google::protobuf::RpcController* contr
994
998
}
995
999
}
996
1000
// calc id
997
- auto tmp_tuple =
998
- ObjectStorageDesc { ak, sk, bucket, prefix, endpoint, external_endpoint, region};
1001
+ auto tmp_tuple = ObjectStorageDesc {
1002
+ ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style };
999
1003
ObjectStoreInfoPB last_item = object_info_pb_factory (tmp_tuple, obj, instance,
1000
1004
encryption_info, cipher_ak_sk_pair);
1001
1005
if (instance.storage_vault_names ().end () !=
@@ -1138,15 +1142,16 @@ void MetaServiceImpl::alter_obj_store_info(google::protobuf::RpcController* cont
1138
1142
AlterObjStoreInfoResponse* response,
1139
1143
::google::protobuf::Closure* done) {
1140
1144
std::string ak, sk, bucket, prefix, endpoint, external_endpoint, region;
1145
+ bool use_path_style;
1141
1146
EncryptionInfoPB encryption_info;
1142
1147
AkSkPair cipher_ak_sk_pair;
1143
1148
RPC_PREPROCESS (alter_obj_store_info);
1144
1149
switch (request->op ()) {
1145
1150
case AlterObjStoreInfoRequest::ADD_OBJ_INFO:
1146
1151
case AlterObjStoreInfoRequest::LEGACY_UPDATE_AK_SK:
1147
1152
case AlterObjStoreInfoRequest::UPDATE_AK_SK: {
1148
- auto tmp_desc =
1149
- ObjectStorageDesc { ak, sk, bucket, prefix, endpoint, external_endpoint, region};
1153
+ auto tmp_desc = ObjectStorageDesc {
1154
+ ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style };
1150
1155
if (0 != extract_object_storage_info (request, code, msg, tmp_desc, encryption_info,
1151
1156
cipher_ak_sk_pair)) {
1152
1157
return ;
@@ -1285,8 +1290,8 @@ void MetaServiceImpl::alter_obj_store_info(google::protobuf::RpcController* cont
1285
1290
}
1286
1291
}
1287
1292
// calc id
1288
- auto tmp_tuple =
1289
- ObjectStorageDesc { ak, sk, bucket, prefix, endpoint, external_endpoint, region};
1293
+ auto tmp_tuple = ObjectStorageDesc {
1294
+ ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style };
1290
1295
ObjectStoreInfoPB last_item = object_info_pb_factory (tmp_tuple, obj, instance,
1291
1296
encryption_info, cipher_ak_sk_pair);
1292
1297
instance.add_obj_info ()->CopyFrom (last_item);
0 commit comments