mirror of https://github.com/apache/jclouds.git
Added listFree() to IpClient/IpAsyncClient
This commit is contained in:
parent
b15ab66d30
commit
506349da67
|
@ -18,18 +18,42 @@
|
|||
*/
|
||||
package org.jclouds.glesys.features;
|
||||
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import org.jclouds.http.filters.BasicAuthentication;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
import org.jclouds.rest.annotations.RequestFilters;
|
||||
import org.jclouds.rest.annotations.SelectJson;
|
||||
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Provides asynchronous access to IP Addresses via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @see ServerClient
|
||||
* @see <a href="https://customer.glesys.com/api.php" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@RequestFilters(BasicAuthentication.class)
|
||||
public interface IpAsyncClient {
|
||||
|
||||
|
||||
/**
|
||||
* @see IpClient#listFree
|
||||
*/
|
||||
@GET
|
||||
@Path("/ip/listfree/ipversion/{ipversion}/datacenter/{datacenter}/platform/{platform}/format/json")
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@SelectJson("iplist")
|
||||
@ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
|
||||
ListenableFuture<Set<String>> listFree(@PathParam("ipversion") String ipversion,
|
||||
@PathParam("datacenter") String datacenter,
|
||||
@PathParam("platform") String platform);
|
||||
|
||||
}
|
||||
|
|
|
@ -18,19 +18,31 @@
|
|||
*/
|
||||
package org.jclouds.glesys.features;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Provides synchronous access to IP Addresses.
|
||||
* <p/>
|
||||
*
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @see IpAsyncClient
|
||||
* @see <a href="https://customer.glesys.com/api.php" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Timeout(duration = 30, timeUnit = TimeUnit.SECONDS)
|
||||
public interface IpClient {
|
||||
|
||||
|
||||
/**
|
||||
* Get a set of all IP addresses that are available and not used on any account or server.
|
||||
*
|
||||
* @param ipversion "4" or "6", for IPV4 or IPV6, respectively
|
||||
* @param datacenter the datacenter
|
||||
* @param platform the platform
|
||||
* @return a set of free IP addresses
|
||||
*/
|
||||
Set<String> listFree(String ipversion, String datacenter, String platform);
|
||||
|
||||
}
|
|
@ -21,9 +21,13 @@ package org.jclouds.glesys.features;
|
|||
import org.testng.annotations.BeforeGroups;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code IpClient}
|
||||
*
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "live", testName = "IpClientLiveTest")
|
||||
|
@ -37,4 +41,9 @@ public class IpClientLiveTest extends BaseGleSYSClientLiveTest {
|
|||
|
||||
private IpClient client;
|
||||
|
||||
@Test
|
||||
public void testListFree() throws Exception {
|
||||
Set<String> freeIps = client.listFree("4", "Falkenberg", "OpenVZ");
|
||||
assertTrue(freeIps.size() >= 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.jclouds.glesys.parse;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import org.jclouds.glesys.config.GleSYSParserModule;
|
||||
import org.jclouds.json.BaseSetParserTest;
|
||||
import org.jclouds.json.config.GsonModule;
|
||||
import org.jclouds.rest.annotations.SelectJson;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
|
||||
@Test(groups = "unit", testName = "ParseIpAddressFromResponseTest")
|
||||
public class ParseIpAddressFromResponseTest extends BaseSetParserTest<String> {
|
||||
|
||||
@Override
|
||||
public String resource() {
|
||||
return "/ip_list_free.json";
|
||||
}
|
||||
|
||||
@Override
|
||||
@SelectJson("iplist")
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public Set<String> expected() {
|
||||
return new HashSet<String>(asList("31.192.226.131", "31.192.226.133"));
|
||||
}
|
||||
|
||||
protected Injector injector() {
|
||||
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{"response":{"status":{"code":"200","text":"OK"},"ipinfo":{"ipversion":4,"datacenter":"Falkenberg","platform":"OpenVZ"},"iplist":["31.192.226.131","31.192.226.133"],"debug":{"input":{"ipversion":"4","datacenter":"Falkenberg","platform":"OpenVZ"}}}}
|
Loading…
Reference in New Issue