diff options
author | David Pilato <david@pilato.fr> | 2016-02-28 00:40:00 +0100 |
---|---|---|
committer | David Pilato <david@pilato.fr> | 2016-02-28 00:48:04 +0100 |
commit | 31b5e0888f4414b6ba863778436e177b6e82eea5 (patch) | |
tree | 0e282d01c675869d18838af8710d3d117d0407ea /plugins/repository-azure | |
parent | 08905be2cacca70bc4d4ae85408c0b07b45c4e56 (diff) |
Use an SettingsProperty enumSet
Instead of modifying methods each time we need to add a new behavior for settings, we can simply pass `SettingsProperty... properties` instead.
`SettingsProperty` could be defined then:
```
public enum SettingsProperty {
Filtered,
Dynamic,
ClusterScope,
NodeScope,
IndexScope
// HereGoesYours;
}
```
Then in setting code, it become much more flexible.
TODO: Note that we need to validate SettingsProperty which are added to a Setting as some of them might be mutually exclusive.
Diffstat (limited to 'plugins/repository-azure')
2 files changed, 20 insertions, 14 deletions
diff --git a/plugins/repository-azure/src/main/java/org/elasticsearch/cloud/azure/storage/AzureStorageService.java b/plugins/repository-azure/src/main/java/org/elasticsearch/cloud/azure/storage/AzureStorageService.java index 2c5521887d..f16e9b6729 100644 --- a/plugins/repository-azure/src/main/java/org/elasticsearch/cloud/azure/storage/AzureStorageService.java +++ b/plugins/repository-azure/src/main/java/org/elasticsearch/cloud/azure/storage/AzureStorageService.java @@ -24,6 +24,7 @@ import com.microsoft.azure.storage.StorageException; import org.elasticsearch.common.blobstore.BlobMetaData; import org.elasticsearch.common.settings.Setting; +import org.elasticsearch.common.settings.Setting.SettingsProperty; import org.elasticsearch.common.unit.ByteSizeValue; import org.elasticsearch.common.unit.TimeValue; @@ -31,7 +32,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URISyntaxException; import java.util.Map; -import java.util.function.Function; /** * Azure Storage Service interface @@ -42,19 +42,19 @@ public interface AzureStorageService { final class Storage { public static final String PREFIX = "cloud.azure.storage."; public static final Setting<TimeValue> TIMEOUT_SETTING = - Setting.timeSetting("cloud.azure.storage.timeout", TimeValue.timeValueMinutes(5), false, Setting.Scope.CLUSTER); + Setting.timeSetting("cloud.azure.storage.timeout", TimeValue.timeValueMinutes(5), false, SettingsProperty.ClusterScope); public static final Setting<String> ACCOUNT_SETTING = - Setting.simpleString("repositories.azure.account", false, Setting.Scope.CLUSTER, true); + Setting.simpleString("repositories.azure.account", false, SettingsProperty.ClusterScope, SettingsProperty.Filtered); public static final Setting<String> CONTAINER_SETTING = - Setting.simpleString("repositories.azure.container", false, Setting.Scope.CLUSTER); + Setting.simpleString("repositories.azure.container", false, SettingsProperty.ClusterScope); public static final Setting<String> BASE_PATH_SETTING = - Setting.simpleString("repositories.azure.base_path", false, Setting.Scope.CLUSTER); + Setting.simpleString("repositories.azure.base_path", false, SettingsProperty.ClusterScope); public static final Setting<String> LOCATION_MODE_SETTING = - Setting.simpleString("repositories.azure.location_mode", false, Setting.Scope.CLUSTER); + Setting.simpleString("repositories.azure.location_mode", false, SettingsProperty.ClusterScope); public static final Setting<ByteSizeValue> CHUNK_SIZE_SETTING = - Setting.byteSizeSetting("repositories.azure.chunk_size", new ByteSizeValue(-1), false, Setting.Scope.CLUSTER); + Setting.byteSizeSetting("repositories.azure.chunk_size", new ByteSizeValue(-1), false, SettingsProperty.ClusterScope); public static final Setting<Boolean> COMPRESS_SETTING = - Setting.boolSetting("repositories.azure.compress", false, false, Setting.Scope.CLUSTER); + Setting.boolSetting("repositories.azure.compress", false, false, SettingsProperty.ClusterScope); } boolean doesContainerExist(String account, LocationMode mode, String container); diff --git a/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepository.java b/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepository.java index f2773bccbb..013007a84a 100644 --- a/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepository.java +++ b/plugins/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepository.java @@ -30,6 +30,7 @@ import org.elasticsearch.common.blobstore.BlobPath; import org.elasticsearch.common.blobstore.BlobStore; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Setting; +import org.elasticsearch.common.settings.Setting.SettingsProperty; import org.elasticsearch.common.settings.SettingsException; import org.elasticsearch.common.unit.ByteSizeUnit; import org.elasticsearch.common.unit.ByteSizeValue; @@ -67,12 +68,17 @@ public class AzureRepository extends BlobStoreRepository { public final static String TYPE = "azure"; public static final class Repository { - public static final Setting<String> ACCOUNT_SETTING = Setting.simpleString("account", false, Setting.Scope.CLUSTER); - public static final Setting<String> CONTAINER_SETTING = new Setting<>("container", "elasticsearch-snapshots", Function.identity(), false, Setting.Scope.CLUSTER); - public static final Setting<String> BASE_PATH_SETTING = Setting.simpleString("base_path", false, Setting.Scope.CLUSTER); - public static final Setting<String> LOCATION_MODE_SETTING = Setting.simpleString("location_mode", false, Setting.Scope.CLUSTER); - public static final Setting<ByteSizeValue> CHUNK_SIZE_SETTING = Setting.byteSizeSetting("chunk_size", MAX_CHUNK_SIZE, false, Setting.Scope.CLUSTER); - public static final Setting<Boolean> COMPRESS_SETTING = Setting.boolSetting("compress", false, false, Setting.Scope.CLUSTER); + public static final Setting<String> ACCOUNT_SETTING = + Setting.simpleString("account", false, SettingsProperty.ClusterScope); + public static final Setting<String> CONTAINER_SETTING = + new Setting<>("container", "elasticsearch-snapshots", Function.identity(), false, SettingsProperty.ClusterScope); + public static final Setting<String> BASE_PATH_SETTING = Setting.simpleString("base_path", false, SettingsProperty.ClusterScope); + public static final Setting<String> LOCATION_MODE_SETTING = + Setting.simpleString("location_mode", false, SettingsProperty.ClusterScope); + public static final Setting<ByteSizeValue> CHUNK_SIZE_SETTING = + Setting.byteSizeSetting("chunk_size", MAX_CHUNK_SIZE, false, SettingsProperty.ClusterScope); + public static final Setting<Boolean> COMPRESS_SETTING = + Setting.boolSetting("compress", false, false, SettingsProperty.ClusterScope); } private final AzureBlobStore blobStore; |