fix cloud-azure to not use shaded APIs

This commit is contained in:
Simon Willnauer 2015-06-04 22:30:13 +02:00
parent 6e9080f41a
commit 43ce650755
10 changed files with 51 additions and 50 deletions

View File

@ -24,7 +24,6 @@ import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.blobstore.BlobMetaData;
import org.elasticsearch.common.blobstore.BlobPath;
import org.elasticsearch.common.blobstore.support.AbstractBlobContainer;
import org.elasticsearch.common.collect.ImmutableMap;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.Loggers;
import org.elasticsearch.repositories.RepositoryException;
@ -35,6 +34,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URISyntaxException;
import java.util.Map;
/**
*
@ -109,7 +109,7 @@ public class AzureBlobContainer extends AbstractBlobContainer {
}
@Override
public ImmutableMap<String, BlobMetaData> listBlobsByPrefix(@Nullable String prefix) throws IOException {
public Map<String, BlobMetaData> listBlobsByPrefix(@Nullable String prefix) throws IOException {
try {
return blobStore.client().listBlobsByPrefix(blobStore.container(), keyPath, prefix);
@ -138,7 +138,7 @@ public class AzureBlobContainer extends AbstractBlobContainer {
}
@Override
public ImmutableMap<String, BlobMetaData> listBlobs() throws IOException {
public Map<String, BlobMetaData> listBlobs() throws IOException {
return listBlobsByPrefix(null);
}

View File

@ -21,11 +21,11 @@ package org.elasticsearch.cloud.azure.storage;
import com.microsoft.azure.storage.StorageException;
import org.elasticsearch.common.blobstore.BlobMetaData;
import org.elasticsearch.common.collect.ImmutableMap;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URISyntaxException;
import java.util.Map;
/**
* Azure Storage Service interface
@ -58,7 +58,7 @@ public interface AzureStorageService {
OutputStream getOutputStream(String container, String blob) throws URISyntaxException, StorageException;
ImmutableMap<String,BlobMetaData> listBlobsByPrefix(String container, String keyPath, String prefix) throws URISyntaxException, StorageException;
Map<String,BlobMetaData> listBlobsByPrefix(String container, String keyPath, String prefix) throws URISyntaxException, StorageException;
void moveBlob(String container, String sourceBlob, String targetBlob) throws URISyntaxException, StorageException;
}

View File

@ -25,7 +25,7 @@ import com.microsoft.azure.storage.blob.*;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.common.blobstore.BlobMetaData;
import org.elasticsearch.common.blobstore.support.PlainBlobMetaData;
import org.elasticsearch.common.collect.ImmutableMap;
import org.elasticsearch.common.collect.MapBuilder;
import org.elasticsearch.common.component.AbstractLifecycleComponent;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
@ -35,6 +35,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
import static org.elasticsearch.cloud.azure.storage.AzureStorageService.Storage.*;
@ -168,9 +169,9 @@ public class AzureStorageServiceImpl extends AbstractLifecycleComponent<AzureSto
}
@Override
public ImmutableMap<String, BlobMetaData> listBlobsByPrefix(String container, String keyPath, String prefix) throws URISyntaxException, StorageException {
public Map<String, BlobMetaData> listBlobsByPrefix(String container, String keyPath, String prefix) throws URISyntaxException, StorageException {
logger.debug("listing container [{}], keyPath [{}], prefix [{}]", container, keyPath, prefix);
ImmutableMap.Builder<String, BlobMetaData> blobsBuilder = ImmutableMap.builder();
MapBuilder<String, BlobMetaData> blobsBuilder = MapBuilder.newMapBuilder();
CloudBlobContainer blob_container = client.getContainerReference(container);
if (blob_container.exists()) {
@ -185,7 +186,7 @@ public class AzureStorageServiceImpl extends AbstractLifecycleComponent<AzureSto
}
}
return blobsBuilder.build();
return blobsBuilder.immutableMap();
}
@Override

View File

@ -26,7 +26,6 @@ import org.elasticsearch.cloud.azure.AzureServiceRemoteException;
import org.elasticsearch.cloud.azure.management.AzureComputeService;
import org.elasticsearch.cloud.azure.management.AzureComputeService.Discovery;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.common.collect.Lists;
import org.elasticsearch.common.component.AbstractComponent;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.network.NetworkService;
@ -38,6 +37,7 @@ import org.elasticsearch.transport.TransportService;
import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Locale;
import java.util.List;
@ -157,7 +157,7 @@ public class AzureUnicastHostsProvider extends AbstractComponent implements Unic
}
logger.debug("start building nodes list using Azure API");
cachedDiscoNodes = Lists.newArrayList();
cachedDiscoNodes = new ArrayList<>();
HostedServiceGetDetailedResponse detailed;
try {

View File

@ -20,7 +20,6 @@
package org.elasticsearch.plugin.cloud.azure;
import org.elasticsearch.cloud.azure.AzureModule;
import org.elasticsearch.common.collect.Lists;
import org.elasticsearch.common.inject.Module;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.Loggers;
@ -30,6 +29,7 @@ import org.elasticsearch.repositories.RepositoriesModule;
import org.elasticsearch.repositories.azure.AzureRepository;
import org.elasticsearch.repositories.azure.AzureRepositoryModule;
import java.util.ArrayList;
import java.util.Collection;
import static org.elasticsearch.cloud.azure.AzureModule.isSnapshotReady;
@ -59,7 +59,7 @@ public class CloudAzurePlugin extends AbstractPlugin {
@Override
public Collection<Class<? extends Module>> modules() {
Collection<Class<? extends Module>> modules = Lists.newArrayList();
Collection<Class<? extends Module>> modules = new ArrayList<>();
if (AzureModule.isCloudReady(settings)) {
modules.add(AzureModule.class);
}

View File

@ -27,7 +27,6 @@ import org.elasticsearch.cluster.metadata.SnapshotId;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.blobstore.BlobPath;
import org.elasticsearch.common.blobstore.BlobStore;
import org.elasticsearch.common.collect.ImmutableList;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
@ -40,6 +39,7 @@ import org.elasticsearch.snapshots.SnapshotCreationException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
/**
* Azure file system implementation of the BlobStoreRepository
@ -139,7 +139,7 @@ public class AzureRepository extends BlobStoreRepository {
}
@Override
public void initializeSnapshot(SnapshotId snapshotId, ImmutableList<String> indices, MetaData metaData) {
public void initializeSnapshot(SnapshotId snapshotId, List<String> indices, MetaData metaData) {
try {
if (!blobStore.client().doesContainerExist(blobStore.container())) {
logger.debug("container [{}] does not exist. Creating...", blobStore.container());

View File

@ -20,9 +20,9 @@
package org.elasticsearch.cloud.azure.management;
import com.microsoft.windowsazure.management.compute.models.*;
import org.elasticsearch.common.collect.Lists;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.CollectionUtils;
import java.net.InetAddress;
@ -58,10 +58,10 @@ public class AzureComputeServiceSimpleMock extends AzureComputeServiceAbstractMo
endpoint.setName("elasticsearch");
endpoint.setVirtualIPAddress(InetAddress.getLoopbackAddress());
endpoint.setPort(9400);
instance.setInstanceEndpoints(Lists.newArrayList(endpoint));
instance.setInstanceEndpoints(CollectionUtils.newArrayList(endpoint));
deployment.setRoleInstances(Lists.newArrayList(instance));
response.setDeployments(Lists.newArrayList(deployment));
deployment.setRoleInstances(CollectionUtils.newArrayList(instance));
response.setDeployments(CollectionUtils.newArrayList(deployment));
return response;
}

View File

@ -20,13 +20,14 @@
package org.elasticsearch.cloud.azure.management;
import com.microsoft.windowsazure.management.compute.models.*;
import org.elasticsearch.common.collect.Lists;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.network.NetworkService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.CollectionUtils;
import java.net.InetAddress;
/**
* Mock Azure API with two started nodes
*/
@ -62,7 +63,7 @@ public class AzureComputeServiceTwoNodesMock extends AzureComputeServiceAbstract
endpoint1.setName("elasticsearch");
endpoint1.setVirtualIPAddress(InetAddress.getLoopbackAddress());
endpoint1.setPort(9400);
instance1.setInstanceEndpoints(Lists.newArrayList(endpoint1));
instance1.setInstanceEndpoints(CollectionUtils.newArrayList(endpoint1));
// Fake a first instance
RoleInstance instance2 = new RoleInstance();
@ -76,11 +77,11 @@ public class AzureComputeServiceTwoNodesMock extends AzureComputeServiceAbstract
endpoint2.setName("elasticsearch");
endpoint2.setVirtualIPAddress(InetAddress.getLoopbackAddress());
endpoint2.setPort(9401);
instance2.setInstanceEndpoints(Lists.newArrayList(endpoint2));
instance2.setInstanceEndpoints(CollectionUtils.newArrayList(endpoint2));
deployment.setRoleInstances(Lists.newArrayList(instance1, instance2));
deployment.setRoleInstances(CollectionUtils.newArrayList(instance1, instance2));
response.setDeployments(Lists.newArrayList(deployment));
response.setDeployments(CollectionUtils.newArrayList(deployment));
return response;
}

View File

@ -23,7 +23,7 @@ import com.microsoft.azure.storage.StorageException;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.common.blobstore.BlobMetaData;
import org.elasticsearch.common.blobstore.support.PlainBlobMetaData;
import org.elasticsearch.common.collect.ImmutableMap;
import org.elasticsearch.common.collect.MapBuilder;
import org.elasticsearch.common.component.AbstractLifecycleComponent;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
@ -90,15 +90,14 @@ public class AzureStorageServiceMock extends AbstractLifecycleComponent<AzureSto
}
@Override
public ImmutableMap<String, BlobMetaData> listBlobsByPrefix(String container, String keyPath, String prefix) {
ImmutableMap.Builder<String, BlobMetaData> blobsBuilder = ImmutableMap.builder();
public Map<String, BlobMetaData> listBlobsByPrefix(String container, String keyPath, String prefix) {
MapBuilder<String, BlobMetaData> blobsBuilder = MapBuilder.newMapBuilder();
for (String blobName : blobs.keySet()) {
if (startsWithIgnoreCase(blobName, prefix)) {
blobsBuilder.put(blobName, new PlainBlobMetaData(blobName, blobs.get(blobName).size()));
}
}
ImmutableMap<String, BlobMetaData> map = blobsBuilder.build();
return map;
return blobsBuilder.immutableMap();
}
@Override

View File

@ -33,7 +33,6 @@ import org.elasticsearch.cloud.azure.storage.AzureStorageService.Storage;
import org.elasticsearch.cloud.azure.storage.AzureStorageServiceImpl;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.base.Predicate;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.repositories.RepositoryMissingException;
import org.elasticsearch.repositories.RepositoryVerificationException;
@ -45,6 +44,7 @@ import org.elasticsearch.test.store.MockFSDirectoryService;
import org.junit.*;
import java.net.URISyntaxException;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import java.util.Locale;
@ -329,7 +329,7 @@ public class AzureSnapshotRestoreITest extends AbstractAzureTest {
* For issue #21: https://github.com/elasticsearch/elasticsearch-cloud-azure/issues/21
*/
@Test
public void testForbiddenContainerName() throws URISyntaxException, StorageException, InterruptedException {
public void testForbiddenContainerName() throws Exception {
checkContainerName("", false);
checkContainerName("es", false);
checkContainerName("-elasticsearch", false);
@ -347,18 +347,19 @@ public class AzureSnapshotRestoreITest extends AbstractAzureTest {
* @param container Container name we want to create
* @param correct Is this container name correct
*/
private void checkContainerName(final String container, final boolean correct) throws URISyntaxException, StorageException, InterruptedException {
private void checkContainerName(final String container, final boolean correct) throws Exception {
logger.info("--> creating azure repository with container name [{}]", container);
// It could happen that we just removed from a previous test the same container so
// we can not create it yet.
assertThat(awaitBusy(new Predicate<Object>() {
public boolean apply(Object obj) {
assertBusy(new Runnable() {
public void run() {
try {
PutRepositoryResponse putRepositoryResponse = client().admin().cluster().preparePutRepository("test-repo")
.setType("azure").setSettings(Settings.settingsBuilder()
.put(Repository.CONTAINER, container)
.put(Repository.BASE_PATH, getRepositoryPath())
.put(Repository.CHUNK_SIZE, randomIntBetween(1000, 10000))
.put(Repository.CONTAINER, container)
.put(Repository.BASE_PATH, getRepositoryPath())
.put(Repository.CHUNK_SIZE, randomIntBetween(1000, 10000))
).get();
client().admin().cluster().prepareDeleteRepository("test-repo").get();
try {
@ -367,16 +368,15 @@ public class AzureSnapshotRestoreITest extends AbstractAzureTest {
} catch (StorageException | URISyntaxException e) {
// We can ignore that as we just try to clean after the test
}
return (putRepositoryResponse.isAcknowledged() == correct);
assertTrue(putRepositoryResponse.isAcknowledged() == correct);
} catch (RepositoryVerificationException e) {
if (!correct) {
return true;
if (correct) {
logger.debug(" -> container is being removed. Let's wait a bit...");
fail();
}
logger.debug(" -> container is being removed. Let's wait a bit...");
return false;
}
}
}, 5, TimeUnit.MINUTES), equalTo(true));
}, 5, TimeUnit.MINUTES);
}
/**
@ -407,28 +407,28 @@ public class AzureSnapshotRestoreITest extends AbstractAzureTest {
* When a user remove a container you can not immediately create it again.
*/
@Test
public void testRemoveAndCreateContainer() throws URISyntaxException, StorageException, InterruptedException {
public void testRemoveAndCreateContainer() throws Exception {
final String container = getContainerName().concat("-testremove");
final AzureStorageService storageService = internalCluster().getInstance(AzureStorageService.class);
// It could happen that we run this test really close to a previous one
// so we might need some time to be able to create the container
assertThat(awaitBusy(new Predicate<Object>() {
public boolean apply(Object obj) {
assertBusy(new Runnable() {
public void run() {
try {
storageService.createContainer(container);
logger.debug(" -> container created...");
return true;
} catch (URISyntaxException e) {
// Incorrect URL. This should never happen.
return false;
fail();
} catch (StorageException e) {
// It could happen. Let's wait for a while.
logger.debug(" -> container is being removed. Let's wait a bit...");
return false;
fail();
}
}
}, 30, TimeUnit.SECONDS), equalTo(true));
}, 30, TimeUnit.SECONDS);
storageService.removeContainer(container);
ClusterAdminClient client = client().admin().cluster();