mirror of https://github.com/apache/jclouds.git
Add listStoragePools to the GlobalStoragePool[Async]Client, with tests
This commit is contained in:
parent
ec46da8b59
commit
c000db598d
|
@ -18,9 +18,19 @@
|
|||
*/
|
||||
package org.jclouds.cloudstack.features;
|
||||
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import org.jclouds.cloudstack.domain.StoragePool;
|
||||
import org.jclouds.cloudstack.filters.QuerySigner;
|
||||
import org.jclouds.cloudstack.options.ListStoragePoolsOptions;
|
||||
import org.jclouds.rest.annotations.QueryParams;
|
||||
import org.jclouds.rest.annotations.RequestFilters;
|
||||
import org.jclouds.rest.annotations.SelectJson;
|
||||
import org.jclouds.rest.annotations.SkipEncoding;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Provides asynchronous access to CloudStack storage pool features.
|
||||
|
@ -32,5 +42,13 @@ import org.jclouds.rest.annotations.RequestFilters;
|
|||
*/
|
||||
@RequestFilters(QuerySigner.class)
|
||||
@QueryParams(keys = "response", values = "json")
|
||||
@SkipEncoding({'/'})
|
||||
public interface GlobalStoragePoolAsyncClient {
|
||||
|
||||
@GET
|
||||
@QueryParams(keys = "command", values = "listStoragePools")
|
||||
@SelectJson("storagepool")
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
ListenableFuture<Set<StoragePool>> listStoragePools(ListStoragePoolsOptions... options);
|
||||
|
||||
}
|
||||
|
|
|
@ -18,8 +18,11 @@
|
|||
*/
|
||||
package org.jclouds.cloudstack.features;
|
||||
|
||||
import org.jclouds.cloudstack.domain.StoragePool;
|
||||
import org.jclouds.cloudstack.options.ListStoragePoolsOptions;
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
|
@ -32,4 +35,7 @@ import java.util.concurrent.TimeUnit;
|
|||
*/
|
||||
@Timeout(duration = 60, timeUnit = TimeUnit.SECONDS)
|
||||
public interface GlobalStoragePoolClient {
|
||||
|
||||
Set<StoragePool> listStoragePools(ListStoragePoolsOptions... options);
|
||||
|
||||
}
|
||||
|
|
|
@ -19,9 +19,15 @@
|
|||
package org.jclouds.cloudstack.features;
|
||||
|
||||
import com.google.inject.TypeLiteral;
|
||||
import org.jclouds.cloudstack.options.ListStoragePoolsOptions;
|
||||
import org.jclouds.http.HttpRequest;
|
||||
import org.jclouds.http.functions.ParseFirstJsonValueNamed;
|
||||
import org.jclouds.rest.functions.MapHttp4xxCodesToExceptions;
|
||||
import org.jclouds.rest.internal.RestAnnotationProcessor;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code GlobalStoragePoolAsyncClient}
|
||||
*
|
||||
|
@ -30,6 +36,38 @@ import org.testng.annotations.Test;
|
|||
@Test(groups = "unit", testName = "GlobalStoragePoolAsyncClientTest")
|
||||
public class GlobalStoragePoolAsyncClientTest extends BaseCloudStackAsyncClientTest<GlobalStoragePoolAsyncClient> {
|
||||
|
||||
public void testListStoragePools() throws NoSuchMethodException {
|
||||
Method method = GlobalStoragePoolAsyncClient.class.getMethod("listStoragePools", ListStoragePoolsOptions[].class);
|
||||
HttpRequest httpRequest = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(httpRequest,
|
||||
"GET http://localhost:8080/client/api?response=json&command=listStoragePools HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class);
|
||||
assertSaxResponseParserClassEquals(method, null);
|
||||
assertExceptionParserClassEquals(method, MapHttp4xxCodesToExceptions.class);
|
||||
|
||||
checkFilters(httpRequest);
|
||||
}
|
||||
|
||||
public void testListStoragePoolsOptions() throws NoSuchMethodException {
|
||||
Method method = GlobalStoragePoolAsyncClient.class.getMethod("listStoragePools", ListStoragePoolsOptions[].class);
|
||||
HttpRequest httpRequest = processor.createRequest(method, ListStoragePoolsOptions.Builder.clusterId(3).id(4).ipAddress("192.168.42.42").keyword("fred").name("bob").path("/mnt/store42").podId(4).zoneId(5));
|
||||
|
||||
assertRequestLineEquals(httpRequest,
|
||||
"GET http://localhost:8080/client/api?response=json&command=listStoragePools&clusterid=3&id=4&ipaddress=192.168.42.42&keyword=fred&name=bob&path=/mnt/store42&podid=4&zoneid=5 HTTP/1.1");
|
||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
||||
assertPayloadEquals(httpRequest, null, null, false);
|
||||
|
||||
assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class);
|
||||
assertSaxResponseParserClassEquals(method, null);
|
||||
assertExceptionParserClassEquals(method, MapHttp4xxCodesToExceptions.class);
|
||||
|
||||
checkFilters(httpRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TypeLiteral<RestAnnotationProcessor<GlobalStoragePoolAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<GlobalStoragePoolAsyncClient>>() {
|
||||
|
|
|
@ -18,8 +18,14 @@
|
|||
*/
|
||||
package org.jclouds.cloudstack.features;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import org.jclouds.cloudstack.domain.StoragePool;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code GlobalStoragePoolClient}
|
||||
*
|
||||
|
@ -28,4 +34,29 @@ import org.testng.annotations.Test;
|
|||
@Test(groups = "live", singleThreaded = true, testName = "GlobalStoragePoolClientLiveTest")
|
||||
public class GlobalStoragePoolClientLiveTest extends BaseCloudStackClientLiveTest {
|
||||
|
||||
@Test(groups = "live", enabled = true)
|
||||
public void testListStoragePools() throws Exception {
|
||||
assertTrue(globalAdminEnabled, "Test cannot run without global admin identity and credentials");
|
||||
|
||||
Set<StoragePool> result = globalAdminClient.getStoragePoolClient().listStoragePools();
|
||||
assertNotNull(result);
|
||||
assertTrue(result.size() > 0);
|
||||
for(StoragePool pool : result) {
|
||||
assertTrue(pool.getId() > 0);
|
||||
assertFalse(Strings.isNullOrEmpty(pool.getName()));
|
||||
assertFalse(Strings.isNullOrEmpty(pool.getPath()));
|
||||
assertNotNull(pool.getTags());
|
||||
assertTrue(pool.getState() != StoragePool.State.UNRECOGNIZED);
|
||||
assertTrue(pool.getType() != StoragePool.Type.UNRECOGNIZED);
|
||||
assertTrue(pool.getZoneId() > 0);
|
||||
assertFalse(Strings.isNullOrEmpty(pool.getZoneName()));
|
||||
assertTrue(pool.getPodId() > 0);
|
||||
assertFalse(Strings.isNullOrEmpty(pool.getPodName()));
|
||||
assertTrue(pool.getClusterId() > 0);
|
||||
assertFalse(Strings.isNullOrEmpty(pool.getClusterName()));
|
||||
assertNotNull(pool.getCreated());
|
||||
assertTrue(pool.getDiskSizeTotal() > 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue