Skip to content

Commit ff4e02a

Browse files
Introduce the Encrypted Repository behind a feature flag (#65756)
The encrypted repository plugin only adds the new repository plugin factory if the feature flag `es.encrypted_repository_feature_flag_registered` is toggled.
1 parent c9b4995 commit ff4e02a

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

x-pack/plugin/repository-encrypted/src/main/java/org/elasticsearch/repositories/encrypted/EncryptedRepositoryPlugin.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.apache.logging.log4j.LogManager;
1010
import org.apache.logging.log4j.Logger;
1111
import org.apache.logging.log4j.message.ParameterizedMessage;
12+
import org.elasticsearch.Build;
1213
import org.elasticsearch.cluster.metadata.RepositoryMetadata;
1314
import org.elasticsearch.cluster.service.ClusterService;
1415
import org.elasticsearch.common.Strings;
@@ -37,6 +38,26 @@
3738
import java.util.function.Supplier;
3839

3940
public class EncryptedRepositoryPlugin extends Plugin implements RepositoryPlugin {
41+
42+
private static final Boolean ENCRYPTED_REPOSITORY_FEATURE_FLAG_REGISTERED;
43+
static {
44+
final String property = System.getProperty("es.encrypted_repository_feature_flag_registered");
45+
if (Build.CURRENT.isSnapshot() && property != null) {
46+
throw new IllegalArgumentException("es.encrypted_repository_feature_flag_registered is only supported in non-snapshot builds");
47+
}
48+
if ("true".equals(property)) {
49+
ENCRYPTED_REPOSITORY_FEATURE_FLAG_REGISTERED = true;
50+
} else if ("false".equals(property)) {
51+
ENCRYPTED_REPOSITORY_FEATURE_FLAG_REGISTERED = false;
52+
} else if (property == null) {
53+
ENCRYPTED_REPOSITORY_FEATURE_FLAG_REGISTERED = null;
54+
} else {
55+
throw new IllegalArgumentException(
56+
"expected es.encrypted_repository_feature_flag_registered to be unset or [true|false] but was [" + property + "]"
57+
);
58+
}
59+
}
60+
4061
static final Logger logger = LogManager.getLogger(EncryptedRepositoryPlugin.class);
4162
static final String REPOSITORY_TYPE_NAME = "encrypted";
4263
// TODO add at least hdfs, and investigate supporting all `BlobStoreRepository` implementations
@@ -76,6 +97,11 @@ public Map<String, Repository.Factory> getRepositories(
7697
}
7798
final Map<String, SecureString> repositoryPasswordsMap = Map.copyOf(repositoryPasswordsMapBuilder);
7899

100+
if (false == Build.CURRENT.isSnapshot()
101+
&& (ENCRYPTED_REPOSITORY_FEATURE_FLAG_REGISTERED == null || ENCRYPTED_REPOSITORY_FEATURE_FLAG_REGISTERED == false)) {
102+
return Map.of();
103+
}
104+
79105
return Collections.singletonMap(REPOSITORY_TYPE_NAME, new Repository.Factory() {
80106

81107
@Override

0 commit comments

Comments
 (0)