All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jclouds.vcloud.terremark.TerremarkVCloudAsyncClient Maven / Gradle / Ivy

The newest version!
/**
 *
 * Copyright (C) 2010 Cloud Conscious, LLC. 
 *
 * ====================================================================
 * Licensed 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.vcloud.terremark;

import static org.jclouds.vcloud.VCloudMediaType.CATALOGITEM_XML;
import static org.jclouds.vcloud.VCloudMediaType.CATALOG_XML;
import static org.jclouds.vcloud.VCloudMediaType.ORG_XML;
import static org.jclouds.vcloud.VCloudMediaType.VAPP_XML;
import static org.jclouds.vcloud.VCloudMediaType.VDC_XML;
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.CATALOGITEMCUSTOMIZATIONPARAMETERS_XML;
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.INTERNETSERVICESLIST_XML;
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.INTERNETSERVICE_XML;
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.NODESERVICE_XML;
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.PUBLICIPSLIST_XML;
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.PUBLICIP_XML;

import java.net.URI;
import java.util.Set;

import javax.annotation.Nullable;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import org.jclouds.predicates.validators.DnsNameValidator;
import org.jclouds.rest.annotations.EndpointParam;
import org.jclouds.rest.annotations.ExceptionParser;
import org.jclouds.rest.annotations.MapBinder;
import org.jclouds.rest.annotations.MapPayloadParam;
import org.jclouds.rest.annotations.ParamValidators;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.ResponseParser;
import org.jclouds.rest.annotations.XMLResponseParser;
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404;
import org.jclouds.vcloud.VCloudExpressAsyncClient;
import org.jclouds.vcloud.VCloudExpressClient;
import org.jclouds.vcloud.domain.Catalog;
import org.jclouds.vcloud.domain.Task;
import org.jclouds.vcloud.domain.VCloudExpressVApp;
import org.jclouds.vcloud.domain.VDC;
import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
import org.jclouds.vcloud.functions.OrgNameAndVDCNameToEndpoint;
import org.jclouds.vcloud.functions.OrgNameCatalogNameItemNameToEndpoint;
import org.jclouds.vcloud.functions.OrgNameToEndpoint;
import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
import org.jclouds.vcloud.terremark.binders.BindNodeConfigurationToXmlPayload;
import org.jclouds.vcloud.terremark.binders.BindVAppConfigurationToXmlPayload;
import org.jclouds.vcloud.terremark.binders.TerremarkBindInstantiateVAppTemplateParamsToXmlPayload;
import org.jclouds.vcloud.terremark.domain.CustomizationParameters;
import org.jclouds.vcloud.terremark.domain.InternetService;
import org.jclouds.vcloud.terremark.domain.Node;
import org.jclouds.vcloud.terremark.domain.Protocol;
import org.jclouds.vcloud.terremark.domain.PublicIpAddress;
import org.jclouds.vcloud.terremark.domain.TerremarkCatalogItem;
import org.jclouds.vcloud.terremark.domain.TerremarkOrg;
import org.jclouds.vcloud.terremark.domain.TerremarkVDC;
import org.jclouds.vcloud.terremark.domain.VAppConfiguration;
import org.jclouds.vcloud.terremark.functions.ParseTaskFromLocationHeader;
import org.jclouds.vcloud.terremark.functions.ReturnVoidOnDeleteDefaultIp;
import org.jclouds.vcloud.terremark.functions.VDCURIToInternetServicesEndpoint;
import org.jclouds.vcloud.terremark.functions.VDCURIToPublicIPsEndpoint;
import org.jclouds.vcloud.terremark.options.AddInternetServiceOptions;
import org.jclouds.vcloud.terremark.options.AddNodeOptions;
import org.jclouds.vcloud.terremark.xml.CustomizationParametersHandler;
import org.jclouds.vcloud.terremark.xml.InternetServiceHandler;
import org.jclouds.vcloud.terremark.xml.InternetServicesHandler;
import org.jclouds.vcloud.terremark.xml.NodeHandler;
import org.jclouds.vcloud.terremark.xml.NodesHandler;
import org.jclouds.vcloud.terremark.xml.PublicIpAddressesHandler;
import org.jclouds.vcloud.terremark.xml.TerremarkCatalogItemHandler;
import org.jclouds.vcloud.terremark.xml.TerremarkOrgHandler;
import org.jclouds.vcloud.terremark.xml.TerremarkVDCHandler;
import org.jclouds.vcloud.xml.CatalogHandler;
import org.jclouds.vcloud.xml.VCloudExpressVAppHandler;

import com.google.common.util.concurrent.ListenableFuture;

/**
 * Provides access to VCloud resources via their REST API.
 * 

* * @see * @author Adrian Cole */ @RequestFilters(SetVCloudTokenCookie.class) public interface TerremarkVCloudAsyncClient extends VCloudExpressAsyncClient { /** * @see VCloudExpressClient#getCatalogItemInOrg */ @Override @GET @Path("") @Consumes(CATALOGITEM_XML) @XMLResponseParser(TerremarkCatalogItemHandler.class) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture findCatalogItemInOrgCatalogNamed( @Nullable @EndpointParam(parser = OrgNameCatalogNameItemNameToEndpoint.class) String orgName, @Nullable @EndpointParam(parser = OrgNameCatalogNameItemNameToEndpoint.class) String catalogName, @Nullable @EndpointParam(parser = OrgNameCatalogNameItemNameToEndpoint.class) String itemName); /** * @see VCloudExpressClient#getCatalogItem */ @Override @GET @Path("") @Consumes(CATALOGITEM_XML) @XMLResponseParser(TerremarkCatalogItemHandler.class) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture getCatalogItem(@EndpointParam URI catalogItem); @Override @GET @Path("") @XMLResponseParser(TerremarkOrgHandler.class) @ExceptionParser(ReturnNullOnNotFoundOr404.class) @Consumes(ORG_XML) ListenableFuture getOrg(@EndpointParam URI orgId); /** * @see VCloudExpressClient#findOrgNamed */ @Override @GET @Path("") @XMLResponseParser(TerremarkOrgHandler.class) @ExceptionParser(ReturnNullOnNotFoundOr404.class) @Consumes(ORG_XML) ListenableFuture findOrgNamed( @Nullable @EndpointParam(parser = OrgNameToEndpoint.class) String orgName); /** * Terremark does not have multiple catalogs, so we ignore this parameter. */ @GET @Path("") @Override @XMLResponseParser(CatalogHandler.class) @Consumes(CATALOG_XML) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture getCatalog(@EndpointParam URI catalogId); /** * @see TerremarkVCloudExpressClient#getVDC */ @Override @GET @Path("") @XMLResponseParser(TerremarkVDCHandler.class) @Consumes(VDC_XML) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture getVDC(@EndpointParam URI vdc); /** * @see VCloudExpressClient#findVDCInOrgNamed */ @GET @Path("") @Override @XMLResponseParser(TerremarkVDCHandler.class) @Consumes(VDC_XML) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture findVDCInOrgNamed( @Nullable @EndpointParam(parser = OrgNameAndVDCNameToEndpoint.class) String orgName, @Nullable @EndpointParam(parser = OrgNameAndVDCNameToEndpoint.class) String vdcName); /** * @see VCloudExpressClient#instantiateVAppTemplateInVDC */ @Override @POST @Path("/action/instantiateVAppTemplate") @Produces("application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml") @Consumes(VAPP_XML) @XMLResponseParser(VCloudExpressVAppHandler.class) @MapBinder(TerremarkBindInstantiateVAppTemplateParamsToXmlPayload.class) ListenableFuture instantiateVAppTemplateInVDC(@EndpointParam URI vdc, @MapPayloadParam("template") URI template, @MapPayloadParam("name") @ParamValidators(DnsNameValidator.class) String appName, InstantiateVAppTemplateOptions... options); /** * @see TerremarkVCloudExpressClient#getAllInternetServicesInVDC */ @GET @Path("") @Consumes(INTERNETSERVICESLIST_XML) @XMLResponseParser(InternetServicesHandler.class) @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class) ListenableFuture> getAllInternetServicesInVDC( @EndpointParam(parser = VDCURIToInternetServicesEndpoint.class) URI vDCId); /** * @see TerremarkVCloudExpressClient#addInternetServiceToExistingIp */ @POST @Path("/internetServices") @Produces(INTERNETSERVICE_XML) @Consumes(INTERNETSERVICE_XML) @XMLResponseParser(InternetServiceHandler.class) @MapBinder(AddInternetServiceOptions.class) ListenableFuture addInternetServiceToExistingIp(@EndpointParam URI publicIpId, @MapPayloadParam("name") String serviceName, @MapPayloadParam("protocol") Protocol protocol, @MapPayloadParam("port") int port, AddInternetServiceOptions... options); /** * @see TerremarkVCloudExpressClient#deletePublicIp */ @DELETE @Path("") @ExceptionParser(ReturnVoidOnDeleteDefaultIp.class) ListenableFuture deletePublicIp(@EndpointParam URI ipId); /** * @see TerremarkVCloudExpressClient#getInternetServicesOnPublicIP */ @GET @Path("/internetServices") @Consumes(INTERNETSERVICESLIST_XML) @XMLResponseParser(InternetServicesHandler.class) @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class) ListenableFuture> getInternetServicesOnPublicIp(@EndpointParam URI ipId); /** * @see TerremarkVCloudExpressClient#getPublicIp */ @GET @Path("") @Consumes(PUBLICIP_XML) @XMLResponseParser(InternetServicesHandler.class) @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class) ListenableFuture> getPublicIp(@EndpointParam URI ipId); /** * @see TerremarkVCloudExpressClient#getPublicIpsAssociatedWithVDC */ @GET @Path("") @Consumes(PUBLICIPSLIST_XML) @XMLResponseParser(PublicIpAddressesHandler.class) @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class) ListenableFuture> getPublicIpsAssociatedWithVDC( @EndpointParam(parser = VDCURIToPublicIPsEndpoint.class) URI vDCId); /** * @see TerremarkVCloudExpressClient#deleteInternetService */ @DELETE @Path("") @ExceptionParser(ReturnVoidOnNotFoundOr404.class) ListenableFuture deleteInternetService(@EndpointParam URI internetServiceId); /** * @see TerremarkVCloudExpressClient#getInternetService */ @GET @Path("") @Consumes(INTERNETSERVICESLIST_XML) @XMLResponseParser(InternetServiceHandler.class) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture getInternetService(@EndpointParam URI internetServiceId); /** * @see TerremarkVCloudExpressClient#addNode */ @POST @Path("/nodeServices") @Produces(NODESERVICE_XML) @Consumes(NODESERVICE_XML) @XMLResponseParser(NodeHandler.class) @MapBinder(AddNodeOptions.class) ListenableFuture addNode(@EndpointParam URI internetServiceId, @MapPayloadParam("ipAddress") String ipAddress, @MapPayloadParam("name") String name, @MapPayloadParam("port") int port, AddNodeOptions... options); /** * @see TerremarkVCloudExpressClient#getNodes */ @GET @Path("/nodeServices") @XMLResponseParser(NodesHandler.class) @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class) @Consumes(NODESERVICE_XML) ListenableFuture> getNodes(@EndpointParam URI internetServiceId); /** * @see TerremarkVCloudExpressClient#getNode */ @GET @Path("") @XMLResponseParser(NodeHandler.class) @Consumes(NODESERVICE_XML) @ExceptionParser(ReturnNullOnNotFoundOr404.class) ListenableFuture getNode(@EndpointParam URI nodeId); /** * @see TerremarkVCloudExpressClient#configureNode */ @PUT @Path("") @Produces(NODESERVICE_XML) @Consumes(NODESERVICE_XML) @XMLResponseParser(NodeHandler.class) @MapBinder(BindNodeConfigurationToXmlPayload.class) ListenableFuture configureNode(@EndpointParam URI nodeId, @MapPayloadParam("name") String name, @MapPayloadParam("enabled") boolean enabled, @Nullable @MapPayloadParam("description") String description); /** * @see TerremarkVCloudExpressClient#deleteNode */ @DELETE @Path("") @ExceptionParser(ReturnVoidOnNotFoundOr404.class) ListenableFuture deleteNode(@EndpointParam URI nodeId); /** * @see TerremarkVCloudExpressClient#configureVApp */ @PUT @Path("") @Produces(VAPP_XML) @Consumes(VAPP_XML) @MapBinder(BindVAppConfigurationToXmlPayload.class) @ResponseParser(ParseTaskFromLocationHeader.class) ListenableFuture configureVApp( @EndpointParam(parser = BindVAppConfigurationToXmlPayload.class) VCloudExpressVApp vApp, VAppConfiguration configuration); /** * @see TerremarkVCloudClient#getCustomizationOptions */ @GET @Path("") @XMLResponseParser(CustomizationParametersHandler.class) @Consumes(CATALOGITEMCUSTOMIZATIONPARAMETERS_XML) ListenableFuture getCustomizationOptions(@EndpointParam URI customization); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy