diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java
index 3e13dc6d5d..796632f3f4 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java
@@ -56,12 +56,15 @@
import org.commonjava.maven.galley.transport.htcli.UploadMetadataGenTransferDecorator;
import org.commonjava.storage.pathmapped.config.DefaultPathMappedStorageConfig;
import org.commonjava.storage.pathmapped.config.PathMappedStorageConfig;
+import org.commonjava.storage.pathmapped.core.S3PhysicalStore;
import org.commonjava.storage.pathmapped.pathdb.datastax.CassandraPathDB;
import org.commonjava.storage.pathmapped.metrics.MeasuredPathDB;
import org.commonjava.storage.pathmapped.spi.PathDB;
import org.commonjava.storage.pathmapped.spi.PhysicalStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.model.S3Exception;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
@@ -236,7 +239,21 @@ protected boolean isMetricEnabled( String metricName )
}
File legacyBaseDir = config.getLegacyStorageBasedir();
- PhysicalStore physicalStore = new LegacyReadonlyPhysicalStore( storeRoot, legacyBaseDir );
+ String storageType = config.getStorageType();
+ PhysicalStore physicalStore;
+ if (DefaultStorageProviderConfiguration.STORAGE_NFS.equals( storageType )) {
+ physicalStore = new LegacyReadonlyPhysicalStore( storeRoot, legacyBaseDir );
+ } else {
+ try {
+ S3Client s3Client = S3Client.builder().build();
+ String bucketName = config.getBucketName();
+ physicalStore = new S3PhysicalStore( s3Client, bucketName );
+ } catch ( S3Exception e ) {
+ logger.error( "Ran into error during storage init e: ", e);
+ throw e;
+ }
+
+ }
logger.info( "Create cacheProviderFactory, pathDB: {}, physicalStore: {}", pathDB, physicalStore );
PathMappedCacheProviderConfig cacheProviderConfig =
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/conf/DefaultStorageProviderConfiguration.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/conf/DefaultStorageProviderConfiguration.java
index bd20c192bc..4882694de0 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/conf/DefaultStorageProviderConfiguration.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/conf/DefaultStorageProviderConfiguration.java
@@ -38,6 +38,12 @@ public class DefaultStorageProviderConfiguration
public static final String STORAGE_DIR = "indy.storage.dir";
+ public static final String STORAGE_S3 = "s3";
+
+ public static final String STORAGE_NFS = "nfs";
+
+ public static final String DEFAULT_STORAGE = STORAGE_NFS;
+
public static final String NFS_STORAGE_DIR = "indy.storage.nfs.dir";
private File storageBasedir;
@@ -46,6 +52,10 @@ public class DefaultStorageProviderConfiguration
private File nfsStoreBasedir;
+ private String storageType;
+
+ private String bucketName;
+
private boolean storageTimeoutEnabled = true;
private boolean physicalFileExistenceCheckEnabled = false;
@@ -220,6 +230,31 @@ public void setLegacyStorageBasedir( File legacyStorageBasedir )
this.legacyStorageBasedir = legacyStorageBasedir;
}
+ public String getStorageType()
+ {
+ if (storageType == null) {
+ return DEFAULT_STORAGE;
+ }
+ return storageType;
+ }
+
+ @ConfigName( "storage.type" )
+ public void setStorageType( String storageType )
+ {
+ this.storageType = storageType;
+ }
+
+ public String getBucketName()
+ {
+ return bucketName;
+ }
+
+ @ConfigName( "storage.bucket.name" )
+ public void setBucketName( String bucketName )
+ {
+ this.bucketName = bucketName;
+ }
+
public boolean isStorageTimeoutEnabled()
{
return storageTimeoutEnabled;
diff --git a/pom.xml b/pom.xml
index fd8e768004..d0fae384a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
1.19.0-alpha
3.7.1.0
3.11.3
- 2.6
+ 2.7-SNAPSHOT
1.9.1
1.6.6
1.16