Skip to content

Commit e059f6c

Browse files
authoredApr 25, 2022
Merge pull request #298 from pierre-hamy/1.1.4-ibm-sdk_FEAT
Allow using bucket endpoint having virtual-host pattern
2 parents abf8342 + 4207dda commit e059f6c

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed
 

‎README.md

+2
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ The following is the list of the Stocator configuration keys. `<service>` can be
175175
|fs.cos.`<service>`.iam.api.key | API key | mandatory | value of `apiKey`
176176
|fs.cos.`<service>`.iam.service.id | Service ID | mandatory | Value of `iam_serviceid_crn`. In certain cases you need only value after `:serviceid:`
177177
|fs.cos.`<service>`.endpoint | COS endpoint | mandatory | Open link from `endpoints` and choose relevant endpoint. This endpoint should go here
178+
|fs.cos.`<service>`.path.style.access | Path style access | Optional | true (default): Path style access <BR>false: Virtual host style access
178179
|fs.cos.`<service>`.iam.token.max.retry | IAM token retrieval max retry | Optional |
179180
|fs.cos.`<service>`.iam.token.refresh | IAM token refresh time offset in seconds | Optional |
180181

@@ -211,6 +212,7 @@ The following is the list of the configuration keys. `<service>` can be any valu
211212
|fs.cos.`<service>`.access.key | Access key | mandatory
212213
|fs.cos.`<service>`.secret.key | Secret key | mandatory
213214
|fs.cos.`<service>`.endpoint | COS endpoint | mandatory
215+
|fs.cos.`<service>`.path.style.access | Path style access | Optional
214216
|fs.cos.`<service>`.v2.signer.type | Signer type | optional
215217

216218
Example, configure `<service>` as `myCOS`:

‎src/main/java/com/ibm/stocator/fs/cos/COSAPIClient.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,14 @@
4141
import java.util.ArrayList;
4242
import java.util.HashMap;
4343
import java.util.Date;
44-
import java.util.concurrent.CountDownLatch;
4544

4645
import com.ibm.stocator.fs.cache.MemoryCache;
4746
import com.ibm.stocator.fs.common.Constants;
4847
import com.ibm.stocator.fs.common.IStoreClient;
4948
import com.ibm.stocator.fs.common.StocatorPath;
5049
import com.ibm.stocator.fs.common.Utils;
5150
import com.ibm.stocator.fs.common.exception.ConfigurationParseException;
52-
import com.ibm.stocator.fs.cos.ConfigurationHandler;
53-
import com.ibm.stocator.fs.cos.OnetimeInitialization;
5451
import com.ibm.stocator.fs.cos.auth.CustomTokenManager;
55-
import com.ibm.stocator.fs.cos.COSInputStream;
5652
import com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder;
5753
import com.ibm.cloud.objectstorage.AmazonClientException;
5854
import com.ibm.cloud.objectstorage.AmazonServiceException;
@@ -150,6 +146,8 @@
150146
import static com.ibm.stocator.fs.cos.COSConstants.BLOCK_SIZE_COS_PROPERTY;
151147
import static com.ibm.stocator.fs.cos.COSConstants.COS_BUCKET_PROPERTY;
152148
import static com.ibm.stocator.fs.cos.COSConstants.ENDPOINT_URL_COS_PROPERTY;
149+
import static com.ibm.stocator.fs.cos.COSConstants.PATH_STYLE_ACCESS;
150+
import static com.ibm.stocator.fs.cos.COSConstants.DEFAULT_PATH_STYLE_ACCESS;
153151
import static com.ibm.stocator.fs.common.Constants.FS_STOCATOR_FMODE_DATA_CLEANUP;
154152
import static com.ibm.stocator.fs.cos.COSConstants.REGION_COS_PROPERTY;
155153
import static com.ibm.stocator.fs.cos.COSConstants.V2_SIGNER_TYPE_COS_PROPERTY;
@@ -422,9 +420,13 @@ public void initiate(String scheme) throws IOException, ConfigurationParseExcept
422420
}
423421
final String serviceUrl = props.getProperty(ENDPOINT_URL_COS_PROPERTY);
424422

423+
final boolean pathStyleAccessEnabled = Utils.getBoolean(conf, FS_COS, FS_ALT_KEYS,
424+
PATH_STYLE_ACCESS, DEFAULT_PATH_STYLE_ACCESS);
425+
LOG.debug("Setting path style access to {}", pathStyleAccessEnabled);
426+
425427
AmazonS3ClientBuilder clientBuilder = AmazonS3ClientBuilder.standard()
426428
.withClientConfiguration(clientConf)
427-
.withPathStyleAccessEnabled(true)
429+
.withPathStyleAccessEnabled(pathStyleAccessEnabled)
428430
.withCredentials(credProvider);
429431

430432
if (serviceUrl != null && !serviceUrl.equals(amazonDefaultEndpoint)) {

‎src/main/java/com/ibm/stocator/fs/cos/COSConstants.java

+4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ public class COSConstants {
6767
public static final String ENDPOINT_URL = ".endpoint";
6868
public static final String ENDPOINT_URL_COS_PROPERTY = FS_COS + ENDPOINT_URL;
6969

70+
71+
public static final String PATH_STYLE_ACCESS = ".path.style.access";
72+
public static final boolean DEFAULT_PATH_STYLE_ACCESS = true;
73+
7074
public static final String BLOCK_SIZE = ".block.size";
7175
public static final String BLOCK_SIZE_COS_PROPERTY = FS_COS + BLOCK_SIZE;
7276

‎src/main/java/com/ibm/stocator/fs/cos/ConfigurationHandler.java

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import static com.ibm.stocator.fs.cos.COSConstants.SECRET_KEY_COS_PROPERTY;
3939
import static com.ibm.stocator.fs.cos.COSConstants.ENDPOINT_URL;
4040
import static com.ibm.stocator.fs.cos.COSConstants.ENDPOINT_URL_COS_PROPERTY;
41+
import static com.ibm.stocator.fs.cos.COSConstants.PATH_STYLE_ACCESS;
42+
import static com.ibm.stocator.fs.cos.COSConstants.DEFAULT_PATH_STYLE_ACCESS;
4143
import static com.ibm.stocator.fs.cos.COSConstants.AUTO_BUCKET_CREATE;
4244
import static com.ibm.stocator.fs.cos.COSConstants.AUTO_BUCKET_CREATE_COS_PROPERTY;
4345
import static com.ibm.stocator.fs.cos.COSConstants.BLOCK_SIZE;
@@ -106,6 +108,8 @@ public static Properties initialize(URI uri, Configuration conf,
106108
SECRET_KEY_COS_PROPERTY, false);
107109
Utils.updateProperty(conf, prefix, altPrefix, ENDPOINT_URL, props,
108110
ENDPOINT_URL_COS_PROPERTY, false);
111+
Utils.updateProperty(conf, prefix, altPrefix, PATH_STYLE_ACCESS, props,
112+
String.valueOf(DEFAULT_PATH_STYLE_ACCESS), false);
109113
Utils.updateProperty(conf, prefix, altPrefix, AUTO_BUCKET_CREATE, props,
110114
AUTO_BUCKET_CREATE_COS_PROPERTY, false);
111115
Utils.updateProperty(conf, prefix, altPrefix, V2_SIGNER_TYPE, props,

0 commit comments

Comments
 (0)
Please sign in to comment.