mirror of https://github.com/apache/jclouds.git
removed async api from ultradns-ws
This commit is contained in:
parent
7e0c4cfb00
commit
2e64f3e156
|
@ -20,27 +20,41 @@ package org.jclouds.ultradns.ws;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
|
||||||
import org.jclouds.rest.annotations.Delegate;
|
import org.jclouds.rest.annotations.Delegate;
|
||||||
|
import org.jclouds.rest.annotations.Payload;
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
import org.jclouds.rest.annotations.PayloadParam;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.annotations.VirtualHost;
|
||||||
|
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||||
import org.jclouds.ultradns.ws.domain.Account;
|
import org.jclouds.ultradns.ws.domain.Account;
|
||||||
import org.jclouds.ultradns.ws.features.ResourceRecordApi;
|
import org.jclouds.ultradns.ws.features.ResourceRecordApi;
|
||||||
import org.jclouds.ultradns.ws.features.RoundRobinPoolApi;
|
import org.jclouds.ultradns.ws.features.RoundRobinPoolApi;
|
||||||
import org.jclouds.ultradns.ws.features.TaskApi;
|
import org.jclouds.ultradns.ws.features.TaskApi;
|
||||||
import org.jclouds.ultradns.ws.features.TrafficControllerPoolApi;
|
import org.jclouds.ultradns.ws.features.TrafficControllerPoolApi;
|
||||||
import org.jclouds.ultradns.ws.features.ZoneApi;
|
import org.jclouds.ultradns.ws.features.ZoneApi;
|
||||||
|
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
||||||
|
import org.jclouds.ultradns.ws.xml.AccountHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides access to Neustar UltraDNS via the SOAP API
|
* Provides access to Neustar UltraDNS via the SOAP API
|
||||||
* <p/>
|
* <p/>
|
||||||
*
|
*
|
||||||
* @see UltraDNSWSAsyncApi
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
|
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
||||||
|
@VirtualHost
|
||||||
public interface UltraDNSWSApi extends Closeable {
|
public interface UltraDNSWSApi extends Closeable {
|
||||||
/**
|
/**
|
||||||
* Returns the account of the current user.
|
* Returns the account of the current user.
|
||||||
*/
|
*/
|
||||||
|
@Named("getAccountsListOfUser")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(AccountHandler.class)
|
||||||
|
@Payload("<v01:getAccountsListOfUser/>")
|
||||||
Account getCurrentAccount();
|
Account getCurrentAccount();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -22,38 +22,37 @@ import java.net.URI;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.jclouds.apis.ApiMetadata;
|
import org.jclouds.apis.ApiMetadata;
|
||||||
import org.jclouds.rest.internal.BaseRestApiMetadata;
|
import org.jclouds.rest.internal.BaseHttpApiMetadata;
|
||||||
import org.jclouds.ultradns.ws.config.UltraDNSWSRestClientModule;
|
import org.jclouds.ultradns.ws.config.UltraDNSWSHttpApiModule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of {@link ApiMetadata} for Neustar's UltraDNSWS api.
|
* Implementation of {@link ApiMetadata} for Neustar's UltraDNSWS api.
|
||||||
*
|
*
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
public class UltraDNSWSApiMetadata extends BaseRestApiMetadata {
|
public class UltraDNSWSApiMetadata extends BaseHttpApiMetadata<UltraDNSWSApi> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Builder toBuilder() {
|
public Builder toBuilder() {
|
||||||
return new Builder(getApi(), getAsyncApi()).fromApiMetadata(this);
|
return new Builder().fromApiMetadata(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UltraDNSWSApiMetadata() {
|
public UltraDNSWSApiMetadata() {
|
||||||
this(new Builder(UltraDNSWSApi.class, UltraDNSWSAsyncApi.class));
|
this(new Builder());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected UltraDNSWSApiMetadata(Builder builder) {
|
protected UltraDNSWSApiMetadata(Builder builder) {
|
||||||
super(Builder.class.cast(builder));
|
super(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Properties defaultProperties() {
|
public static Properties defaultProperties() {
|
||||||
Properties properties = BaseRestApiMetadata.defaultProperties();
|
Properties properties = BaseHttpApiMetadata.defaultProperties();
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder extends BaseRestApiMetadata.Builder<Builder> {
|
public static class Builder extends BaseHttpApiMetadata.Builder<UltraDNSWSApi, Builder> {
|
||||||
|
|
||||||
protected Builder(Class<?> api, Class<?> asyncApi) {
|
protected Builder() {
|
||||||
super(api, asyncApi);
|
|
||||||
id("ultradns-ws")
|
id("ultradns-ws")
|
||||||
.name("Neustar UltraDNS WS Api")
|
.name("Neustar UltraDNS WS Api")
|
||||||
.identityName("Username")
|
.identityName("Username")
|
||||||
|
@ -62,7 +61,7 @@ public class UltraDNSWSApiMetadata extends BaseRestApiMetadata {
|
||||||
.documentation(URI.create("https://portal.ultradns.com/static/docs/NUS_API_XML_SOAP.pdf"))
|
.documentation(URI.create("https://portal.ultradns.com/static/docs/NUS_API_XML_SOAP.pdf"))
|
||||||
.defaultEndpoint("https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01")
|
.defaultEndpoint("https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01")
|
||||||
.defaultProperties(UltraDNSWSApiMetadata.defaultProperties())
|
.defaultProperties(UltraDNSWSApiMetadata.defaultProperties())
|
||||||
.defaultModule(UltraDNSWSRestClientModule.class);
|
.defaultModule(UltraDNSWSHttpApiModule.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,105 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.ultradns.ws;
|
|
||||||
|
|
||||||
import java.io.Closeable;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
|
|
||||||
import org.jclouds.rest.annotations.Delegate;
|
|
||||||
import org.jclouds.rest.annotations.Payload;
|
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
|
||||||
import org.jclouds.rest.annotations.VirtualHost;
|
|
||||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
|
||||||
import org.jclouds.ultradns.ws.domain.Account;
|
|
||||||
import org.jclouds.ultradns.ws.features.ResourceRecordAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.RoundRobinPoolAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.TaskAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.TrafficControllerPoolAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.ZoneAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
|
||||||
import org.jclouds.ultradns.ws.xml.AccountHandler;
|
|
||||||
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides access to Neustar UltraDNS via the SOAP API
|
|
||||||
* <p/>
|
|
||||||
*
|
|
||||||
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
|
||||||
* @author Adrian Cole
|
|
||||||
* @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(UltraDNSWSApi.class)} as
|
|
||||||
* {@link UltraDNSWSAsyncApi} interface will be removed in jclouds 1.7.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
|
||||||
@VirtualHost
|
|
||||||
public interface UltraDNSWSAsyncApi extends Closeable {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see UltraDNSWSApi#getCurrentAccount()
|
|
||||||
*/
|
|
||||||
@Named("getAccountsListOfUser")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(AccountHandler.class)
|
|
||||||
@Payload("<v01:getAccountsListOfUser/>")
|
|
||||||
ListenableFuture<Account> getCurrentAccount();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides asynchronous access to Zone features.
|
|
||||||
*/
|
|
||||||
@Delegate
|
|
||||||
ZoneAsyncApi getZoneApi();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides asynchronous access to Resource Record features.
|
|
||||||
*
|
|
||||||
* @param zoneName
|
|
||||||
* zoneName including a trailing dot
|
|
||||||
*/
|
|
||||||
@Delegate
|
|
||||||
ResourceRecordAsyncApi getResourceRecordApiForZone(@PayloadParam("zoneName") String zoneName);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides asynchronous access to Round Robin Pool features.
|
|
||||||
*
|
|
||||||
* @param zoneName
|
|
||||||
* zoneName including a trailing dot
|
|
||||||
*/
|
|
||||||
@Delegate
|
|
||||||
RoundRobinPoolAsyncApi getRoundRobinPoolApiForZone(@PayloadParam("zoneName") String zoneName);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides asynchronous access to Traffic Controller Pool features.
|
|
||||||
*
|
|
||||||
* @param zoneName
|
|
||||||
* zoneName including a trailing dot
|
|
||||||
*/
|
|
||||||
@Delegate
|
|
||||||
TrafficControllerPoolAsyncApi getTrafficControllerPoolApiForZone(@PayloadParam("zoneName") String zoneName);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides asynchronous access to Task features.
|
|
||||||
*/
|
|
||||||
@Delegate
|
|
||||||
TaskAsyncApi getTaskApi();
|
|
||||||
}
|
|
|
@ -18,48 +18,24 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.ultradns.ws.config;
|
package org.jclouds.ultradns.ws.config;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.jclouds.http.HttpErrorHandler;
|
import org.jclouds.http.HttpErrorHandler;
|
||||||
import org.jclouds.http.HttpRetryHandler;
|
import org.jclouds.http.HttpRetryHandler;
|
||||||
import org.jclouds.http.annotation.ClientError;
|
import org.jclouds.http.annotation.ClientError;
|
||||||
import org.jclouds.http.annotation.Redirection;
|
import org.jclouds.http.annotation.Redirection;
|
||||||
import org.jclouds.http.annotation.ServerError;
|
import org.jclouds.http.annotation.ServerError;
|
||||||
import org.jclouds.rest.ConfiguresRestClient;
|
import org.jclouds.rest.ConfiguresHttpApi;
|
||||||
import org.jclouds.rest.config.RestClientModule;
|
import org.jclouds.rest.config.HttpApiModule;
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSApi;
|
import org.jclouds.ultradns.ws.UltraDNSWSApi;
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.ResourceRecordApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.ResourceRecordAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.RoundRobinPoolApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.RoundRobinPoolAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.TaskApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.TaskAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.TrafficControllerPoolApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.TrafficControllerPoolAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.ZoneApi;
|
|
||||||
import org.jclouds.ultradns.ws.features.ZoneAsyncApi;
|
|
||||||
import org.jclouds.ultradns.ws.handlers.UltraDNSWSErrorHandler;
|
import org.jclouds.ultradns.ws.handlers.UltraDNSWSErrorHandler;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configures the UltraDNSWS connection.
|
* Configures the UltraDNSWS connection.
|
||||||
*
|
*
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
@ConfiguresRestClient
|
@ConfiguresHttpApi
|
||||||
public class UltraDNSWSRestClientModule extends RestClientModule<UltraDNSWSApi, UltraDNSWSAsyncApi> {
|
public class UltraDNSWSHttpApiModule extends HttpApiModule<UltraDNSWSApi> {
|
||||||
|
public UltraDNSWSHttpApiModule() {
|
||||||
public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()
|
|
||||||
.put(ZoneApi.class, ZoneAsyncApi.class)
|
|
||||||
.put(ResourceRecordApi.class, ResourceRecordAsyncApi.class)
|
|
||||||
.put(RoundRobinPoolApi.class, RoundRobinPoolAsyncApi.class)
|
|
||||||
.put(TrafficControllerPoolApi.class, TrafficControllerPoolAsyncApi.class)
|
|
||||||
.put(TaskApi.class, TaskAsyncApi.class).build();
|
|
||||||
|
|
||||||
public UltraDNSWSRestClientModule() {
|
|
||||||
super(DELEGATE_MAP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -18,17 +18,35 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.ultradns.ws.features;
|
package org.jclouds.ultradns.ws.features;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
|
||||||
|
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.jclouds.rest.annotations.Fallback;
|
||||||
|
import org.jclouds.rest.annotations.MapBinder;
|
||||||
|
import org.jclouds.rest.annotations.Payload;
|
||||||
|
import org.jclouds.rest.annotations.PayloadParam;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.annotations.VirtualHost;
|
||||||
|
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
||||||
|
import org.jclouds.ultradns.ws.binders.ZoneAndResourceRecordToXML;
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecord;
|
import org.jclouds.ultradns.ws.domain.ResourceRecord;
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecordMetadata;
|
import org.jclouds.ultradns.ws.domain.ResourceRecordMetadata;
|
||||||
|
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ResourceRecordListHandler;
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
import com.google.common.collect.FluentIterable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see ResourceRecordAsyncApi
|
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
||||||
|
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
|
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
||||||
|
@VirtualHost
|
||||||
public interface ResourceRecordApi {
|
public interface ResourceRecordApi {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,7 +58,12 @@ public interface ResourceRecordApi {
|
||||||
* @throws ResourceAlreadyExistsException
|
* @throws ResourceAlreadyExistsException
|
||||||
* if a record already exists with the same attrs
|
* if a record already exists with the same attrs
|
||||||
*/
|
*/
|
||||||
String create(ResourceRecord toCreate) throws ResourceAlreadyExistsException;
|
@Named("createResourceRecord")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.Guid.class)
|
||||||
|
@MapBinder(ZoneAndResourceRecordToXML.class)
|
||||||
|
String create(@PayloadParam("resourceRecord") ResourceRecord toCreate)
|
||||||
|
throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* updates an existing resource record in the zone.
|
* updates an existing resource record in the zone.
|
||||||
|
@ -53,7 +76,11 @@ public interface ResourceRecordApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the guid doesn't exist
|
* if the guid doesn't exist
|
||||||
*/
|
*/
|
||||||
void update(String guid, ResourceRecord updated) throws ResourceNotFoundException;
|
@Named("updateResourceRecord")
|
||||||
|
@POST
|
||||||
|
@MapBinder(ZoneAndResourceRecordToXML.class)
|
||||||
|
void update(@PayloadParam("guid") String guid,
|
||||||
|
@PayloadParam("resourceRecord") ResourceRecord toCreate) throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all the specified record types in the zone.
|
* Returns all the specified record types in the zone.
|
||||||
|
@ -61,6 +88,10 @@ public interface ResourceRecordApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the zone doesn't exist
|
* if the zone doesn't exist
|
||||||
*/
|
*/
|
||||||
|
@Named("getResourceRecordsOfZone")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ResourceRecordListHandler.class)
|
||||||
|
@Payload("<v01:getResourceRecordsOfZone><zoneName>{zoneName}</zoneName><rrType>0</rrType></v01:getResourceRecordsOfZone>")
|
||||||
FluentIterable<ResourceRecordMetadata> list() throws ResourceNotFoundException;
|
FluentIterable<ResourceRecordMetadata> list() throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,7 +103,12 @@ public interface ResourceRecordApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the zone doesn't exist
|
* if the zone doesn't exist
|
||||||
*/
|
*/
|
||||||
FluentIterable<ResourceRecordMetadata> listByName(String hostName) throws ResourceNotFoundException;
|
@Named("getResourceRecordsOfDNameByType")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ResourceRecordListHandler.class)
|
||||||
|
@Payload("<v01:getResourceRecordsOfDNameByType><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><rrType>0</rrType></v01:getResourceRecordsOfDNameByType>")
|
||||||
|
FluentIterable<ResourceRecordMetadata> listByName(@PayloadParam("hostName") String hostName)
|
||||||
|
throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all the specified record types in the zone with the fully
|
* Returns all the specified record types in the zone with the fully
|
||||||
|
@ -86,7 +122,12 @@ public interface ResourceRecordApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the zone doesn't exist
|
* if the zone doesn't exist
|
||||||
*/
|
*/
|
||||||
FluentIterable<ResourceRecordMetadata> listByNameAndType(String hostName, int rrType)
|
@Named("getResourceRecordsOfDNameByType")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ResourceRecordListHandler.class)
|
||||||
|
@Payload("<v01:getResourceRecordsOfDNameByType><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><rrType>{rrType}</rrType></v01:getResourceRecordsOfDNameByType>")
|
||||||
|
FluentIterable<ResourceRecordMetadata> listByNameAndType(
|
||||||
|
@PayloadParam("hostName") String hostName, @PayloadParam("rrType") int rrType)
|
||||||
throws ResourceNotFoundException;
|
throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -96,5 +137,9 @@ public interface ResourceRecordApi {
|
||||||
* the global unique identifier for the resource record {@see
|
* the global unique identifier for the resource record {@see
|
||||||
* ResourceRecordMetadata#getGuid()}
|
* ResourceRecordMetadata#getGuid()}
|
||||||
*/
|
*/
|
||||||
void delete(String guid);
|
@Named("deleteResourceRecord")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:deleteResourceRecord><transactionID /><guid>{guid}</guid></v01:deleteResourceRecord>")
|
||||||
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
|
void delete(@PayloadParam("guid") String guid);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,111 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.ultradns.ws.features;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
|
|
||||||
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
|
||||||
import org.jclouds.rest.annotations.Fallback;
|
|
||||||
import org.jclouds.rest.annotations.MapBinder;
|
|
||||||
import org.jclouds.rest.annotations.Payload;
|
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
|
||||||
import org.jclouds.rest.annotations.VirtualHost;
|
|
||||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
|
||||||
import org.jclouds.ultradns.ws.binders.ZoneAndResourceRecordToXML;
|
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecord;
|
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecordMetadata;
|
|
||||||
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ResourceRecordListHandler;
|
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi
|
|
||||||
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
|
||||||
@VirtualHost
|
|
||||||
public interface ResourceRecordAsyncApi {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi#create(ResourceRecordMetadata)
|
|
||||||
*/
|
|
||||||
@Named("createResourceRecord")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.Guid.class)
|
|
||||||
@MapBinder(ZoneAndResourceRecordToXML.class)
|
|
||||||
ListenableFuture<String> create(@PayloadParam("resourceRecord") ResourceRecord toCreate)
|
|
||||||
throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi#update(String guid, BasicResourceRecord)
|
|
||||||
*/
|
|
||||||
@Named("updateResourceRecord")
|
|
||||||
@POST
|
|
||||||
@MapBinder(ZoneAndResourceRecordToXML.class)
|
|
||||||
ListenableFuture<Void> update(@PayloadParam("guid") String guid,
|
|
||||||
@PayloadParam("resourceRecord") ResourceRecord toCreate) throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi#list()
|
|
||||||
*/
|
|
||||||
@Named("getResourceRecordsOfZone")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ResourceRecordListHandler.class)
|
|
||||||
@Payload("<v01:getResourceRecordsOfZone><zoneName>{zoneName}</zoneName><rrType>0</rrType></v01:getResourceRecordsOfZone>")
|
|
||||||
ListenableFuture<FluentIterable<ResourceRecord>> list() throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi#listByName(String)
|
|
||||||
*/
|
|
||||||
@Named("getResourceRecordsOfDNameByType")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ResourceRecordListHandler.class)
|
|
||||||
@Payload("<v01:getResourceRecordsOfDNameByType><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><rrType>0</rrType></v01:getResourceRecordsOfDNameByType>")
|
|
||||||
ListenableFuture<FluentIterable<ResourceRecordMetadata>> listByName(@PayloadParam("hostName") String hostName)
|
|
||||||
throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi#listByNameAndType(String, int)
|
|
||||||
*/
|
|
||||||
@Named("getResourceRecordsOfDNameByType")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ResourceRecordListHandler.class)
|
|
||||||
@Payload("<v01:getResourceRecordsOfDNameByType><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><rrType>{rrType}</rrType></v01:getResourceRecordsOfDNameByType>")
|
|
||||||
ListenableFuture<FluentIterable<ResourceRecordMetadata>> listByNameAndType(
|
|
||||||
@PayloadParam("hostName") String hostName, @PayloadParam("rrType") int rrType)
|
|
||||||
throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ResourceRecordApi#delete(String)
|
|
||||||
*/
|
|
||||||
@Named("deleteResourceRecord")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:deleteResourceRecord><transactionID /><guid>{guid}</guid></v01:deleteResourceRecord>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> delete(@PayloadParam("guid") String guid);
|
|
||||||
}
|
|
|
@ -18,19 +18,62 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.ultradns.ws.features;
|
package org.jclouds.ultradns.ws.features;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
|
||||||
|
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.jclouds.rest.annotations.Fallback;
|
||||||
|
import org.jclouds.rest.annotations.Payload;
|
||||||
|
import org.jclouds.rest.annotations.PayloadParam;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.annotations.VirtualHost;
|
||||||
|
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecord;
|
import org.jclouds.ultradns.ws.domain.ResourceRecord;
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecordMetadata;
|
import org.jclouds.ultradns.ws.domain.ResourceRecordMetadata;
|
||||||
import org.jclouds.ultradns.ws.domain.RoundRobinPool;
|
import org.jclouds.ultradns.ws.domain.RoundRobinPool;
|
||||||
|
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ResourceRecordListHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.RoundRobinPoolListHandler;
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
import com.google.common.collect.FluentIterable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see RoundRobinPoolAsyncApi
|
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
||||||
|
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
|
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
||||||
|
@VirtualHost
|
||||||
public interface RoundRobinPoolApi {
|
public interface RoundRobinPoolApi {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all round robin pools in the zone.
|
||||||
|
*
|
||||||
|
* @throws ResourceNotFoundException
|
||||||
|
* if the zone doesn't exist
|
||||||
|
*/
|
||||||
|
@Named("getLoadBalancingPoolsByZone")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(RoundRobinPoolListHandler.class)
|
||||||
|
@Payload("<v01:getLoadBalancingPoolsByZone><zoneName>{zoneName}</zoneName><lbPoolType>RR</lbPoolType></v01:getLoadBalancingPoolsByZone>")
|
||||||
|
FluentIterable<RoundRobinPool> list() throws ResourceNotFoundException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all records in the round robin pool.
|
||||||
|
*
|
||||||
|
* @throws ResourceNotFoundException
|
||||||
|
* if the pool doesn't exist
|
||||||
|
*/
|
||||||
|
@Named("getRRPoolRecords")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ResourceRecordListHandler.class)
|
||||||
|
@Payload("<v01:getRRPoolRecords><lbPoolId>{poolId}</lbPoolId></v01:getRRPoolRecords>")
|
||||||
|
FluentIterable<ResourceRecordMetadata> listRecords(@PayloadParam("poolId") String poolId)
|
||||||
|
throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates a round robin pool for {@code A} (ipv4) records
|
* creates a round robin pool for {@code A} (ipv4) records
|
||||||
*
|
*
|
||||||
|
@ -43,7 +86,12 @@ public interface RoundRobinPoolApi {
|
||||||
* @throws ResourceAlreadyExistsException
|
* @throws ResourceAlreadyExistsException
|
||||||
* if a pool already exists with the same attrs
|
* if a pool already exists with the same attrs
|
||||||
*/
|
*/
|
||||||
String createAPoolForHostname(String name, String hostname) throws ResourceAlreadyExistsException;
|
@Named("addRRLBPool")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.RRPoolID.class)
|
||||||
|
@Payload("<v01:addRRLBPool><transactionID /><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><description>{description}</description><poolRecordType>1</poolRecordType><rrGUID /></v01:addRRLBPool>")
|
||||||
|
String createAPoolForHostname(@PayloadParam("description") String name,
|
||||||
|
@PayloadParam("hostName") String hostname) throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* adds a new {@code A} record to the pool
|
* adds a new {@code A} record to the pool
|
||||||
|
@ -58,37 +106,12 @@ public interface RoundRobinPoolApi {
|
||||||
* @throws ResourceAlreadyExistsException
|
* @throws ResourceAlreadyExistsException
|
||||||
* if a record already exists with the same attrs
|
* if a record already exists with the same attrs
|
||||||
*/
|
*/
|
||||||
String addARecordWithAddressAndTTL(String lbPoolID, String ipv4Address, int ttl)
|
@Named("addRecordToRRPool")
|
||||||
throws ResourceAlreadyExistsException;
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.Guid.class)
|
||||||
/**
|
@Payload("<v01:addRecordToRRPool><transactionID /><roundRobinRecord lbPoolID=\"{lbPoolID}\" info1Value=\"{address}\" ZoneName=\"{zoneName}\" Type=\"1\" TTL=\"{ttl}\"/></v01:addRecordToRRPool>")
|
||||||
* creates a round robin pool for {@code AAAA} (ipv6) records
|
String addARecordWithAddressAndTTL(@PayloadParam("lbPoolID") String lbPoolID,
|
||||||
*
|
@PayloadParam("address") String ipv4Address, @PayloadParam("ttl") int ttl)
|
||||||
* @param name
|
|
||||||
* {@link RoundRobinPool#getName() name} of the RR pool
|
|
||||||
* @param hostname
|
|
||||||
* {@link RoundRobinPool#getDName() hostname} {ex.
|
|
||||||
* www.jclouds.org.}
|
|
||||||
* @return the {@code guid} of the new record
|
|
||||||
* @throws ResourceAlreadyExistsException
|
|
||||||
* if a pool already exists with the same attrs
|
|
||||||
*/
|
|
||||||
String createAAAAPoolForHostname(String name, String hostname) throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* adds a new {@code AAAA} record to the pool
|
|
||||||
*
|
|
||||||
* @param lbPoolID
|
|
||||||
* the pool to add the record to.
|
|
||||||
* @param ipv6Address
|
|
||||||
* the ipv6 address
|
|
||||||
* @param ttl
|
|
||||||
* the {@link ResourceRecord#getTTL ttl} of the record
|
|
||||||
* @return the {@code guid} of the new record
|
|
||||||
* @throws ResourceAlreadyExistsException
|
|
||||||
* if a record already exists with the same attrs
|
|
||||||
*/
|
|
||||||
String addAAAARecordWithAddressAndTTL(String lbPoolID, String ipv6Address, int ttl)
|
|
||||||
throws ResourceAlreadyExistsException;
|
throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -107,24 +130,12 @@ public interface RoundRobinPoolApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the guid doesn't exist
|
* if the guid doesn't exist
|
||||||
*/
|
*/
|
||||||
void updateRecordWithAddressAndTTL(String lbPoolID, String guid, String address, int ttl)
|
@Named("updateRecordOfRRPool")
|
||||||
throws ResourceNotFoundException;
|
@POST
|
||||||
|
@Payload("<v01:updateRecordOfRRPool><transactionID /><resourceRecord rrGuid=\"{guid}\" lbPoolID=\"{lbPoolID}\" info1Value=\"{address}\" TTL=\"{ttl}\"/></v01:updateRecordOfRRPool>")
|
||||||
/**
|
void updateRecordWithAddressAndTTL(@PayloadParam("lbPoolID") String lbPoolID,
|
||||||
* Returns all round robin pools in the zone.
|
@PayloadParam("guid") String guid, @PayloadParam("address") String ipv4Address,
|
||||||
*
|
@PayloadParam("ttl") int ttl) throws ResourceNotFoundException;
|
||||||
* @throws ResourceNotFoundException
|
|
||||||
* if the zone doesn't exist
|
|
||||||
*/
|
|
||||||
FluentIterable<RoundRobinPool> list() throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns all records in the round robin pool.
|
|
||||||
*
|
|
||||||
* @throws ResourceNotFoundException
|
|
||||||
* if the pool doesn't exist
|
|
||||||
*/
|
|
||||||
FluentIterable<ResourceRecordMetadata> listRecords(String poolId) throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deletes a specific pooled resource record
|
* deletes a specific pooled resource record
|
||||||
|
@ -133,7 +144,51 @@ public interface RoundRobinPoolApi {
|
||||||
* the global unique identifier for the resource record {@see
|
* the global unique identifier for the resource record {@see
|
||||||
* ResourceRecordMetadata#getGuid()}
|
* ResourceRecordMetadata#getGuid()}
|
||||||
*/
|
*/
|
||||||
void deleteRecord(String guid);
|
@Named("deleteRecordOfRRPool")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:deleteRecordOfRRPool><transactionID /><guid>{guid}</guid></v01:deleteRecordOfRRPool>")
|
||||||
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
|
void deleteRecord(@PayloadParam("guid") String guid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creates a round robin pool for {@code AAAA} (ipv6) records
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* {@link RoundRobinPool#getName() name} of the RR pool
|
||||||
|
* @param hostname
|
||||||
|
* {@link RoundRobinPool#getDName() hostname} {ex.
|
||||||
|
* www.jclouds.org.}
|
||||||
|
* @return the {@code guid} of the new record
|
||||||
|
* @throws ResourceAlreadyExistsException
|
||||||
|
* if a pool already exists with the same attrs
|
||||||
|
*/
|
||||||
|
@Named("addRRLBPool")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.RRPoolID.class)
|
||||||
|
@Payload("<v01:addRRLBPool><transactionID /><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><description>{description}</description><poolRecordType>28</poolRecordType><rrGUID /></v01:addRRLBPool>")
|
||||||
|
String createAAAAPoolForHostname(@PayloadParam("description") String name,
|
||||||
|
@PayloadParam("hostName") String hostname) throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* adds a new {@code AAAA} record to the pool
|
||||||
|
*
|
||||||
|
* @param lbPoolID
|
||||||
|
* the pool to add the record to.
|
||||||
|
* @param ipv6Address
|
||||||
|
* the ipv6 address
|
||||||
|
* @param ttl
|
||||||
|
* the {@link ResourceRecord#getTTL ttl} of the record
|
||||||
|
* @return the {@code guid} of the new record
|
||||||
|
* @throws ResourceAlreadyExistsException
|
||||||
|
* if a record already exists with the same attrs
|
||||||
|
*/
|
||||||
|
@Named("addRecordToRRPool")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.Guid.class)
|
||||||
|
@Payload("<v01:addRecordToRRPool><transactionID /><roundRobinRecord lbPoolID=\"{lbPoolID}\" info1Value=\"{address}\" ZoneName=\"{zoneName}\" Type=\"28\" TTL=\"{ttl}\"/></v01:addRecordToRRPool>")
|
||||||
|
String addAAAARecordWithAddressAndTTL(@PayloadParam("lbPoolID") String lbPoolID,
|
||||||
|
@PayloadParam("address") String ipv6Address, @PayloadParam("ttl") int ttl)
|
||||||
|
throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* removes a pool and all its records and probes
|
* removes a pool and all its records and probes
|
||||||
|
@ -141,5 +196,9 @@ public interface RoundRobinPoolApi {
|
||||||
* @param id
|
* @param id
|
||||||
* the {@link RoundRobinPool#getId() id}
|
* the {@link RoundRobinPool#getId() id}
|
||||||
*/
|
*/
|
||||||
void delete(String id);
|
@Named("deleteLBPool")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:deleteLBPool><transactionID /><lbPoolID>{lbPoolID}</lbPoolID><DeleteAll>Yes</DeleteAll><retainRecordId /></v01:deleteLBPool>")
|
||||||
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
|
void delete(@PayloadParam("lbPoolID") String id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,141 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.ultradns.ws.features;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
|
|
||||||
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
|
||||||
import org.jclouds.rest.annotations.Fallback;
|
|
||||||
import org.jclouds.rest.annotations.Payload;
|
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
|
||||||
import org.jclouds.rest.annotations.VirtualHost;
|
|
||||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
|
||||||
import org.jclouds.ultradns.ws.domain.ResourceRecord;
|
|
||||||
import org.jclouds.ultradns.ws.domain.RoundRobinPool;
|
|
||||||
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ResourceRecordListHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.RoundRobinPoolListHandler;
|
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi
|
|
||||||
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
|
||||||
@VirtualHost
|
|
||||||
public interface RoundRobinPoolAsyncApi {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#list()
|
|
||||||
*/
|
|
||||||
@Named("getLoadBalancingPoolsByZone")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(RoundRobinPoolListHandler.class)
|
|
||||||
@Payload("<v01:getLoadBalancingPoolsByZone><zoneName>{zoneName}</zoneName><lbPoolType>RR</lbPoolType></v01:getLoadBalancingPoolsByZone>")
|
|
||||||
ListenableFuture<FluentIterable<RoundRobinPool>> list() throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#listRecords(String)
|
|
||||||
*/
|
|
||||||
@Named("getRRPoolRecords")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ResourceRecordListHandler.class)
|
|
||||||
@Payload("<v01:getRRPoolRecords><lbPoolId>{poolId}</lbPoolId></v01:getRRPoolRecords>")
|
|
||||||
ListenableFuture<FluentIterable<ResourceRecord>> listRecords(@PayloadParam("poolId") String poolId)
|
|
||||||
throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#createAPoolForHostname
|
|
||||||
*/
|
|
||||||
@Named("addRRLBPool")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.RRPoolID.class)
|
|
||||||
@Payload("<v01:addRRLBPool><transactionID /><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><description>{description}</description><poolRecordType>1</poolRecordType><rrGUID /></v01:addRRLBPool>")
|
|
||||||
ListenableFuture<String> createAPoolForHostname(@PayloadParam("description") String name,
|
|
||||||
@PayloadParam("hostName") String hostname) throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#addARecordWithAddressAndTTL
|
|
||||||
*/
|
|
||||||
@Named("addRecordToRRPool")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.Guid.class)
|
|
||||||
@Payload("<v01:addRecordToRRPool><transactionID /><roundRobinRecord lbPoolID=\"{lbPoolID}\" info1Value=\"{address}\" ZoneName=\"{zoneName}\" Type=\"1\" TTL=\"{ttl}\"/></v01:addRecordToRRPool>")
|
|
||||||
ListenableFuture<String> addARecordWithAddressAndTTL(@PayloadParam("lbPoolID") String lbPoolID,
|
|
||||||
@PayloadParam("address") String ipv4Address, @PayloadParam("ttl") int ttl)
|
|
||||||
throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#updateRecordWithAddressAndTTL
|
|
||||||
*/
|
|
||||||
@Named("updateRecordOfRRPool")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:updateRecordOfRRPool><transactionID /><resourceRecord rrGuid=\"{guid}\" lbPoolID=\"{lbPoolID}\" info1Value=\"{address}\" TTL=\"{ttl}\"/></v01:updateRecordOfRRPool>")
|
|
||||||
ListenableFuture<Void> updateRecordWithAddressAndTTL(@PayloadParam("lbPoolID") String lbPoolID,
|
|
||||||
@PayloadParam("guid") String guid, @PayloadParam("address") String ipv4Address,
|
|
||||||
@PayloadParam("ttl") int ttl) throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#deleteRecord(String)
|
|
||||||
*/
|
|
||||||
@Named("deleteRecordOfRRPool")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:deleteRecordOfRRPool><transactionID /><guid>{guid}</guid></v01:deleteRecordOfRRPool>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> deleteRecord(@PayloadParam("guid") String guid);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#createAAAAPoolForHostname
|
|
||||||
*/
|
|
||||||
@Named("addRRLBPool")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.RRPoolID.class)
|
|
||||||
@Payload("<v01:addRRLBPool><transactionID /><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><description>{description}</description><poolRecordType>28</poolRecordType><rrGUID /></v01:addRRLBPool>")
|
|
||||||
ListenableFuture<String> createAAAAPoolForHostname(@PayloadParam("description") String name,
|
|
||||||
@PayloadParam("hostName") String hostname) throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#addAAAARecordWithAddressAndTTL
|
|
||||||
*/
|
|
||||||
@Named("addRecordToRRPool")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.Guid.class)
|
|
||||||
@Payload("<v01:addRecordToRRPool><transactionID /><roundRobinRecord lbPoolID=\"{lbPoolID}\" info1Value=\"{address}\" ZoneName=\"{zoneName}\" Type=\"28\" TTL=\"{ttl}\"/></v01:addRecordToRRPool>")
|
|
||||||
ListenableFuture<String> addAAAARecordWithAddressAndTTL(@PayloadParam("lbPoolID") String lbPoolID,
|
|
||||||
@PayloadParam("address") String ipv6Address, @PayloadParam("ttl") int ttl)
|
|
||||||
throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#delete(String)
|
|
||||||
*/
|
|
||||||
@Named("deleteLBPool")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:deleteLBPool><transactionID /><lbPoolID>{lbPoolID}</lbPoolID><DeleteAll>Yes</DeleteAll><retainRecordId /></v01:deleteLBPool>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> delete(@PayloadParam("lbPoolID") String id);
|
|
||||||
}
|
|
|
@ -18,34 +18,65 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.ultradns.ws.features;
|
package org.jclouds.ultradns.ws.features;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
|
||||||
|
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
||||||
|
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
||||||
import org.jclouds.javax.annotation.Nullable;
|
import org.jclouds.javax.annotation.Nullable;
|
||||||
|
import org.jclouds.rest.annotations.Fallback;
|
||||||
|
import org.jclouds.rest.annotations.Payload;
|
||||||
|
import org.jclouds.rest.annotations.PayloadParam;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.annotations.VirtualHost;
|
||||||
|
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||||
import org.jclouds.ultradns.ws.domain.Task;
|
import org.jclouds.ultradns.ws.domain.Task;
|
||||||
|
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.TaskHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.TaskListHandler;
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
import com.google.common.collect.FluentIterable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see TaskAsyncApi
|
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
||||||
|
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
|
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
||||||
|
@VirtualHost
|
||||||
public interface TaskApi {
|
public interface TaskApi {
|
||||||
/**
|
/**
|
||||||
* Runs a test task
|
* Runs a test task
|
||||||
*
|
*
|
||||||
* @return guid of the task created
|
* @return guid of the task created
|
||||||
*/
|
*/
|
||||||
String runTest(String value);
|
@Named("runTest")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.Guid.class)
|
||||||
|
@Payload("<v01:runTest><value>{value}</value></v01:runTest>")
|
||||||
|
String runTest(@PayloadParam("value") String value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param guid
|
* @param guid
|
||||||
* guid of the task to get information about.
|
* guid of the task to get information about.
|
||||||
* @return null if not found
|
* @return null if not found
|
||||||
*/
|
*/
|
||||||
|
@Named("getStatusForTask")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(TaskHandler.class)
|
||||||
|
@Payload("<v01:getStatusForTask><id><guid>{guid}</guid></id></v01:getStatusForTask>")
|
||||||
|
@Fallback(NullOnNotFoundOr404.class)
|
||||||
@Nullable
|
@Nullable
|
||||||
Task get(String guid);
|
Task get(@PayloadParam("guid") String name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists all tasks.
|
* Lists all tasks.
|
||||||
*/
|
*/
|
||||||
|
@Named("getAllTasks")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(TaskListHandler.class)
|
||||||
|
@Payload("<v01:getAllTasks/>")
|
||||||
FluentIterable<Task> list();
|
FluentIterable<Task> list();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,5 +85,9 @@ public interface TaskApi {
|
||||||
* @param guid
|
* @param guid
|
||||||
* guid of the task to clear.
|
* guid of the task to clear.
|
||||||
*/
|
*/
|
||||||
void clear(String guid);
|
@Named("clearTask")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:clearTask><id><guid>{guid}</guid></id></v01:clearTask>")
|
||||||
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
|
void clear(@PayloadParam("guid") String name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.ultradns.ws.features;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
|
|
||||||
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
|
||||||
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.annotations.Fallback;
|
|
||||||
import org.jclouds.rest.annotations.Payload;
|
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
|
||||||
import org.jclouds.rest.annotations.VirtualHost;
|
|
||||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
|
||||||
import org.jclouds.ultradns.ws.domain.Task;
|
|
||||||
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.TaskHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.TaskListHandler;
|
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TaskApi
|
|
||||||
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
|
||||||
@VirtualHost
|
|
||||||
public interface TaskAsyncApi {
|
|
||||||
/**
|
|
||||||
* @see TaskApi#runTest(String)
|
|
||||||
*/
|
|
||||||
@Named("runTest")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.Guid.class)
|
|
||||||
@Payload("<v01:runTest><value>{value}</value></v01:runTest>")
|
|
||||||
ListenableFuture<String> runTest(@PayloadParam("value") String value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TaskApi#get(String)
|
|
||||||
*/
|
|
||||||
@Named("getStatusForTask")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(TaskHandler.class)
|
|
||||||
@Payload("<v01:getStatusForTask><id><guid>{guid}</guid></id></v01:getStatusForTask>")
|
|
||||||
@Fallback(NullOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Task> get(@PayloadParam("guid") String name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TaskApi#list()
|
|
||||||
*/
|
|
||||||
@Named("getAllTasks")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(TaskListHandler.class)
|
|
||||||
@Payload("<v01:getAllTasks/>")
|
|
||||||
ListenableFuture<FluentIterable<Task>> list();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TaskApi#clear(String)
|
|
||||||
*/
|
|
||||||
@Named("clearTask")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:clearTask><id><guid>{guid}</guid></id></v01:clearTask>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> clear(@PayloadParam("guid") String name);
|
|
||||||
}
|
|
|
@ -18,30 +18,44 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.ultradns.ws.features;
|
package org.jclouds.ultradns.ws.features;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
|
||||||
|
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
||||||
|
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
||||||
import org.jclouds.javax.annotation.Nullable;
|
import org.jclouds.javax.annotation.Nullable;
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.jclouds.rest.annotations.Fallback;
|
||||||
|
import org.jclouds.rest.annotations.MapBinder;
|
||||||
|
import org.jclouds.rest.annotations.Payload;
|
||||||
|
import org.jclouds.rest.annotations.PayloadParam;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.annotations.VirtualHost;
|
||||||
|
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
||||||
|
import org.jclouds.ultradns.ws.binders.UpdatePoolRecordToXML;
|
||||||
import org.jclouds.ultradns.ws.domain.PoolRecordSpec;
|
import org.jclouds.ultradns.ws.domain.PoolRecordSpec;
|
||||||
import org.jclouds.ultradns.ws.domain.TrafficControllerPool;
|
import org.jclouds.ultradns.ws.domain.TrafficControllerPool;
|
||||||
import org.jclouds.ultradns.ws.domain.TrafficControllerPoolRecord;
|
import org.jclouds.ultradns.ws.domain.TrafficControllerPoolRecord;
|
||||||
import org.jclouds.ultradns.ws.domain.UpdatePoolRecord;
|
import org.jclouds.ultradns.ws.domain.UpdatePoolRecord;
|
||||||
|
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
||||||
|
import org.jclouds.ultradns.ws.xml.AttributeHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.PoolRecordSpecHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.TrafficControllerPoolListHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.TrafficControllerPoolRecordListHandler;
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
import com.google.common.collect.FluentIterable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see TrafficControllerPoolAsyncApi
|
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
||||||
|
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
|
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
||||||
|
@VirtualHost
|
||||||
public interface TrafficControllerPoolApi {
|
public interface TrafficControllerPoolApi {
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns all traffic controller pools in the zone.
|
|
||||||
*
|
|
||||||
* @throws ResourceNotFoundException
|
|
||||||
* if the zone doesn't exist
|
|
||||||
*/
|
|
||||||
FluentIterable<TrafficControllerPool> list() throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates a traffic controller pool.
|
* creates a traffic controller pool.
|
||||||
*
|
*
|
||||||
|
@ -54,7 +68,37 @@ public interface TrafficControllerPoolApi {
|
||||||
* @throws ResourceAlreadyExistsException
|
* @throws ResourceAlreadyExistsException
|
||||||
* if a pool already exists with the same attrs
|
* if a pool already exists with the same attrs
|
||||||
*/
|
*/
|
||||||
String createPoolForHostname(String name, String hostname) throws ResourceAlreadyExistsException;
|
@Named("addTCLBPool")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.TCPoolID.class)
|
||||||
|
@Payload("<v01:addTCLBPool><transactionID /><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><description>{description}</description><poolRecordType>1</poolRecordType><failOver>Enabled</failOver><probing>Enabled</probing><maxActive>0</maxActive><rrGUID /></v01:addTCLBPool>")
|
||||||
|
String createPoolForHostname(@PayloadParam("description") String name, @PayloadParam("hostName") String hostname)
|
||||||
|
throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all traffic controller pools in the zone.
|
||||||
|
*
|
||||||
|
* @throws ResourceNotFoundException
|
||||||
|
* if the zone doesn't exist
|
||||||
|
*/
|
||||||
|
@Named("getLoadBalancingPoolsByZone")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(TrafficControllerPoolListHandler.class)
|
||||||
|
@Payload("<v01:getLoadBalancingPoolsByZone><zoneName>{zoneName}</zoneName><lbPoolType>TC</lbPoolType></v01:getLoadBalancingPoolsByZone>")
|
||||||
|
FluentIterable<TrafficControllerPool> list() throws ResourceNotFoundException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all records in the traffic controller pool.
|
||||||
|
*
|
||||||
|
* @throws ResourceNotFoundException
|
||||||
|
* if the pool doesn't exist
|
||||||
|
*/
|
||||||
|
@Named("getPoolRecords")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(TrafficControllerPoolRecordListHandler.class)
|
||||||
|
@Payload("<v01:getPoolRecords><poolId>{poolId}</poolId></v01:getPoolRecords>")
|
||||||
|
FluentIterable<TrafficControllerPoolRecord> listRecords(@PayloadParam("poolId") String poolId)
|
||||||
|
throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the name of the specified pool by dname.
|
* Retrieves the name of the specified pool by dname.
|
||||||
|
@ -64,7 +108,12 @@ public interface TrafficControllerPoolApi {
|
||||||
* @return null if not found
|
* @return null if not found
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
String getNameByDName(String dname);
|
@Named("getPoolForPoolHostName>")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:getPoolForPoolHostName><hostName>{hostName}</hostName></v01:getPoolForPoolHostName>")
|
||||||
|
@XMLResponseParser(AttributeHandler.PoolName.class)
|
||||||
|
@Fallback(NullOnNotFoundOr404.class)
|
||||||
|
String getNameByDName(@PayloadParam("hostName") String dname);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* removes a pool and all its records and probes
|
* removes a pool and all its records and probes
|
||||||
|
@ -72,15 +121,11 @@ public interface TrafficControllerPoolApi {
|
||||||
* @param id
|
* @param id
|
||||||
* the {@link TrafficControllerPool#getId() id}
|
* the {@link TrafficControllerPool#getId() id}
|
||||||
*/
|
*/
|
||||||
void delete(String id);
|
@Named("deleteLBPool")
|
||||||
|
@POST
|
||||||
/**
|
@Payload("<v01:deleteLBPool><transactionID /><lbPoolID>{lbPoolID}</lbPoolID><DeleteAll>Yes</DeleteAll><retainRecordId /></v01:deleteLBPool>")
|
||||||
* Returns all records in the traffic controller pool.
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
*
|
void delete(@PayloadParam("lbPoolID") String id);
|
||||||
* @throws ResourceNotFoundException
|
|
||||||
* if the pool doesn't exist
|
|
||||||
*/
|
|
||||||
FluentIterable<TrafficControllerPoolRecord> listRecords(String poolId) throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* adds a new record to the pool with default weight.
|
* adds a new record to the pool with default weight.
|
||||||
|
@ -96,7 +141,12 @@ public interface TrafficControllerPoolApi {
|
||||||
* @throws ResourceAlreadyExistsException
|
* @throws ResourceAlreadyExistsException
|
||||||
* if a record already exists with the same attrs
|
* if a record already exists with the same attrs
|
||||||
*/
|
*/
|
||||||
String addRecordToPoolWithTTL(String pointsTo, String lbPoolID, int ttl) throws ResourceAlreadyExistsException;
|
@Named("addPoolRecord")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.PoolRecordID.class)
|
||||||
|
@Payload("<v01:addPoolRecord><transactionID /><poolID>{poolID}</poolID><pointsTo>{pointsTo}</pointsTo><priority /><failOverDelay /><ttl>{ttl}</ttl><weight /><mode /><threshold /></v01:addPoolRecord>")
|
||||||
|
String addRecordToPoolWithTTL(@PayloadParam("pointsTo") String pointsTo, @PayloadParam("poolID") String lbPoolID,
|
||||||
|
@PayloadParam("ttl") int ttl) throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* adds a new record to the pool with a specified weight.
|
* adds a new record to the pool with a specified weight.
|
||||||
|
@ -114,7 +164,12 @@ public interface TrafficControllerPoolApi {
|
||||||
* @throws ResourceAlreadyExistsException
|
* @throws ResourceAlreadyExistsException
|
||||||
* if a record already exists with the same attrs
|
* if a record already exists with the same attrs
|
||||||
*/
|
*/
|
||||||
String addRecordToPoolWithTTLAndWeight(String pointsTo, String lbPoolID, int ttl, int weight)
|
@Named("addPoolRecord")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ElementTextHandler.PoolRecordID.class)
|
||||||
|
@Payload("<v01:addPoolRecord><transactionID /><poolID>{poolID}</poolID><pointsTo>{pointsTo}</pointsTo><priority /><failOverDelay /><ttl>{ttl}</ttl><weight>{weight}</weight><mode /><threshold /></v01:addPoolRecord>")
|
||||||
|
String addRecordToPoolWithTTLAndWeight(@PayloadParam("pointsTo") String pointsTo,
|
||||||
|
@PayloadParam("poolID") String lbPoolID, @PayloadParam("ttl") int ttl, @PayloadParam("weight") int weight)
|
||||||
throws ResourceAlreadyExistsException;
|
throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -122,8 +177,13 @@ public interface TrafficControllerPoolApi {
|
||||||
* {@link TrafficControllerPoolRecord#getId()}
|
* {@link TrafficControllerPoolRecord#getId()}
|
||||||
* @return null if not found
|
* @return null if not found
|
||||||
*/
|
*/
|
||||||
|
@Named("getPoolRecordSpec>")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:getPoolRecordSpec><poolRecordId>{poolRecordId}</poolRecordId></v01:getPoolRecordSpec>")
|
||||||
|
@XMLResponseParser(PoolRecordSpecHandler.class)
|
||||||
|
@Fallback(NullOnNotFoundOr404.class)
|
||||||
@Nullable
|
@Nullable
|
||||||
PoolRecordSpec getRecordSpec(String poolRecordID);
|
PoolRecordSpec getRecordSpec(@PayloadParam("poolRecordId") String poolRecordID);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This request updates an existing pool record.
|
* This request updates an existing pool record.
|
||||||
|
@ -137,7 +197,11 @@ public interface TrafficControllerPoolApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the record doesn't exist
|
* if the record doesn't exist
|
||||||
*/
|
*/
|
||||||
void updateRecord(String poolRecordID, UpdatePoolRecord update) throws ResourceNotFoundException;
|
@Named("updatePoolRecord>")
|
||||||
|
@POST
|
||||||
|
@MapBinder(UpdatePoolRecordToXML.class)
|
||||||
|
void updateRecord(@PayloadParam("poolRecordID") String poolRecordID, @PayloadParam("update") UpdatePoolRecord update)
|
||||||
|
throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deletes a specific pooled resource record
|
* deletes a specific pooled resource record
|
||||||
|
@ -145,6 +209,10 @@ public interface TrafficControllerPoolApi {
|
||||||
* @param poolRecordID
|
* @param poolRecordID
|
||||||
* {@see TrafficControllerPoolRecord#getId()}
|
* {@see TrafficControllerPoolRecord#getId()}
|
||||||
*/
|
*/
|
||||||
void deleteRecord(String poolRecordID);
|
@Named("deletePoolRecord")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:deletePoolRecord><transactionID /><poolRecordID>{poolRecordID}</poolRecordID><parentPoolId /><childPoolId /></v01:deletePoolRecord>")
|
||||||
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
|
void deleteRecord(@PayloadParam("poolRecordID") String poolRecordID);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,157 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.ultradns.ws.features;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
|
|
||||||
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
|
||||||
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
|
||||||
import org.jclouds.rest.annotations.Fallback;
|
|
||||||
import org.jclouds.rest.annotations.MapBinder;
|
|
||||||
import org.jclouds.rest.annotations.Payload;
|
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
|
||||||
import org.jclouds.rest.annotations.VirtualHost;
|
|
||||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
|
||||||
import org.jclouds.ultradns.ws.binders.UpdatePoolRecordToXML;
|
|
||||||
import org.jclouds.ultradns.ws.domain.PoolRecordSpec;
|
|
||||||
import org.jclouds.ultradns.ws.domain.TrafficControllerPool;
|
|
||||||
import org.jclouds.ultradns.ws.domain.TrafficControllerPoolRecord;
|
|
||||||
import org.jclouds.ultradns.ws.domain.UpdatePoolRecord;
|
|
||||||
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
|
||||||
import org.jclouds.ultradns.ws.xml.AttributeHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.PoolRecordSpecHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ElementTextHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.TrafficControllerPoolListHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.TrafficControllerPoolRecordListHandler;
|
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi
|
|
||||||
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
|
||||||
@VirtualHost
|
|
||||||
public interface TrafficControllerPoolAsyncApi {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see RoundRobinPoolApi#createPoolForHostname
|
|
||||||
*/
|
|
||||||
@Named("addTCLBPool")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.TCPoolID.class)
|
|
||||||
@Payload("<v01:addTCLBPool><transactionID /><zoneName>{zoneName}</zoneName><hostName>{hostName}</hostName><description>{description}</description><poolRecordType>1</poolRecordType><failOver>Enabled</failOver><probing>Enabled</probing><maxActive>0</maxActive><rrGUID /></v01:addTCLBPool>")
|
|
||||||
ListenableFuture<String> createPoolForHostname(@PayloadParam("description") String name,
|
|
||||||
@PayloadParam("hostName") String hostname) throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#list()
|
|
||||||
*/
|
|
||||||
@Named("getLoadBalancingPoolsByZone")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(TrafficControllerPoolListHandler.class)
|
|
||||||
@Payload("<v01:getLoadBalancingPoolsByZone><zoneName>{zoneName}</zoneName><lbPoolType>TC</lbPoolType></v01:getLoadBalancingPoolsByZone>")
|
|
||||||
ListenableFuture<FluentIterable<TrafficControllerPool>> list() throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#listRecords(String)
|
|
||||||
*/
|
|
||||||
@Named("getPoolRecords")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(TrafficControllerPoolRecordListHandler.class)
|
|
||||||
@Payload("<v01:getPoolRecords><poolId>{poolId}</poolId></v01:getPoolRecords>")
|
|
||||||
ListenableFuture<FluentIterable<TrafficControllerPoolRecord>> listRecords(@PayloadParam("poolId") String poolId)
|
|
||||||
throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#getByDName(String)
|
|
||||||
*/
|
|
||||||
@Named("getPoolForPoolHostName>")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:getPoolForPoolHostName><hostName>{hostName}</hostName></v01:getPoolForPoolHostName>")
|
|
||||||
@XMLResponseParser(AttributeHandler.PoolName.class)
|
|
||||||
@Fallback(NullOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<String> getNameByDName(@PayloadParam("hostName") String dname);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#delete(String)
|
|
||||||
*/
|
|
||||||
@Named("deleteLBPool")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:deleteLBPool><transactionID /><lbPoolID>{lbPoolID}</lbPoolID><DeleteAll>Yes</DeleteAll><retainRecordId /></v01:deleteLBPool>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> delete(@PayloadParam("lbPoolID") String id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#addRecordToPoolWithTTL
|
|
||||||
*/
|
|
||||||
@Named("addPoolRecord")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.PoolRecordID.class)
|
|
||||||
@Payload("<v01:addPoolRecord><transactionID /><poolID>{poolID}</poolID><pointsTo>{pointsTo}</pointsTo><priority /><failOverDelay /><ttl>{ttl}</ttl><weight /><mode /><threshold /></v01:addPoolRecord>")
|
|
||||||
ListenableFuture<String> addRecordToPoolWithTTL(@PayloadParam("pointsTo") String pointsTo,
|
|
||||||
@PayloadParam("poolID") String lbPoolID, @PayloadParam("ttl") int ttl) throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#addRecordToPoolWithTTLAndWeight
|
|
||||||
*/
|
|
||||||
@Named("addPoolRecord")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ElementTextHandler.PoolRecordID.class)
|
|
||||||
@Payload("<v01:addPoolRecord><transactionID /><poolID>{poolID}</poolID><pointsTo>{pointsTo}</pointsTo><priority /><failOverDelay /><ttl>{ttl}</ttl><weight>{weight}</weight><mode /><threshold /></v01:addPoolRecord>")
|
|
||||||
ListenableFuture<String> addRecordToPoolWithTTLAndWeight(@PayloadParam("pointsTo") String pointsTo,
|
|
||||||
@PayloadParam("poolID") String lbPoolID, @PayloadParam("ttl") int ttl, @PayloadParam("weight") int weight)
|
|
||||||
throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#getRecordSpec(String)
|
|
||||||
*/
|
|
||||||
@Named("getPoolRecordSpec>")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:getPoolRecordSpec><poolRecordId>{poolRecordId}</poolRecordId></v01:getPoolRecordSpec>")
|
|
||||||
@XMLResponseParser(PoolRecordSpecHandler.class)
|
|
||||||
@Fallback(NullOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<PoolRecordSpec> getRecordSpec(@PayloadParam("poolRecordId") String poolRecordID);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#getRecordSpec(String)
|
|
||||||
*/
|
|
||||||
@Named("updatePoolRecord>")
|
|
||||||
@POST
|
|
||||||
@MapBinder(UpdatePoolRecordToXML.class)
|
|
||||||
ListenableFuture<Void> updateRecord(@PayloadParam("poolRecordID") String poolRecordID,
|
|
||||||
@PayloadParam("update") UpdatePoolRecord update) throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see TrafficControllerPoolApi#deleteRecord(String)
|
|
||||||
*/
|
|
||||||
@Named("deletePoolRecord")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:deletePoolRecord><transactionID /><poolRecordID>{poolRecordID}</poolRecordID><parentPoolId /><childPoolId /></v01:deletePoolRecord>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> deleteRecord(@PayloadParam("poolRecordID") String poolRecordID);
|
|
||||||
|
|
||||||
}
|
|
|
@ -18,19 +18,36 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.ultradns.ws.features;
|
package org.jclouds.ultradns.ws.features;
|
||||||
|
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
|
||||||
|
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
||||||
|
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
||||||
import org.jclouds.javax.annotation.Nullable;
|
import org.jclouds.javax.annotation.Nullable;
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.jclouds.rest.annotations.Fallback;
|
||||||
|
import org.jclouds.rest.annotations.Payload;
|
||||||
|
import org.jclouds.rest.annotations.PayloadParam;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.annotations.VirtualHost;
|
||||||
|
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
||||||
import org.jclouds.ultradns.ws.domain.Zone;
|
import org.jclouds.ultradns.ws.domain.Zone;
|
||||||
import org.jclouds.ultradns.ws.domain.Zone.Type;
|
import org.jclouds.ultradns.ws.domain.Zone.Type;
|
||||||
import org.jclouds.ultradns.ws.domain.ZoneProperties;
|
import org.jclouds.ultradns.ws.domain.ZoneProperties;
|
||||||
|
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ZoneListHandler;
|
||||||
|
import org.jclouds.ultradns.ws.xml.ZonePropertiesHandler;
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
import com.google.common.collect.FluentIterable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see ZoneAsyncApi
|
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
||||||
|
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
|
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
||||||
|
@VirtualHost
|
||||||
public interface ZoneApi {
|
public interface ZoneApi {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,7 +59,11 @@ public interface ZoneApi {
|
||||||
* @param accountId
|
* @param accountId
|
||||||
* the account to create the zone in
|
* the account to create the zone in
|
||||||
*/
|
*/
|
||||||
void createInAccount(String name, String accountId) throws ResourceAlreadyExistsException;
|
@Named("createPrimaryZone")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:createPrimaryZone><transactionID /><accountId>{accountId}</accountId><zoneName>{zoneName}</zoneName><forceImport>false</forceImport></v01:createPrimaryZone>")
|
||||||
|
void createInAccount(@PayloadParam("zoneName") String name, @PayloadParam("accountId") String accountId)
|
||||||
|
throws ResourceAlreadyExistsException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name
|
* @param name
|
||||||
|
@ -50,15 +71,24 @@ public interface ZoneApi {
|
||||||
* zone to get information about.
|
* zone to get information about.
|
||||||
* @return null if not found
|
* @return null if not found
|
||||||
*/
|
*/
|
||||||
|
@Named("getGeneralPropertiesForZone")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ZonePropertiesHandler.class)
|
||||||
|
@Payload("<v01:getGeneralPropertiesForZone><zoneName>{zoneName}</zoneName></v01:getGeneralPropertiesForZone>")
|
||||||
|
@Fallback(NullOnNotFoundOr404.class)
|
||||||
@Nullable
|
@Nullable
|
||||||
ZoneProperties get(String name);
|
ZoneProperties get(@PayloadParam("zoneName") String name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists all zones in the specified account.
|
* Lists all zones in the specified account.
|
||||||
*
|
*
|
||||||
* @returns empty if no zones, or account doesn't exist
|
* @returns empty if no zones, or account doesn't exist
|
||||||
*/
|
*/
|
||||||
FluentIterable<Zone> listByAccount(String accountId);
|
@Named("getZonesOfAccount")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ZoneListHandler.class)
|
||||||
|
@Payload("<v01:getZonesOfAccount><accountId>{accountId}</accountId><zoneType>all</zoneType></v01:getZonesOfAccount>")
|
||||||
|
FluentIterable<Zone> listByAccount(@PayloadParam("accountId") String accountId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists all zones in the specified account of type
|
* Lists all zones in the specified account of type
|
||||||
|
@ -66,7 +96,12 @@ public interface ZoneApi {
|
||||||
* @throws ResourceNotFoundException
|
* @throws ResourceNotFoundException
|
||||||
* if the account doesn't exist
|
* if the account doesn't exist
|
||||||
*/
|
*/
|
||||||
FluentIterable<Zone> listByAccountAndType(String accountId, Type type) throws ResourceNotFoundException;
|
@Named("getZonesOfAccount")
|
||||||
|
@POST
|
||||||
|
@XMLResponseParser(ZoneListHandler.class)
|
||||||
|
@Payload("<v01:getZonesOfAccount><accountId>{accountId}</accountId><zoneType>{zoneType}</zoneType></v01:getZonesOfAccount>")
|
||||||
|
FluentIterable<Zone> listByAccountAndType(@PayloadParam("accountId") String accountId,
|
||||||
|
@PayloadParam("zoneType") Type type) throws ResourceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deletes a zone and all its resource records
|
* deletes a zone and all its resource records
|
||||||
|
@ -76,5 +111,9 @@ public interface ZoneApi {
|
||||||
* zone you want to delete.
|
* zone you want to delete.
|
||||||
* @return null if not found
|
* @return null if not found
|
||||||
*/
|
*/
|
||||||
void delete(String name);
|
@Named("deleteZone")
|
||||||
|
@POST
|
||||||
|
@Payload("<v01:deleteZone><transactionID /><zoneName>{zoneName}</zoneName></v01:deleteZone>")
|
||||||
|
@Fallback(VoidOnNotFoundOr404.class)
|
||||||
|
void delete(@PayloadParam("zoneName") String name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,100 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.ultradns.ws.features;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
|
|
||||||
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
|
||||||
import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.ResourceNotFoundException;
|
|
||||||
import org.jclouds.rest.annotations.Fallback;
|
|
||||||
import org.jclouds.rest.annotations.Payload;
|
|
||||||
import org.jclouds.rest.annotations.PayloadParam;
|
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
|
||||||
import org.jclouds.rest.annotations.VirtualHost;
|
|
||||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
|
||||||
import org.jclouds.ultradns.ws.UltraDNSWSExceptions.ResourceAlreadyExistsException;
|
|
||||||
import org.jclouds.ultradns.ws.domain.Zone;
|
|
||||||
import org.jclouds.ultradns.ws.domain.Zone.Type;
|
|
||||||
import org.jclouds.ultradns.ws.domain.ZoneProperties;
|
|
||||||
import org.jclouds.ultradns.ws.filters.SOAPWrapWithPasswordAuth;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ZoneListHandler;
|
|
||||||
import org.jclouds.ultradns.ws.xml.ZonePropertiesHandler;
|
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ZoneApi
|
|
||||||
* @see <a href="https://ultra-api.ultradns.com:8443/UltraDNS_WS/v01?wsdl" />
|
|
||||||
* @see <a href="https://www.ultradns.net/api/NUS_API_XML_SOAP.pdf" />
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
@RequestFilters(SOAPWrapWithPasswordAuth.class)
|
|
||||||
@VirtualHost
|
|
||||||
public interface ZoneAsyncApi {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ZoneApi#createInAccount(String, String
|
|
||||||
*/
|
|
||||||
@Named("createPrimaryZone")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:createPrimaryZone><transactionID /><accountId>{accountId}</accountId><zoneName>{zoneName}</zoneName><forceImport>false</forceImport></v01:createPrimaryZone>")
|
|
||||||
ListenableFuture<Void> createInAccount(@PayloadParam("zoneName") String name,
|
|
||||||
@PayloadParam("accountId") String accountId) throws ResourceAlreadyExistsException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ZoneApi#get(String)
|
|
||||||
*/
|
|
||||||
@Named("getGeneralPropertiesForZone")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ZonePropertiesHandler.class)
|
|
||||||
@Payload("<v01:getGeneralPropertiesForZone><zoneName>{zoneName}</zoneName></v01:getGeneralPropertiesForZone>")
|
|
||||||
@Fallback(NullOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<ZoneProperties> get(@PayloadParam("zoneName") String name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ZoneApi#listByAccount(String)
|
|
||||||
*/
|
|
||||||
@Named("getZonesOfAccount")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ZoneListHandler.class)
|
|
||||||
@Payload("<v01:getZonesOfAccount><accountId>{accountId}</accountId><zoneType>all</zoneType></v01:getZonesOfAccount>")
|
|
||||||
ListenableFuture<FluentIterable<Zone>> listByAccount(@PayloadParam("accountId") String accountId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ZoneApi#listByAccountAndType(String, Type)
|
|
||||||
*/
|
|
||||||
@Named("getZonesOfAccount")
|
|
||||||
@POST
|
|
||||||
@XMLResponseParser(ZoneListHandler.class)
|
|
||||||
@Payload("<v01:getZonesOfAccount><accountId>{accountId}</accountId><zoneType>{zoneType}</zoneType></v01:getZonesOfAccount>")
|
|
||||||
ListenableFuture<FluentIterable<Zone>> listByAccountAndType(@PayloadParam("accountId") String accountId,
|
|
||||||
@PayloadParam("zoneType") Type type) throws ResourceNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ZoneApi#delete(String)
|
|
||||||
*/
|
|
||||||
@Named("deleteZone")
|
|
||||||
@POST
|
|
||||||
@Payload("<v01:deleteZone><transactionID /><zoneName>{zoneName}</zoneName></v01:deleteZone>")
|
|
||||||
@Fallback(VoidOnNotFoundOr404.class)
|
|
||||||
ListenableFuture<Void> delete(@PayloadParam("zoneName") String name);
|
|
||||||
}
|
|
Loading…
Reference in New Issue