Merge branch 'pr/remove-repositories-azure-settings'

This commit is contained in:
David Pilato 2017-03-31 12:33:12 +02:00
commit f5d41dfc9d
7 changed files with 17 additions and 71 deletions

View File

@ -185,22 +185,6 @@ client.admin().cluster().preparePutRepository("my_backup_java1")
).get(); ).get();
---- ----
[[repository-azure-global-settings]]
===== Global repositories settings
All those repository settings can also be defined globally in `elasticsearch.yml` file using prefix
`repositories.azure.`. For example:
[source,yaml]
----
repositories.azure:
container: backup-container
base_path: backups
chunk_size: 32m
compress": true
----
[[repository-azure-validation]] [[repository-azure-validation]]
===== Repository validation rules ===== Repository validation rules

View File

@ -25,3 +25,11 @@ the region of the configured bucket.
* The container an azure repository is configured with will no longer be created automatically. * The container an azure repository is configured with will no longer be created automatically.
It must exist before the azure repository is created. It must exist before the azure repository is created.
* Global repositories settings you are able to set in elasticsearch config file under `repositories.azure`
name space have been removed. This includes `repositories.azure.account`, `repositories.azure.container`,
`repositories.azure.base_path`, `repositories.azure.location_mode`, `repositories.azure.chunk_size` and
`repositories.azure.compress`.
You must set those settings per repository instead. Respectively `account`, `container`, `base_path`,
`location_mode`, `chunk_size` and `compress`.
See {plugins}/repository-azure-usage.html#repository-azure-repository-settings[Azure Repository settings].

View File

@ -39,7 +39,6 @@ import java.net.URISyntaxException;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import static org.elasticsearch.cloud.azure.storage.AzureStorageSettings.getValue;
import static org.elasticsearch.repositories.azure.AzureRepository.Repository; import static org.elasticsearch.repositories.azure.AzureRepository.Repository;
public class AzureBlobStore extends AbstractComponent implements BlobStore { public class AzureBlobStore extends AbstractComponent implements BlobStore {
@ -55,11 +54,11 @@ public class AzureBlobStore extends AbstractComponent implements BlobStore {
AzureStorageService client) throws URISyntaxException, StorageException { AzureStorageService client) throws URISyntaxException, StorageException {
super(settings); super(settings);
this.client = client; this.client = client;
this.container = getValue(metadata.settings(), settings, Repository.CONTAINER_SETTING, Storage.CONTAINER_SETTING); this.container = Repository.CONTAINER_SETTING.get(metadata.settings());
this.repositoryName = metadata.name(); this.repositoryName = metadata.name();
this.accountName = getValue(metadata.settings(), settings, Repository.ACCOUNT_SETTING, Storage.ACCOUNT_SETTING); this.accountName = Repository.ACCOUNT_SETTING.get(metadata.settings());
String modeStr = getValue(metadata.settings(), settings, Repository.LOCATION_MODE_SETTING, Storage.LOCATION_MODE_SETTING); String modeStr = Repository.LOCATION_MODE_SETTING.get(metadata.settings());
if (Strings.hasLength(modeStr)) { if (Strings.hasLength(modeStr)) {
this.locMode = LocationMode.valueOf(modeStr.toUpperCase(Locale.ROOT)); this.locMode = LocationMode.valueOf(modeStr.toUpperCase(Locale.ROOT));
} else { } else {

View File

@ -21,7 +21,6 @@ package org.elasticsearch.cloud.azure.storage;
import com.microsoft.azure.storage.LocationMode; import com.microsoft.azure.storage.LocationMode;
import com.microsoft.azure.storage.StorageException; import com.microsoft.azure.storage.StorageException;
import org.elasticsearch.common.blobstore.BlobMetaData; import org.elasticsearch.common.blobstore.BlobMetaData;
import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Setting.Property; import org.elasticsearch.common.settings.Setting.Property;
@ -35,7 +34,6 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
/** /**
* Azure Storage Service interface * Azure Storage Service interface
@ -53,18 +51,6 @@ public interface AzureStorageService {
public static final Setting<TimeValue> TIMEOUT_SETTING = public static final Setting<TimeValue> TIMEOUT_SETTING =
Setting.timeSetting("cloud.azure.storage.timeout", TimeValue.timeValueMinutes(-1), Property.NodeScope); Setting.timeSetting("cloud.azure.storage.timeout", TimeValue.timeValueMinutes(-1), Property.NodeScope);
public static final Setting<String> ACCOUNT_SETTING =
Setting.simpleString("repositories.azure.account", Property.NodeScope, Property.Filtered);
public static final Setting<String> CONTAINER_SETTING =
new Setting<>("repositories.azure.container", "elasticsearch-snapshots", Function.identity(), Property.NodeScope);
public static final Setting<String> BASE_PATH_SETTING =
Setting.simpleString("repositories.azure.base_path", Property.NodeScope);
public static final Setting<String> LOCATION_MODE_SETTING =
Setting.simpleString("repositories.azure.location_mode", Property.NodeScope);
public static final Setting<ByteSizeValue> CHUNK_SIZE_SETTING =
Setting.byteSizeSetting("repositories.azure.chunk_size", MAX_CHUNK_SIZE, MIN_CHUNK_SIZE, MAX_CHUNK_SIZE, Property.NodeScope);
public static final Setting<Boolean> COMPRESS_SETTING =
Setting.boolSetting("repositories.azure.compress", false, Property.NodeScope);
} }
boolean doesContainerExist(String account, LocationMode mode, String container); boolean doesContainerExist(String account, LocationMode mode, String container);

View File

@ -25,14 +25,12 @@ import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.settings.SettingsException; import org.elasticsearch.common.settings.SettingsException;
import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.node.Node;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
public final class AzureStorageSettings { public final class AzureStorageSettings {
private static final Setting<TimeValue> TIMEOUT_SETTING = Setting.affixKeySetting(Storage.PREFIX, "timeout", private static final Setting<TimeValue> TIMEOUT_SETTING = Setting.affixKeySetting(Storage.PREFIX, "timeout",
@ -161,25 +159,4 @@ public final class AzureStorageSettings {
} }
return Collections.unmodifiableMap(secondaries); return Collections.unmodifiableMap(secondaries);
} }
public static <T> T getValue(Settings repositorySettings,
Settings globalSettings,
Setting<T> repositorySetting,
Setting<T> repositoriesSetting) {
if (repositorySetting.exists(repositorySettings)) {
return repositorySetting.get(repositorySettings);
} else {
return repositoriesSetting.get(globalSettings);
}
}
public static <T> Setting<T> getEffectiveSetting(Settings repositorySettings,
Setting<T> repositorySetting,
Setting<T> repositoriesSetting) {
if (repositorySetting.exists(repositorySettings)) {
return repositorySetting;
} else {
return repositoriesSetting;
}
}
} }

View File

@ -53,13 +53,7 @@ public class AzureRepositoryPlugin extends Plugin implements RepositoryPlugin {
@Override @Override
public List<Setting<?>> getSettings() { public List<Setting<?>> getSettings() {
return Arrays.asList(AzureStorageService.Storage.STORAGE_ACCOUNTS, return Collections.singletonList(AzureStorageService.Storage.STORAGE_ACCOUNTS);
AzureStorageService.Storage.ACCOUNT_SETTING,
AzureStorageService.Storage.COMPRESS_SETTING,
AzureStorageService.Storage.CONTAINER_SETTING,
AzureStorageService.Storage.BASE_PATH_SETTING,
AzureStorageService.Storage.CHUNK_SIZE_SETTING,
AzureStorageService.Storage.LOCATION_MODE_SETTING);
} }
@Override @Override

View File

@ -23,7 +23,6 @@ import com.microsoft.azure.storage.LocationMode;
import com.microsoft.azure.storage.StorageException; import com.microsoft.azure.storage.StorageException;
import org.elasticsearch.cloud.azure.blobstore.AzureBlobStore; import org.elasticsearch.cloud.azure.blobstore.AzureBlobStore;
import org.elasticsearch.cloud.azure.storage.AzureStorageService; import org.elasticsearch.cloud.azure.storage.AzureStorageService;
import org.elasticsearch.cloud.azure.storage.AzureStorageService.Storage;
import org.elasticsearch.cluster.metadata.MetaData; import org.elasticsearch.cluster.metadata.MetaData;
import org.elasticsearch.cluster.metadata.RepositoryMetaData; import org.elasticsearch.cluster.metadata.RepositoryMetaData;
import org.elasticsearch.common.Strings; import org.elasticsearch.common.Strings;
@ -46,7 +45,6 @@ import java.util.function.Function;
import static org.elasticsearch.cloud.azure.storage.AzureStorageService.MAX_CHUNK_SIZE; import static org.elasticsearch.cloud.azure.storage.AzureStorageService.MAX_CHUNK_SIZE;
import static org.elasticsearch.cloud.azure.storage.AzureStorageService.MIN_CHUNK_SIZE; import static org.elasticsearch.cloud.azure.storage.AzureStorageService.MIN_CHUNK_SIZE;
import static org.elasticsearch.cloud.azure.storage.AzureStorageSettings.getValue;
/** /**
* Azure file system implementation of the BlobStoreRepository * Azure file system implementation of the BlobStoreRepository
@ -86,10 +84,10 @@ public class AzureRepository extends BlobStoreRepository {
super(metadata, environment.settings(), namedXContentRegistry); super(metadata, environment.settings(), namedXContentRegistry);
blobStore = new AzureBlobStore(metadata, environment.settings(), storageService); blobStore = new AzureBlobStore(metadata, environment.settings(), storageService);
String container = getValue(metadata.settings(), settings, Repository.CONTAINER_SETTING, Storage.CONTAINER_SETTING); String container = Repository.CONTAINER_SETTING.get(metadata.settings());
this.chunkSize = getValue(metadata.settings(), settings, Repository.CHUNK_SIZE_SETTING, Storage.CHUNK_SIZE_SETTING); this.chunkSize = Repository.CHUNK_SIZE_SETTING.get(metadata.settings());
this.compress = getValue(metadata.settings(), settings, Repository.COMPRESS_SETTING, Storage.COMPRESS_SETTING); this.compress = Repository.COMPRESS_SETTING.get(metadata.settings());
String modeStr = getValue(metadata.settings(), settings, Repository.LOCATION_MODE_SETTING, Storage.LOCATION_MODE_SETTING); String modeStr = Repository.LOCATION_MODE_SETTING.get(metadata.settings());
Boolean forcedReadonly = metadata.settings().getAsBoolean("readonly", null); Boolean forcedReadonly = metadata.settings().getAsBoolean("readonly", null);
// If the user explicitly did not define a readonly value, we set it by ourselves depending on the location mode setting. // If the user explicitly did not define a readonly value, we set it by ourselves depending on the location mode setting.
// For secondary_only setting, the repository should be read only // For secondary_only setting, the repository should be read only
@ -104,7 +102,7 @@ public class AzureRepository extends BlobStoreRepository {
readonly = forcedReadonly; readonly = forcedReadonly;
} }
String basePath = getValue(metadata.settings(), settings, Repository.BASE_PATH_SETTING, Storage.BASE_PATH_SETTING); String basePath = Repository.BASE_PATH_SETTING.get(metadata.settings());
if (Strings.hasLength(basePath)) { if (Strings.hasLength(basePath)) {
// Remove starting / if any // Remove starting / if any