mirror of https://github.com/apache/jclouds.git
Issue 286: normalized names trmk-vcloudexpress -> TerremarkVCloudExpressClient; tmrk-ecloud -> TerremarkECloudClient
This commit is contained in:
parent
ef00266b54
commit
88d64ee76c
|
@ -20,8 +20,8 @@
|
|||
"A clojure binding to the jclouds ComputeService.
|
||||
|
||||
Current supported services are:
|
||||
[ec2, rimuhosting, cloudservers, terremark, vcloud, bluelock, ibmdev,
|
||||
eucalyptus, hostingdotcom]
|
||||
[ec2, rimuhosting, cloudservers, trmk-ecloud, trmk-vcloudexpress, vcloud, bluelock,
|
||||
ibmdev, eucalyptus, hostingdotcom]
|
||||
|
||||
Here's an example of getting some compute configuration from rackspace:
|
||||
|
||||
|
|
|
@ -47,11 +47,11 @@ ec2.propertiesbuilder=org.jclouds.aws.ec2.EC2PropertiesBuilder
|
|||
rimuhosting.contextbuilder=org.jclouds.rimuhosting.miro.RimuHostingContextBuilder
|
||||
rimuhosting.propertiesbuilder=org.jclouds.rimuhosting.miro.RimuHostingPropertiesBuilder
|
||||
|
||||
terremark.contextbuilder=org.jclouds.vcloud.terremark.TerremarkVCloudContextBuilder
|
||||
terremark.propertiesbuilder=org.jclouds.vcloud.terremark.TerremarkVCloudPropertiesBuilder
|
||||
trmk-vcloudexpress.contextbuilder=org.jclouds.vcloud.terremark.TerremarkVCloudExpressContextBuilder
|
||||
trmk-vcloudexpress.propertiesbuilder=org.jclouds.vcloud.terremark.TerremarkVCloudExpressPropertiesBuilder
|
||||
|
||||
ecloud.contextbuilder=org.jclouds.vcloud.terremark.TerremarkECloudContextBuilder
|
||||
ecloud.propertiesbuilder=org.jclouds.vcloud.terremark.TerremarkECloudPropertiesBuilder
|
||||
trmk-ecloud.contextbuilder=org.jclouds.vcloud.terremark.TerremarkECloudContextBuilder
|
||||
trmk-ecloud.propertiesbuilder=org.jclouds.vcloud.terremark.TerremarkECloudPropertiesBuilder
|
||||
|
||||
hostingdotcom.contextbuilder=org.jclouds.vcloud.hostingdotcom.HostingDotComVCloudContextBuilder
|
||||
hostingdotcom.propertiesbuilder=org.jclouds.vcloud.hostingdotcom.HostingDotComVCloudPropertiesBuilder
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
service=terremark
|
||||
service=trmk-ecloud
|
||||
driver=terremark
|
||||
account=user@youregistered.com
|
||||
key=password
|
|
@ -0,0 +1,5 @@
|
|||
service=trmk-vcloudexpress
|
||||
driver=terremark
|
||||
account=user@youregistered.com
|
||||
key=password
|
||||
nodetag=name_of_your_vapp
|
|
@ -25,7 +25,7 @@ import javax.ws.rs.core.MediaType;
|
|||
*
|
||||
* @see MediaType
|
||||
*/
|
||||
public class VCloudMediaType {
|
||||
public interface VCloudMediaType {
|
||||
/**
|
||||
* "application/vnd.vmware.vcloud.organizationList+xml"
|
||||
*/
|
||||
|
|
|
@ -1,363 +0,0 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.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.util.SortedSet;
|
||||
|
||||
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.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
import org.jclouds.predicates.validators.DnsNameValidator;
|
||||
import org.jclouds.rest.annotations.BinderParam;
|
||||
import org.jclouds.rest.annotations.Endpoint;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
import org.jclouds.rest.annotations.MapBinder;
|
||||
import org.jclouds.rest.annotations.MapPayloadParam;
|
||||
import org.jclouds.rest.annotations.ParamParser;
|
||||
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.ReturnNullOnNotFoundOr404;
|
||||
import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404;
|
||||
import org.jclouds.vcloud.VCloudAsyncClient;
|
||||
import org.jclouds.vcloud.domain.Catalog;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.VApp;
|
||||
import org.jclouds.vcloud.domain.VDC;
|
||||
import org.jclouds.vcloud.endpoints.Org;
|
||||
import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
|
||||
import org.jclouds.vcloud.functions.CatalogIdToUri;
|
||||
import org.jclouds.vcloud.functions.VAppId;
|
||||
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.NodeConfiguration;
|
||||
import org.jclouds.vcloud.terremark.domain.Protocol;
|
||||
import org.jclouds.vcloud.terremark.domain.PublicIpAddress;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkOrganization;
|
||||
import org.jclouds.vcloud.terremark.domain.VAppConfiguration;
|
||||
import org.jclouds.vcloud.terremark.functions.ParseTaskFromLocationHeader;
|
||||
import org.jclouds.vcloud.terremark.functions.ReturnEmptySetOnResourceNotFoundException;
|
||||
import org.jclouds.vcloud.terremark.functions.ReturnVoidOnDeleteDefaultIp;
|
||||
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.TerremarkOrgHandler;
|
||||
import org.jclouds.vcloud.terremark.xml.TerremarkVDCHandler;
|
||||
import org.jclouds.vcloud.xml.CatalogHandler;
|
||||
import org.jclouds.vcloud.xml.VAppHandler;
|
||||
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
/**
|
||||
* Provides access to VCloud resources via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
* @see <a href="https://community.vcloudexpress.terremark.com/en-us/discussion_forums/f/60.aspx" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@RequestFilters(SetVCloudTokenCookie.class)
|
||||
public interface TerremarkAsyncClient extends VCloudAsyncClient {
|
||||
|
||||
@GET
|
||||
@Endpoint(Org.class)
|
||||
@Consumes(ORG_XML)
|
||||
@XMLResponseParser(TerremarkOrgHandler.class)
|
||||
ListenableFuture<? extends TerremarkOrganization> getDefaultOrganization();
|
||||
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/org/{orgId}")
|
||||
@XMLResponseParser(TerremarkOrgHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
@Consumes(ORG_XML)
|
||||
ListenableFuture<? extends TerremarkOrganization> getOrganization(
|
||||
@PathParam("orgId") String orgId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getDefaultVDC
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VDC.class)
|
||||
@XMLResponseParser(TerremarkVDCHandler.class)
|
||||
@Consumes(VDC_XML)
|
||||
ListenableFuture<? extends VDC> getDefaultVDC();
|
||||
|
||||
/**
|
||||
* Terremark does not have multiple catalogs, so we ignore this parameter.
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.Catalog.class)
|
||||
@XMLResponseParser(CatalogHandler.class)
|
||||
@Consumes(CATALOG_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends Catalog> getCatalog(String catalogId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getVDC
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/vdc/{vDCId}")
|
||||
@XMLResponseParser(TerremarkVDCHandler.class)
|
||||
@Consumes(VDC_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends VDC> getVDC(@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#instantiateVAppTemplateInVDC
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/vdc/{vDCId}/action/instantiateVAppTemplate")
|
||||
@Produces("application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml")
|
||||
@Consumes(VAPP_XML)
|
||||
@XMLResponseParser(VAppHandler.class)
|
||||
@MapBinder(TerremarkBindInstantiateVAppTemplateParamsToXmlPayload.class)
|
||||
ListenableFuture<? extends VApp> instantiateVAppTemplateInVDC(@PathParam("vDCId") String vDCId,
|
||||
@MapPayloadParam("name") @ParamValidators(DnsNameValidator.class) String appName,
|
||||
@MapPayloadParam("template") @ParamParser(CatalogIdToUri.class) String templateId,
|
||||
InstantiateVAppTemplateOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#addInternetService
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/internetServices")
|
||||
@Produces(INTERNETSERVICE_XML)
|
||||
@Consumes(INTERNETSERVICE_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@MapBinder(AddInternetServiceOptions.class)
|
||||
ListenableFuture<? extends InternetService> addInternetServiceToVDC(
|
||||
@PathParam("vDCId") String vDCId, @MapPayloadParam("name") String serviceName,
|
||||
@MapPayloadParam("protocol") Protocol protocol, @MapPayloadParam("port") int port,
|
||||
AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getAllInternetServices
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/internetServices")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getAllInternetServicesInVDC(
|
||||
@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#addInternetServiceToExistingIp
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}/internetServices")
|
||||
@Produces(INTERNETSERVICE_XML)
|
||||
@Consumes(INTERNETSERVICE_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@MapBinder(AddInternetServiceOptions.class)
|
||||
ListenableFuture<? extends InternetService> addInternetServiceToExistingIp(
|
||||
@PathParam("ipId") int existingIpId, @MapPayloadParam("name") String serviceName,
|
||||
@MapPayloadParam("protocol") Protocol protocol, @MapPayloadParam("port") int port,
|
||||
AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#deletePublicIp
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}")
|
||||
@ExceptionParser(ReturnVoidOnDeleteDefaultIp.class)
|
||||
ListenableFuture<Void> deletePublicIp(@PathParam("ipId") int ipId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getInternetServicesOnPublicIP
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}/internetServices")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getInternetServicesOnPublicIp(
|
||||
@PathParam("ipId") int ipId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getPublicIp
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}")
|
||||
@Consumes(PUBLICIP_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getPublicIp(@PathParam("ipId") int ipId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getPublicIpsAssociatedWithVDC
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/publicIps")
|
||||
@Consumes(PUBLICIPSLIST_XML)
|
||||
@XMLResponseParser(PublicIpAddressesHandler.class)
|
||||
ListenableFuture<? extends SortedSet<PublicIpAddress>> getPublicIpsAssociatedWithVDC(
|
||||
@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#activatePublicIpInVDC
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/{vDCId}/publicIps")
|
||||
@XMLResponseParser(PublicIpAddressesHandler.class)
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<PublicIpAddress> activatePublicIpInVDC(@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#deleteInternetService
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}")
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<Void> deleteInternetService(
|
||||
@PathParam("internetServiceId") int internetServiceId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getInternetService
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends InternetService> getInternetService(
|
||||
@PathParam("internetServiceId") int internetServiceId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#addNode
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}/nodeServices")
|
||||
@Produces(NODESERVICE_XML)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
@XMLResponseParser(NodeHandler.class)
|
||||
@MapBinder(AddNodeOptions.class)
|
||||
ListenableFuture<? extends Node> addNode(@PathParam("internetServiceId") int internetServiceId,
|
||||
@MapPayloadParam("ipAddress") String ipAddress, @MapPayloadParam("name") String name,
|
||||
@MapPayloadParam("port") int port, AddNodeOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getNodes
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}/nodeServices")
|
||||
@XMLResponseParser(NodesHandler.class)
|
||||
@ExceptionParser(ReturnEmptySetOnResourceNotFoundException.class)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
ListenableFuture<? extends SortedSet<Node>> getNodes(
|
||||
@PathParam("internetServiceId") int internetServiceId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getNode
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/nodeService/{nodeId}")
|
||||
@XMLResponseParser(NodeHandler.class)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends Node> getNode(@PathParam("nodeId") int nodeId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#configureNode
|
||||
*/
|
||||
@PUT
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/nodeService/{nodeId}")
|
||||
@Produces(NODESERVICE_XML)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
@XMLResponseParser(NodeHandler.class)
|
||||
ListenableFuture<? extends Node> configureNode(
|
||||
@PathParam("nodeId") int nodeId,
|
||||
@BinderParam(BindNodeConfigurationToXmlPayload.class) NodeConfiguration nodeConfiguration);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#deleteNode
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/nodeService/{nodeId}")
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<Void> deleteNode(@PathParam("nodeId") int nodeId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#configureVApp
|
||||
*/
|
||||
@PUT
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/vapp/{vAppId}")
|
||||
@Produces(VAPP_XML)
|
||||
@Consumes(VAPP_XML)
|
||||
@MapBinder(BindVAppConfigurationToXmlPayload.class)
|
||||
@ResponseParser(ParseTaskFromLocationHeader.class)
|
||||
ListenableFuture<? extends Task> configureVApp(
|
||||
@PathParam("vAppId") @ParamParser(VAppId.class) VApp vApp,
|
||||
VAppConfiguration configuration);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getCustomizationOptionsOfCatalogItem
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/template/{catalogItemId}/options/customization")
|
||||
@XMLResponseParser(CustomizationParametersHandler.class)
|
||||
@Consumes(CATALOGITEMCUSTOMIZATIONPARAMETERS_XML)
|
||||
ListenableFuture<? extends CustomizationParameters> getCustomizationOptionsOfCatalogItem(
|
||||
@PathParam("catalogItemId") String catalogItemId);
|
||||
|
||||
}
|
|
@ -1,146 +0,0 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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 java.util.SortedSet;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.vcloud.VCloudClient;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.VApp;
|
||||
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.NodeConfiguration;
|
||||
import org.jclouds.vcloud.terremark.domain.Protocol;
|
||||
import org.jclouds.vcloud.terremark.domain.PublicIpAddress;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkOrganization;
|
||||
import org.jclouds.vcloud.terremark.domain.VAppConfiguration;
|
||||
import org.jclouds.vcloud.terremark.options.AddInternetServiceOptions;
|
||||
import org.jclouds.vcloud.terremark.options.AddNodeOptions;
|
||||
|
||||
/**
|
||||
* Provides access to VCloud resources via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
* @see <a href="https://community.vcloudexpress.terremark.com/en-us/discussion_forums/f/60.aspx" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Timeout(duration = 300, timeUnit = TimeUnit.SECONDS)
|
||||
public interface TerremarkClient extends VCloudClient {
|
||||
|
||||
TerremarkOrganization getDefaultOrganization();
|
||||
|
||||
TerremarkOrganization getOrganization(String orgId);
|
||||
|
||||
CustomizationParameters getCustomizationOptionsOfCatalogItem(String catalogItemId);
|
||||
|
||||
/**
|
||||
* This call returns a list of public IP addresses.
|
||||
*/
|
||||
SortedSet<PublicIpAddress> getPublicIpsAssociatedWithVDC(String vDCId);
|
||||
|
||||
void deletePublicIp(int ipId);
|
||||
|
||||
/**
|
||||
* Allocate a new public IP
|
||||
*
|
||||
* @param vDCId
|
||||
* @return
|
||||
*/
|
||||
PublicIpAddress activatePublicIpInVDC(String vDCId);
|
||||
|
||||
/**
|
||||
* The call creates a new internet server, including protocol and port information. The public IP
|
||||
* is dynamically allocated.
|
||||
*
|
||||
*/
|
||||
InternetService addInternetServiceToVDC(String vDCId, String serviceName, Protocol protocol,
|
||||
int port, AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* This call adds an internet service to a known, existing public IP. This call is identical to
|
||||
* Add Internet Service except you specify the public IP in the request.
|
||||
*
|
||||
*/
|
||||
InternetService addInternetServiceToExistingIp(int existingIpId, String serviceName,
|
||||
Protocol protocol, int port, AddInternetServiceOptions... options);
|
||||
|
||||
void deleteInternetService(int internetServiceId);
|
||||
|
||||
InternetService getInternetService(int internetServiceId);
|
||||
|
||||
SortedSet<InternetService> getAllInternetServicesInVDC(String vDCId);
|
||||
|
||||
/**
|
||||
* This call returns information about the internet service on a public IP.
|
||||
*/
|
||||
SortedSet<InternetService> getInternetServicesOnPublicIp(int ipId);
|
||||
|
||||
SortedSet<InternetService> getPublicIp(int ipId);
|
||||
|
||||
/**
|
||||
* This call adds a node to an existing internet service.
|
||||
* <p/>
|
||||
* Every vDC is assigned a network of 60 IP addresses that can be used as nodes. Each node can
|
||||
* associated with multiple internet service. You can get a list of the available IP addresses by
|
||||
* calling Get IP Addresses for a Network.
|
||||
*
|
||||
* @param internetServiceId
|
||||
* @param ipAddress
|
||||
* @param name
|
||||
* @param port
|
||||
* @param options
|
||||
* @return
|
||||
*/
|
||||
Node addNode(int internetServiceId, String ipAddress, String name, int port,
|
||||
AddNodeOptions... options);
|
||||
|
||||
Node getNode(int nodeId);
|
||||
|
||||
Node configureNode(int nodeId, NodeConfiguration nodeConfiguration);
|
||||
|
||||
void deleteNode(int nodeId);
|
||||
|
||||
SortedSet<Node> getNodes(int internetServiceId);
|
||||
|
||||
/**
|
||||
* This call configures the settings of an existing vApp by passing the new configuration. The
|
||||
* existing vApp must be in a powered off state (status = 2).
|
||||
* <p/>
|
||||
* You can change the following items for a vApp.
|
||||
* <ol>
|
||||
* <li>vApp name Number of virtual CPUs</li>
|
||||
* <li>Amount of virtual memory</li>
|
||||
* <li>Add a virtual disk</li>
|
||||
* <li>Delete a virtual disk</li>
|
||||
* </ol>
|
||||
* You can make more than one change in a single request. For example, you can increase the
|
||||
* number of virtual CPUs and the amount of virtual memory in the same request.
|
||||
*
|
||||
* @param vApp
|
||||
* vApp to change in power state off
|
||||
* @param configuration
|
||||
* (s) to change
|
||||
* @return task of configuration change
|
||||
*/
|
||||
Task configureVApp(VApp vApp, VAppConfiguration configuration);
|
||||
|
||||
}
|
|
@ -18,6 +18,9 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark;
|
||||
|
||||
import static org.jclouds.vcloud.terremark.TerremarkECloudMediaType.INTERNETSERVICESLIST_XML;
|
||||
import static org.jclouds.vcloud.terremark.TerremarkECloudMediaType.INTERNETSERVICE_XML;
|
||||
|
||||
import java.util.SortedSet;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
|
@ -51,16 +54,16 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@RequestFilters(SetVCloudTokenCookie.class)
|
||||
public interface TerremarkECloudAsyncClient extends TerremarkAsyncClient {
|
||||
public interface TerremarkECloudAsyncClient extends TerremarkVCloudAsyncClient {
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#addInternetService
|
||||
* @see TerremarkVCloudExpressClient#addInternetService
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/internetServices")
|
||||
@Produces("application/vnd.tmrk.ecloud.internetService+xml")
|
||||
@Consumes("application/vnd.tmrk.ecloud.internetService+xml")
|
||||
@Produces(INTERNETSERVICE_XML)
|
||||
@Consumes(INTERNETSERVICE_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@MapBinder(AddInternetServiceOptions.class)
|
||||
@Override
|
||||
|
@ -70,25 +73,25 @@ public interface TerremarkECloudAsyncClient extends TerremarkAsyncClient {
|
|||
AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getAllInternetServices
|
||||
* @see TerremarkVCloudExpressClient#getAllInternetServices
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/internetServices")
|
||||
@Consumes("application/vnd.tmrk.ecloud.internetServicesList+xml")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
@Override
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getAllInternetServicesInVDC(
|
||||
@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#addInternetServiceToExistingIp
|
||||
* @see TerremarkVCloudExpressClient#addInternetServiceToExistingIp
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}/internetServices")
|
||||
@Produces("application/vnd.tmrk.ecloud.internetService+xml")
|
||||
@Consumes("application/vnd.tmrk.ecloud.internetService+xml")
|
||||
@Produces(INTERNETSERVICE_XML)
|
||||
@Consumes(INTERNETSERVICE_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@MapBinder(AddInternetServiceOptions.class)
|
||||
@Override
|
||||
|
@ -98,24 +101,24 @@ public interface TerremarkECloudAsyncClient extends TerremarkAsyncClient {
|
|||
AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getInternetServicesOnPublicIP
|
||||
* @see TerremarkVCloudExpressClient#getInternetServicesOnPublicIP
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}/internetServices")
|
||||
@Consumes("application/vnd.tmrk.ecloud.internetServicesList+xml")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
@Override
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getInternetServicesOnPublicIp(
|
||||
@PathParam("ipId") int ipId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getInternetService
|
||||
* @see TerremarkVCloudExpressClient#getInternetService
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}")
|
||||
@Consumes("application/vnd.tmrk.ecloud.internetServicesList+xml")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
@Override
|
||||
|
|
|
@ -30,7 +30,7 @@ import org.jclouds.concurrent.Timeout;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@Timeout(duration = 300, timeUnit = TimeUnit.SECONDS)
|
||||
public interface TerremarkECloudClient extends TerremarkClient {
|
||||
public interface TerremarkECloudClient extends TerremarkVCloudClient {
|
||||
|
||||
//TODO
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package org.jclouds.vcloud.terremark;
|
||||
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
/**
|
||||
* Resource Types used in Terremark eCloud
|
||||
*
|
||||
* @see MediaType
|
||||
*/
|
||||
public interface TerremarkECloudMediaType extends TerremarkVCloudMediaType {
|
||||
/**
|
||||
* "application/vnd.tmrk.ecloud.internetService+xml"
|
||||
*/
|
||||
public final static String INTERNETSERVICE_XML = "application/vnd.tmrk.ecloud.internetService+xml";
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.ecloud.internetService+xml"
|
||||
*/
|
||||
public final static MediaType INTERNETSERVICE_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.ecloud.internetService+xml");
|
||||
/**
|
||||
* "application/vnd.tmrk.ecloud.internetServicesList+xml"
|
||||
*/
|
||||
public final static String INTERNETSERVICESLIST_XML = "application/vnd.tmrk.ecloud.internetServicesList+xml";
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.ecloud.internetServicesList+xml"
|
||||
*/
|
||||
public final static MediaType INTERNETSERVICESLIST_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.ecloud.internetServicesList+xml");
|
||||
|
||||
}
|
|
@ -18,36 +18,79 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark;
|
||||
|
||||
import static javax.ws.rs.core.MediaType.APPLICATION_XML;
|
||||
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.KEYSLIST_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.util.Set;
|
||||
import java.util.SortedSet;
|
||||
|
||||
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.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
import org.jclouds.predicates.validators.DnsNameValidator;
|
||||
import org.jclouds.rest.annotations.BinderParam;
|
||||
import org.jclouds.rest.annotations.Endpoint;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
import org.jclouds.rest.annotations.MapBinder;
|
||||
import org.jclouds.rest.annotations.MapPayloadParam;
|
||||
import org.jclouds.rest.annotations.ParamParser;
|
||||
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.ReturnNullOnNotFoundOr404;
|
||||
import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404;
|
||||
import org.jclouds.vcloud.VCloudAsyncClient;
|
||||
import org.jclouds.vcloud.domain.Catalog;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.VApp;
|
||||
import org.jclouds.vcloud.domain.VDC;
|
||||
import org.jclouds.vcloud.endpoints.Org;
|
||||
import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
|
||||
import org.jclouds.vcloud.terremark.binders.BindCreateKeyToXmlPayload;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
import org.jclouds.vcloud.terremark.endpoints.KeysList;
|
||||
import org.jclouds.vcloud.terremark.xml.KeyPairHandler;
|
||||
import org.jclouds.vcloud.terremark.xml.KeyPairsHandler;
|
||||
import org.jclouds.vcloud.functions.CatalogIdToUri;
|
||||
import org.jclouds.vcloud.functions.VAppId;
|
||||
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.NodeConfiguration;
|
||||
import org.jclouds.vcloud.terremark.domain.Protocol;
|
||||
import org.jclouds.vcloud.terremark.domain.PublicIpAddress;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkOrganization;
|
||||
import org.jclouds.vcloud.terremark.domain.VAppConfiguration;
|
||||
import org.jclouds.vcloud.terremark.functions.ParseTaskFromLocationHeader;
|
||||
import org.jclouds.vcloud.terremark.functions.ReturnEmptySetOnResourceNotFoundException;
|
||||
import org.jclouds.vcloud.terremark.functions.ReturnVoidOnDeleteDefaultIp;
|
||||
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.TerremarkOrgHandler;
|
||||
import org.jclouds.vcloud.terremark.xml.TerremarkVDCHandler;
|
||||
import org.jclouds.vcloud.xml.CatalogHandler;
|
||||
import org.jclouds.vcloud.xml.VAppHandler;
|
||||
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
|
||||
/**
|
||||
* Provides access to VCloud resources via their REST API.
|
||||
* <p/>
|
||||
|
@ -56,73 +99,265 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@RequestFilters(SetVCloudTokenCookie.class)
|
||||
public interface TerremarkVCloudAsyncClient extends TerremarkAsyncClient {
|
||||
public interface TerremarkVCloudAsyncClient extends VCloudAsyncClient {
|
||||
|
||||
@GET
|
||||
@Endpoint(Org.class)
|
||||
@Consumes(ORG_XML)
|
||||
@XMLResponseParser(TerremarkOrgHandler.class)
|
||||
ListenableFuture<? extends TerremarkOrganization> getDefaultOrganization();
|
||||
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/org/{orgId}")
|
||||
@XMLResponseParser(TerremarkOrgHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
@Consumes(ORG_XML)
|
||||
ListenableFuture<? extends TerremarkOrganization> getOrganization(
|
||||
@PathParam("orgId") String orgId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#listKeyPairs
|
||||
* @see TerremarkVCloudExpressClient#getDefaultVDC
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(KeysList.class)
|
||||
@Consumes(KEYSLIST_XML)
|
||||
@XMLResponseParser(KeyPairsHandler.class)
|
||||
ListenableFuture<? extends Set<KeyPair>> listKeyPairs();
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VDC.class)
|
||||
@XMLResponseParser(TerremarkVDCHandler.class)
|
||||
@Consumes(VDC_XML)
|
||||
ListenableFuture<? extends VDC> getDefaultVDC();
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#listKeyPairsInOrg
|
||||
* Terremark does not have multiple catalogs, so we ignore this parameter.
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.Catalog.class)
|
||||
@XMLResponseParser(CatalogHandler.class)
|
||||
@Consumes(CATALOG_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends Catalog> getCatalog(String catalogId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getVDC
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/org/{orgId}/keys")
|
||||
@Consumes(KEYSLIST_XML)
|
||||
@XMLResponseParser(KeyPairsHandler.class)
|
||||
ListenableFuture<? extends Set<KeyPair>> listKeyPairsInOrg(@PathParam("orgId") String orgId);
|
||||
@Path("/vdc/{vDCId}")
|
||||
@XMLResponseParser(TerremarkVDCHandler.class)
|
||||
@Consumes(VDC_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends VDC> getVDC(@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#generateKeyPairInOrg
|
||||
* @see TerremarkVCloudExpressClient#instantiateVAppTemplateInVDC
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/org/{orgId}/keys")
|
||||
@Produces(KEYSLIST_XML)
|
||||
@Consumes(KEYSLIST_XML)
|
||||
@XMLResponseParser(KeyPairHandler.class)
|
||||
@MapBinder(BindCreateKeyToXmlPayload.class)
|
||||
ListenableFuture<? extends KeyPair> generateKeyPairInOrg(@PathParam("orgId") String orgId,
|
||||
@MapPayloadParam("name") String name, @MapPayloadParam("isDefault") boolean makeDefault);
|
||||
@Path("/vdc/{vDCId}/action/instantiateVAppTemplate")
|
||||
@Produces("application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml")
|
||||
@Consumes(VAPP_XML)
|
||||
@XMLResponseParser(VAppHandler.class)
|
||||
@MapBinder(TerremarkBindInstantiateVAppTemplateParamsToXmlPayload.class)
|
||||
ListenableFuture<? extends VApp> instantiateVAppTemplateInVDC(@PathParam("vDCId") String vDCId,
|
||||
@MapPayloadParam("name") @ParamValidators(DnsNameValidator.class) String appName,
|
||||
@MapPayloadParam("template") @ParamParser(CatalogIdToUri.class) String templateId,
|
||||
InstantiateVAppTemplateOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#getKeyPair
|
||||
* @see TerremarkVCloudExpressClient#addInternetService
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/internetServices")
|
||||
@Produces(INTERNETSERVICE_XML)
|
||||
@Consumes(INTERNETSERVICE_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@MapBinder(AddInternetServiceOptions.class)
|
||||
ListenableFuture<? extends InternetService> addInternetServiceToVDC(
|
||||
@PathParam("vDCId") String vDCId, @MapPayloadParam("name") String serviceName,
|
||||
@MapPayloadParam("protocol") Protocol protocol, @MapPayloadParam("port") int port,
|
||||
AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getAllInternetServices
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/key/{keyId}")
|
||||
@XMLResponseParser(KeyPairHandler.class)
|
||||
@Consumes(APPLICATION_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends KeyPair> getKeyPair(@PathParam("keyId") int keyId);
|
||||
|
||||
// TODO
|
||||
// /**
|
||||
// * @see TerremarkVCloudClient#configureKeyPair
|
||||
// */
|
||||
// @PUT
|
||||
// @Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
// @Path("/extensions/key/{keyId}")
|
||||
// @Produces(APPLICATION_XML)
|
||||
// @Consumes(APPLICATION_XML)
|
||||
// @XMLResponseParser(KeyPairHandler.class)
|
||||
// ListenableFuture<? extends KeyPair> configureKeyPair(
|
||||
// @PathParam("keyId") int keyId,
|
||||
// @BinderParam(BindKeyPairConfigurationToXmlPayload.class)
|
||||
// KeyPairConfiguration keyConfiguration);
|
||||
@Path("/extensions/vdc/{vDCId}/internetServices")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getAllInternetServicesInVDC(
|
||||
@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudClient#deleteKeyPair
|
||||
* @see TerremarkVCloudExpressClient#addInternetServiceToExistingIp
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}/internetServices")
|
||||
@Produces(INTERNETSERVICE_XML)
|
||||
@Consumes(INTERNETSERVICE_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@MapBinder(AddInternetServiceOptions.class)
|
||||
ListenableFuture<? extends InternetService> addInternetServiceToExistingIp(
|
||||
@PathParam("ipId") int existingIpId, @MapPayloadParam("name") String serviceName,
|
||||
@MapPayloadParam("protocol") Protocol protocol, @MapPayloadParam("port") int port,
|
||||
AddInternetServiceOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#deletePublicIp
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/key/{keyId}")
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<Void> deleteKeyPair(@PathParam("keyId") int keyId);
|
||||
@Path("/extensions/publicIp/{ipId}")
|
||||
@ExceptionParser(ReturnVoidOnDeleteDefaultIp.class)
|
||||
ListenableFuture<Void> deletePublicIp(@PathParam("ipId") int ipId);
|
||||
|
||||
}
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getInternetServicesOnPublicIP
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}/internetServices")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getInternetServicesOnPublicIp(
|
||||
@PathParam("ipId") int ipId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getPublicIp
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/publicIp/{ipId}")
|
||||
@Consumes(PUBLICIP_XML)
|
||||
@XMLResponseParser(InternetServicesHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends SortedSet<InternetService>> getPublicIp(@PathParam("ipId") int ipId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getPublicIpsAssociatedWithVDC
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/vdc/{vDCId}/publicIps")
|
||||
@Consumes(PUBLICIPSLIST_XML)
|
||||
@XMLResponseParser(PublicIpAddressesHandler.class)
|
||||
ListenableFuture<? extends SortedSet<PublicIpAddress>> getPublicIpsAssociatedWithVDC(
|
||||
@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#activatePublicIpInVDC
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/{vDCId}/publicIps")
|
||||
@XMLResponseParser(PublicIpAddressesHandler.class)
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<PublicIpAddress> activatePublicIpInVDC(@PathParam("vDCId") String vDCId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#deleteInternetService
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}")
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<Void> deleteInternetService(
|
||||
@PathParam("internetServiceId") int internetServiceId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getInternetService
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}")
|
||||
@Consumes(INTERNETSERVICESLIST_XML)
|
||||
@XMLResponseParser(InternetServiceHandler.class)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends InternetService> getInternetService(
|
||||
@PathParam("internetServiceId") int internetServiceId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#addNode
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}/nodeServices")
|
||||
@Produces(NODESERVICE_XML)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
@XMLResponseParser(NodeHandler.class)
|
||||
@MapBinder(AddNodeOptions.class)
|
||||
ListenableFuture<? extends Node> addNode(@PathParam("internetServiceId") int internetServiceId,
|
||||
@MapPayloadParam("ipAddress") String ipAddress, @MapPayloadParam("name") String name,
|
||||
@MapPayloadParam("port") int port, AddNodeOptions... options);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getNodes
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/internetService/{internetServiceId}/nodeServices")
|
||||
@XMLResponseParser(NodesHandler.class)
|
||||
@ExceptionParser(ReturnEmptySetOnResourceNotFoundException.class)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
ListenableFuture<? extends SortedSet<Node>> getNodes(
|
||||
@PathParam("internetServiceId") int internetServiceId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getNode
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/nodeService/{nodeId}")
|
||||
@XMLResponseParser(NodeHandler.class)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends Node> getNode(@PathParam("nodeId") int nodeId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#configureNode
|
||||
*/
|
||||
@PUT
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/nodeService/{nodeId}")
|
||||
@Produces(NODESERVICE_XML)
|
||||
@Consumes(NODESERVICE_XML)
|
||||
@XMLResponseParser(NodeHandler.class)
|
||||
ListenableFuture<? extends Node> configureNode(
|
||||
@PathParam("nodeId") int nodeId,
|
||||
@BinderParam(BindNodeConfigurationToXmlPayload.class) NodeConfiguration nodeConfiguration);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#deleteNode
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/nodeService/{nodeId}")
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<Void> deleteNode(@PathParam("nodeId") int nodeId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#configureVApp
|
||||
*/
|
||||
@PUT
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/vapp/{vAppId}")
|
||||
@Produces(VAPP_XML)
|
||||
@Consumes(VAPP_XML)
|
||||
@MapBinder(BindVAppConfigurationToXmlPayload.class)
|
||||
@ResponseParser(ParseTaskFromLocationHeader.class)
|
||||
ListenableFuture<? extends Task> configureVApp(
|
||||
@PathParam("vAppId") @ParamParser(VAppId.class) VApp vApp,
|
||||
VAppConfiguration configuration);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getCustomizationOptionsOfCatalogItem
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/template/{catalogItemId}/options/customization")
|
||||
@XMLResponseParser(CustomizationParametersHandler.class)
|
||||
@Consumes(CATALOGITEMCUSTOMIZATIONPARAMETERS_XML)
|
||||
ListenableFuture<? extends CustomizationParameters> getCustomizationOptionsOfCatalogItem(
|
||||
@PathParam("catalogItemId") String catalogItemId);
|
||||
|
||||
}
|
|
@ -18,11 +18,23 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
import org.jclouds.vcloud.VCloudClient;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.VApp;
|
||||
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.NodeConfiguration;
|
||||
import org.jclouds.vcloud.terremark.domain.Protocol;
|
||||
import org.jclouds.vcloud.terremark.domain.PublicIpAddress;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkOrganization;
|
||||
import org.jclouds.vcloud.terremark.domain.VAppConfiguration;
|
||||
import org.jclouds.vcloud.terremark.options.AddInternetServiceOptions;
|
||||
import org.jclouds.vcloud.terremark.options.AddNodeOptions;
|
||||
|
||||
/**
|
||||
* Provides access to VCloud resources via their REST API.
|
||||
|
@ -32,22 +44,103 @@ import org.jclouds.vcloud.terremark.domain.KeyPair;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@Timeout(duration = 300, timeUnit = TimeUnit.SECONDS)
|
||||
public interface TerremarkVCloudClient extends TerremarkClient {
|
||||
public interface TerremarkVCloudClient extends VCloudClient {
|
||||
|
||||
TerremarkOrganization getDefaultOrganization();
|
||||
|
||||
TerremarkOrganization getOrganization(String orgId);
|
||||
|
||||
CustomizationParameters getCustomizationOptionsOfCatalogItem(String catalogItemId);
|
||||
|
||||
/**
|
||||
* This call returns the keys previously created for your organization.
|
||||
* This call returns a list of public IP addresses.
|
||||
*/
|
||||
Set<KeyPair> listKeyPairs();
|
||||
SortedSet<PublicIpAddress> getPublicIpsAssociatedWithVDC(String vDCId);
|
||||
|
||||
Set<KeyPair> listKeyPairsInOrg(String orgId);
|
||||
void deletePublicIp(int ipId);
|
||||
|
||||
KeyPair generateKeyPairInOrg(String orgId, String name, boolean makeDefault);
|
||||
/**
|
||||
* Allocate a new public IP
|
||||
*
|
||||
* @param vDCId
|
||||
* @return
|
||||
*/
|
||||
PublicIpAddress activatePublicIpInVDC(String vDCId);
|
||||
|
||||
KeyPair getKeyPair(int keyPairId);
|
||||
/**
|
||||
* The call creates a new internet server, including protocol and port information. The public IP
|
||||
* is dynamically allocated.
|
||||
*
|
||||
*/
|
||||
InternetService addInternetServiceToVDC(String vDCId, String serviceName, Protocol protocol,
|
||||
int port, AddInternetServiceOptions... options);
|
||||
|
||||
// TODO
|
||||
// KeyPair configureKeyPair(int keyPairId, KeyPairConfiguration
|
||||
// keyPairConfiguration);
|
||||
/**
|
||||
* This call adds an internet service to a known, existing public IP. This call is identical to
|
||||
* Add Internet Service except you specify the public IP in the request.
|
||||
*
|
||||
*/
|
||||
InternetService addInternetServiceToExistingIp(int existingIpId, String serviceName,
|
||||
Protocol protocol, int port, AddInternetServiceOptions... options);
|
||||
|
||||
void deleteKeyPair(int keyPairId);
|
||||
}
|
||||
void deleteInternetService(int internetServiceId);
|
||||
|
||||
InternetService getInternetService(int internetServiceId);
|
||||
|
||||
SortedSet<InternetService> getAllInternetServicesInVDC(String vDCId);
|
||||
|
||||
/**
|
||||
* This call returns information about the internet service on a public IP.
|
||||
*/
|
||||
SortedSet<InternetService> getInternetServicesOnPublicIp(int ipId);
|
||||
|
||||
SortedSet<InternetService> getPublicIp(int ipId);
|
||||
|
||||
/**
|
||||
* This call adds a node to an existing internet service.
|
||||
* <p/>
|
||||
* Every vDC is assigned a network of 60 IP addresses that can be used as nodes. Each node can
|
||||
* associated with multiple internet service. You can get a list of the available IP addresses by
|
||||
* calling Get IP Addresses for a Network.
|
||||
*
|
||||
* @param internetServiceId
|
||||
* @param ipAddress
|
||||
* @param name
|
||||
* @param port
|
||||
* @param options
|
||||
* @return
|
||||
*/
|
||||
Node addNode(int internetServiceId, String ipAddress, String name, int port,
|
||||
AddNodeOptions... options);
|
||||
|
||||
Node getNode(int nodeId);
|
||||
|
||||
Node configureNode(int nodeId, NodeConfiguration nodeConfiguration);
|
||||
|
||||
void deleteNode(int nodeId);
|
||||
|
||||
SortedSet<Node> getNodes(int internetServiceId);
|
||||
|
||||
/**
|
||||
* This call configures the settings of an existing vApp by passing the new configuration. The
|
||||
* existing vApp must be in a powered off state (status = 2).
|
||||
* <p/>
|
||||
* You can change the following items for a vApp.
|
||||
* <ol>
|
||||
* <li>vApp name Number of virtual CPUs</li>
|
||||
* <li>Amount of virtual memory</li>
|
||||
* <li>Add a virtual disk</li>
|
||||
* <li>Delete a virtual disk</li>
|
||||
* </ol>
|
||||
* You can make more than one change in a single request. For example, you can increase the
|
||||
* number of virtual CPUs and the amount of virtual memory in the same request.
|
||||
*
|
||||
* @param vApp
|
||||
* vApp to change in power state off
|
||||
* @param configuration
|
||||
* (s) to change
|
||||
* @return task of configuration change
|
||||
*/
|
||||
Task configureVApp(VApp vApp, VAppConfiguration configuration);
|
||||
|
||||
}
|
|
@ -0,0 +1,128 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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 javax.ws.rs.core.MediaType.APPLICATION_XML;
|
||||
import static org.jclouds.vcloud.terremark.TerremarkVCloudExpressMediaType.KEYSLIST_XML;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
import org.jclouds.rest.annotations.Endpoint;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
import org.jclouds.rest.annotations.MapBinder;
|
||||
import org.jclouds.rest.annotations.MapPayloadParam;
|
||||
import org.jclouds.rest.annotations.RequestFilters;
|
||||
import org.jclouds.rest.annotations.XMLResponseParser;
|
||||
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
|
||||
import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404;
|
||||
import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
|
||||
import org.jclouds.vcloud.terremark.binders.BindCreateKeyToXmlPayload;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
import org.jclouds.vcloud.terremark.endpoints.KeysList;
|
||||
import org.jclouds.vcloud.terremark.xml.KeyPairHandler;
|
||||
import org.jclouds.vcloud.terremark.xml.KeyPairsHandler;
|
||||
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
|
||||
/**
|
||||
* Provides access to VCloud resources via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
* @see <a href="https://community.vcloudexpress.terremark.com/en-us/discussion_forums/f/60.aspx" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@RequestFilters(SetVCloudTokenCookie.class)
|
||||
public interface TerremarkVCloudExpressAsyncClient extends TerremarkVCloudAsyncClient {
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#listKeyPairs
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(KeysList.class)
|
||||
@Consumes(KEYSLIST_XML)
|
||||
@XMLResponseParser(KeyPairsHandler.class)
|
||||
ListenableFuture<? extends Set<KeyPair>> listKeyPairs();
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#listKeyPairsInOrg
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/org/{orgId}/keys")
|
||||
@Consumes(KEYSLIST_XML)
|
||||
@XMLResponseParser(KeyPairsHandler.class)
|
||||
ListenableFuture<? extends Set<KeyPair>> listKeyPairsInOrg(@PathParam("orgId") String orgId);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#generateKeyPairInOrg
|
||||
*/
|
||||
@POST
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/org/{orgId}/keys")
|
||||
@Produces(KEYSLIST_XML)
|
||||
@Consumes(KEYSLIST_XML)
|
||||
@XMLResponseParser(KeyPairHandler.class)
|
||||
@MapBinder(BindCreateKeyToXmlPayload.class)
|
||||
ListenableFuture<? extends KeyPair> generateKeyPairInOrg(@PathParam("orgId") String orgId,
|
||||
@MapPayloadParam("name") String name, @MapPayloadParam("isDefault") boolean makeDefault);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#getKeyPair
|
||||
*/
|
||||
@GET
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/key/{keyId}")
|
||||
@XMLResponseParser(KeyPairHandler.class)
|
||||
@Consumes(APPLICATION_XML)
|
||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||
ListenableFuture<? extends KeyPair> getKeyPair(@PathParam("keyId") int keyId);
|
||||
|
||||
// TODO
|
||||
// /**
|
||||
// * @see TerremarkVCloudClient#configureKeyPair
|
||||
// */
|
||||
// @PUT
|
||||
// @Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
// @Path("/extensions/key/{keyId}")
|
||||
// @Produces(APPLICATION_XML)
|
||||
// @Consumes(APPLICATION_XML)
|
||||
// @XMLResponseParser(KeyPairHandler.class)
|
||||
// ListenableFuture<? extends KeyPair> configureKeyPair(
|
||||
// @PathParam("keyId") int keyId,
|
||||
// @BinderParam(BindKeyPairConfigurationToXmlPayload.class)
|
||||
// KeyPairConfiguration keyConfiguration);
|
||||
|
||||
/**
|
||||
* @see TerremarkVCloudExpressClient#deleteKeyPair
|
||||
*/
|
||||
@DELETE
|
||||
@Endpoint(org.jclouds.vcloud.endpoints.VCloudApi.class)
|
||||
@Path("/extensions/key/{keyId}")
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
ListenableFuture<Void> deleteKeyPair(@PathParam("keyId") int keyId);
|
||||
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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 java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
|
||||
/**
|
||||
* Provides access to VCloud resources via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
* @see <a href="https://community.vcloudexpress.terremark.com/en-us/discussion_forums/f/60.aspx" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Timeout(duration = 300, timeUnit = TimeUnit.SECONDS)
|
||||
public interface TerremarkVCloudExpressClient extends TerremarkVCloudClient {
|
||||
|
||||
/**
|
||||
* This call returns the keys previously created for your organization.
|
||||
*/
|
||||
Set<KeyPair> listKeyPairs();
|
||||
|
||||
Set<KeyPair> listKeyPairsInOrg(String orgId);
|
||||
|
||||
KeyPair generateKeyPairInOrg(String orgId, String name, boolean makeDefault);
|
||||
|
||||
KeyPair getKeyPair(int keyPairId);
|
||||
|
||||
// TODO
|
||||
// KeyPair configureKeyPair(int keyPairId, KeyPairConfiguration
|
||||
// keyPairConfiguration);
|
||||
|
||||
void deleteKeyPair(int keyPairId);
|
||||
}
|
|
@ -25,7 +25,7 @@ import org.jclouds.http.config.JavaUrlHttpCommandExecutorServiceModule;
|
|||
import org.jclouds.logging.jdk.config.JDKLoggingModule;
|
||||
import org.jclouds.vcloud.VCloudContextBuilder;
|
||||
import org.jclouds.vcloud.terremark.compute.config.TerremarkVCloudComputeServiceContextModule;
|
||||
import org.jclouds.vcloud.terremark.config.TerremarkVCloudRestClientModule;
|
||||
import org.jclouds.vcloud.terremark.config.TerremarkVCloudExpressRestClientModule;
|
||||
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Module;
|
||||
|
@ -43,9 +43,9 @@ import com.google.inject.Module;
|
|||
* @author Adrian Cole
|
||||
* @see TerremarkVCloudComputeServiceContext
|
||||
*/
|
||||
public class TerremarkVCloudContextBuilder extends VCloudContextBuilder {
|
||||
public class TerremarkVCloudExpressContextBuilder extends VCloudContextBuilder {
|
||||
|
||||
public TerremarkVCloudContextBuilder(Properties props) {
|
||||
public TerremarkVCloudExpressContextBuilder(Properties props) {
|
||||
super(props);
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ public class TerremarkVCloudContextBuilder extends VCloudContextBuilder {
|
|||
|
||||
@Override
|
||||
protected void addClientModule(List<Module> modules) {
|
||||
modules.add(new TerremarkVCloudRestClientModule());
|
||||
modules.add(new TerremarkVCloudExpressRestClientModule());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.jclouds.vcloud.terremark;
|
||||
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
/**
|
||||
* Resource Types used in Terremark VCloud express
|
||||
*
|
||||
* @see MediaType
|
||||
*/
|
||||
public interface TerremarkVCloudExpressMediaType extends TerremarkVCloudMediaType {
|
||||
/**
|
||||
* "application/vnd.tmrk.vcloudExpress.keysList+xml"
|
||||
*/
|
||||
public final static String KEYSLIST_XML = "application/vnd.tmrk.vcloudExpress.keysList+xml";
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloudExpress.keysList+xml"
|
||||
*/
|
||||
public final static MediaType KEYSLIST_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.vcloudExpress.keysList+xml");
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.Constants.PROPERTY_API_VERSION;
|
||||
import static org.jclouds.Constants.PROPERTY_ENDPOINT;
|
||||
import static org.jclouds.vcloud.terremark.reference.TerremarkConstants.PROPERTY_TERREMARK_EXTENSION_NAME;
|
||||
import static org.jclouds.vcloud.terremark.reference.TerremarkConstants.PROPERTY_TERREMARK_EXTENSION_VERSION;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* Builds properties used in Terremark VCloud Clients
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class TerremarkVCloudExpressPropertiesBuilder extends TerremarkVCloudPropertiesBuilder {
|
||||
@Override
|
||||
protected Properties defaultProperties() {
|
||||
Properties properties = super.defaultProperties();
|
||||
properties.setProperty(PROPERTY_API_VERSION, "0.8a-ext1.6");
|
||||
properties.setProperty(PROPERTY_TERREMARK_EXTENSION_NAME, "vCloudExpressExtensions");
|
||||
properties.setProperty(PROPERTY_TERREMARK_EXTENSION_VERSION, "1.6");
|
||||
properties.setProperty(PROPERTY_ENDPOINT, "https://services.vcloudexpress.terremark.com/api");
|
||||
return properties;
|
||||
}
|
||||
|
||||
public TerremarkVCloudExpressPropertiesBuilder(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
}
|
|
@ -5,21 +5,11 @@ import javax.ws.rs.core.MediaType;
|
|||
import org.jclouds.vcloud.VCloudMediaType;
|
||||
|
||||
/**
|
||||
* Resource Types used in Terremark VCloud express
|
||||
* Resource Types used in Terremark VCloud
|
||||
*
|
||||
* @see MediaType
|
||||
*/
|
||||
public class TerremarkVCloudMediaType extends VCloudMediaType {
|
||||
/**
|
||||
* "application/vnd.tmrk.vcloudExpress.keysList+xml"
|
||||
*/
|
||||
public final static String KEYSLIST_XML = "application/vnd.tmrk.vcloudExpress.keysList+xml";
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloudExpress.keysList+xml"
|
||||
*/
|
||||
public final static MediaType KEYSLIST_XML_TYPE = new MediaType(
|
||||
"application", "vnd.tmrk.vcloudExpress.keysList+xml");
|
||||
public interface TerremarkVCloudMediaType extends VCloudMediaType {
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloud.publicIp+xml"
|
||||
|
@ -29,8 +19,8 @@ public class TerremarkVCloudMediaType extends VCloudMediaType {
|
|||
/**
|
||||
* "application/vnd.tmrk.vCloud.publicIp+xml"
|
||||
*/
|
||||
public final static MediaType PUBLICIP_XML_TYPE = new MediaType(
|
||||
"application", "vnd.tmrk.vCloud.publicIp+xml");
|
||||
public final static MediaType PUBLICIP_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.vCloud.publicIp+xml");
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloud.publicIpsList+xml"
|
||||
|
@ -40,8 +30,8 @@ public class TerremarkVCloudMediaType extends VCloudMediaType {
|
|||
/**
|
||||
* "application/vnd.tmrk.vCloud.publicIpsList+xml"
|
||||
*/
|
||||
public final static MediaType PUBLICIPSLIST_XML_TYPE = new MediaType(
|
||||
"application", "vnd.tmrk.vCloud.publicIpsList+xml");
|
||||
public final static MediaType PUBLICIPSLIST_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.vCloud.publicIpsList+xml");
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloud.internetService+xml"
|
||||
|
@ -51,8 +41,8 @@ public class TerremarkVCloudMediaType extends VCloudMediaType {
|
|||
/**
|
||||
* "application/vnd.tmrk.vCloud.internetService+xml"
|
||||
*/
|
||||
public final static MediaType INTERNETSERVICE_XML_TYPE = new MediaType(
|
||||
"application", "vnd.tmrk.vCloud.internetService+xml");
|
||||
public final static MediaType INTERNETSERVICE_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.vCloud.internetService+xml");
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloud.internetServicesList+xml"
|
||||
|
@ -62,8 +52,8 @@ public class TerremarkVCloudMediaType extends VCloudMediaType {
|
|||
/**
|
||||
* "application/vnd.tmrk.vCloud.internetServicesList+xml"
|
||||
*/
|
||||
public final static MediaType INTERNETSERVICESLIST_XML_TYPE = new MediaType(
|
||||
"application", "vnd.tmrk.vCloud.internetServicesList+xml");
|
||||
public final static MediaType INTERNETSERVICESLIST_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.vCloud.internetServicesList+xml");
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloud.nodeService+xml"
|
||||
|
@ -73,8 +63,8 @@ public class TerremarkVCloudMediaType extends VCloudMediaType {
|
|||
/**
|
||||
* "application/vnd.tmrk.vCloud.nodeService+xml"
|
||||
*/
|
||||
public final static MediaType NODESERVICE_XML_TYPE = new MediaType(
|
||||
"application", "vnd.tmrk.vCloud.nodeService+xml");
|
||||
public final static MediaType NODESERVICE_XML_TYPE = new MediaType("application",
|
||||
"vnd.tmrk.vCloud.nodeService+xml");
|
||||
|
||||
/**
|
||||
* "application/vnd.tmrk.vCloud.catalogItemCustomizationParameters+xml"
|
||||
|
@ -85,6 +75,5 @@ public class TerremarkVCloudMediaType extends VCloudMediaType {
|
|||
* "application/vnd.tmrk.vCloud.catalogItemCustomizationParameters+xml"
|
||||
*/
|
||||
public final static MediaType CATALOGITEMCUSTOMIZATIONPARAMETERS_XML_TYPE = new MediaType(
|
||||
"application",
|
||||
"vnd.tmrk.vCloud.catalogItemCustomizationParameters+xml");
|
||||
"application", "vnd.tmrk.vCloud.catalogItemCustomizationParameters+xml");
|
||||
}
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark;
|
||||
|
||||
import static org.jclouds.Constants.PROPERTY_API_VERSION;
|
||||
import static org.jclouds.Constants.PROPERTY_ENDPOINT;
|
||||
import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED;
|
||||
import static org.jclouds.vcloud.terremark.reference.TerremarkConstants.PROPERTY_TERREMARK_EXTENSION_NAME;
|
||||
import static org.jclouds.vcloud.terremark.reference.TerremarkConstants.PROPERTY_TERREMARK_EXTENSION_NS;
|
||||
|
@ -38,10 +36,6 @@ public class TerremarkVCloudPropertiesBuilder extends VCloudPropertiesBuilder {
|
|||
@Override
|
||||
protected Properties defaultProperties() {
|
||||
Properties properties = super.defaultProperties();
|
||||
properties.setProperty(PROPERTY_API_VERSION, "0.8a-ext1.6");
|
||||
properties.setProperty(PROPERTY_TERREMARK_EXTENSION_NAME, "vCloudExpressExtensions");
|
||||
properties.setProperty(PROPERTY_TERREMARK_EXTENSION_VERSION, "1.6");
|
||||
properties.setProperty(PROPERTY_ENDPOINT, "https://services.vcloudexpress.terremark.com/api");
|
||||
properties.setProperty("jclouds.dns_name_length_min", "1");
|
||||
properties.setProperty("jclouds.dns_name_length_max", "15");
|
||||
// with ssh key injection comes another reboot. allowing more time
|
||||
|
|
|
@ -43,7 +43,7 @@ import org.jclouds.vcloud.domain.TasksList;
|
|||
import org.jclouds.vcloud.domain.VApp;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.jclouds.vcloud.terremark.domain.InternetService;
|
||||
import org.jclouds.vcloud.terremark.domain.Node;
|
||||
import org.jclouds.vcloud.terremark.domain.Protocol;
|
||||
|
@ -59,12 +59,12 @@ import com.google.inject.internal.ImmutableSet;
|
|||
@Singleton
|
||||
public class TerremarkVCloudComputeClient extends BaseVCloudComputeClient {
|
||||
|
||||
private final TerremarkVCloudClient client;
|
||||
private final TerremarkVCloudExpressClient client;
|
||||
private final PopulateDefaultLoginCredentialsForImageStrategy credentialsProvider;
|
||||
private Provider<String> passwordGenerator;
|
||||
|
||||
@Inject
|
||||
protected TerremarkVCloudComputeClient(TerremarkVCloudClient client,
|
||||
protected TerremarkVCloudComputeClient(TerremarkVCloudExpressClient client,
|
||||
PopulateDefaultLoginCredentialsForImageStrategy credentialsProvider,
|
||||
@Named("PASSWORD") Provider<String> passwordGenerator, Predicate<String> successTester,
|
||||
Map<VAppStatus, NodeState> vAppStatusToNodeState) {
|
||||
|
|
|
@ -55,7 +55,7 @@ import org.jclouds.vcloud.compute.config.VCloudComputeServiceContextModule;
|
|||
import org.jclouds.vcloud.compute.strategy.VCloudDestroyNodeStrategy;
|
||||
import org.jclouds.vcloud.compute.strategy.VCloudListNodesStrategy;
|
||||
import org.jclouds.vcloud.compute.strategy.VCloudRebootNodeStrategy;
|
||||
import org.jclouds.vcloud.terremark.TerremarkClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.compute.TerremarkVCloudComputeClient;
|
||||
import org.jclouds.vcloud.terremark.compute.TerremarkVCloudComputeService;
|
||||
import org.jclouds.vcloud.terremark.compute.config.providers.QueryCatalogForVAppTemplatesAndConvertToImagesProvider;
|
||||
|
@ -96,13 +96,13 @@ public class TerremarkVCloudComputeServiceContextModule extends VCloudComputeSer
|
|||
|
||||
@Singleton
|
||||
public static class TerremarkVCloudAddNodeWithTagStrategy implements AddNodeWithTagStrategy {
|
||||
protected final TerremarkClient client;
|
||||
protected final TerremarkVCloudClient client;
|
||||
protected final TerremarkVCloudComputeClient computeClient;
|
||||
protected final GetNodeMetadataStrategy getNode;
|
||||
protected final TemplateToInstantiateOptions getOptions;
|
||||
|
||||
@Inject
|
||||
protected TerremarkVCloudAddNodeWithTagStrategy(TerremarkClient client,
|
||||
protected TerremarkVCloudAddNodeWithTagStrategy(TerremarkVCloudClient client,
|
||||
TerremarkVCloudComputeClient computeClient, GetNodeMetadataStrategy getNode,
|
||||
TemplateToInstantiateOptions getOptions) {
|
||||
this.client = client;
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.jclouds.compute.reference.ComputeServiceConstants;
|
|||
import org.jclouds.http.HttpResponseException;
|
||||
import org.jclouds.logging.Logger;
|
||||
import org.jclouds.util.Utils;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.jclouds.vcloud.terremark.compute.domain.OrgAndName;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
|
||||
|
@ -45,11 +45,11 @@ public class CreateUniqueKeyPair implements Function<OrgAndName, KeyPair> {
|
|||
@Resource
|
||||
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
|
||||
protected Logger logger = Logger.NULL;
|
||||
protected final TerremarkVCloudClient trmkClient;
|
||||
protected final TerremarkVCloudExpressClient trmkClient;
|
||||
protected Supplier<String> randomSuffix;
|
||||
|
||||
@Inject
|
||||
CreateUniqueKeyPair(TerremarkVCloudClient trmkClient,
|
||||
CreateUniqueKeyPair(TerremarkVCloudExpressClient trmkClient,
|
||||
Supplier<String> randomSuffix) {
|
||||
this.trmkClient = trmkClient;
|
||||
this.randomSuffix = randomSuffix;
|
||||
|
|
|
@ -27,7 +27,7 @@ import javax.inject.Singleton;
|
|||
|
||||
import org.jclouds.compute.reference.ComputeServiceConstants;
|
||||
import org.jclouds.logging.Logger;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.jclouds.vcloud.terremark.compute.domain.OrgAndName;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
|
||||
|
@ -42,11 +42,11 @@ public class DeleteKeyPair {
|
|||
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
|
||||
protected Logger logger = Logger.NULL;
|
||||
|
||||
final TerremarkVCloudClient terremarkClient;
|
||||
final TerremarkVCloudExpressClient terremarkClient;
|
||||
final ConcurrentMap<OrgAndName, KeyPair> credentialsMap;
|
||||
|
||||
@Inject
|
||||
DeleteKeyPair(TerremarkVCloudClient terremarkClient,
|
||||
DeleteKeyPair(TerremarkVCloudExpressClient terremarkClient,
|
||||
ConcurrentMap<OrgAndName, KeyPair> credentialsMap) {
|
||||
this.terremarkClient = terremarkClient;
|
||||
this.credentialsMap = credentialsMap;
|
||||
|
|
|
@ -24,8 +24,8 @@ import org.jclouds.http.RequiresHttp;
|
|||
import org.jclouds.rest.ConfiguresRestClient;
|
||||
import org.jclouds.vcloud.VCloudAsyncClient;
|
||||
import org.jclouds.vcloud.VCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkECloudAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkECloudClient;
|
||||
|
||||
|
@ -59,13 +59,13 @@ public class TerremarkECloudRestClientModule extends
|
|||
|
||||
@Provides
|
||||
@Singleton
|
||||
protected TerremarkAsyncClient provideTerremarkAsyncClient(TerremarkECloudAsyncClient in) {
|
||||
protected TerremarkVCloudAsyncClient provideTerremarkAsyncClient(TerremarkECloudAsyncClient in) {
|
||||
return in;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
protected TerremarkClient provideTerremarkClient(TerremarkECloudClient in) {
|
||||
protected TerremarkVCloudClient provideTerremarkClient(TerremarkECloudClient in) {
|
||||
return in;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,13 +34,13 @@ import org.jclouds.http.annotation.Redirection;
|
|||
import org.jclouds.http.annotation.ServerError;
|
||||
import org.jclouds.util.Utils;
|
||||
import org.jclouds.vcloud.config.BaseVCloudRestClientModule;
|
||||
import org.jclouds.vcloud.terremark.TerremarkAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.handlers.ParseTerremarkVCloudErrorFromHttpResponse;
|
||||
|
||||
import com.google.inject.Provides;
|
||||
|
||||
public abstract class TerremarkRestClientModule<S extends TerremarkClient, A extends TerremarkAsyncClient>
|
||||
public abstract class TerremarkRestClientModule<S extends TerremarkVCloudClient, A extends TerremarkVCloudAsyncClient>
|
||||
extends BaseVCloudRestClientModule<S, A> {
|
||||
|
||||
public TerremarkRestClientModule(Class<S> syncClientType, Class<A> asyncClientType) {
|
||||
|
|
|
@ -30,10 +30,10 @@ import org.jclouds.util.Utils;
|
|||
import org.jclouds.vcloud.VCloudAsyncClient;
|
||||
import org.jclouds.vcloud.VCloudClient;
|
||||
import org.jclouds.vcloud.domain.Organization;
|
||||
import org.jclouds.vcloud.terremark.TerremarkAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkOrganization;
|
||||
import org.jclouds.vcloud.terremark.endpoints.KeysList;
|
||||
|
||||
|
@ -46,34 +46,34 @@ import com.google.inject.Provides;
|
|||
*/
|
||||
@RequiresHttp
|
||||
@ConfiguresRestClient
|
||||
public class TerremarkVCloudRestClientModule extends
|
||||
TerremarkRestClientModule<TerremarkVCloudClient, TerremarkVCloudAsyncClient> {
|
||||
public class TerremarkVCloudExpressRestClientModule extends
|
||||
TerremarkRestClientModule<TerremarkVCloudExpressClient, TerremarkVCloudExpressAsyncClient> {
|
||||
|
||||
public TerremarkVCloudRestClientModule() {
|
||||
super(TerremarkVCloudClient.class, TerremarkVCloudAsyncClient.class);
|
||||
public TerremarkVCloudExpressRestClientModule() {
|
||||
super(TerremarkVCloudExpressClient.class, TerremarkVCloudExpressAsyncClient.class);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
protected VCloudAsyncClient provideVCloudAsyncClient(TerremarkVCloudAsyncClient in) {
|
||||
protected VCloudAsyncClient provideVCloudAsyncClient(TerremarkVCloudExpressAsyncClient in) {
|
||||
return in;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
protected VCloudClient provideVCloudClient(TerremarkVCloudClient in) {
|
||||
protected VCloudClient provideVCloudClient(TerremarkVCloudExpressClient in) {
|
||||
return in;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
protected TerremarkAsyncClient provideTerremarkAsyncClient(TerremarkVCloudAsyncClient in) {
|
||||
protected TerremarkVCloudAsyncClient provideTerremarkAsyncClient(TerremarkVCloudExpressAsyncClient in) {
|
||||
return in;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
protected TerremarkClient provideTerremarkClient(TerremarkVCloudClient in) {
|
||||
protected TerremarkVCloudClient provideTerremarkClient(TerremarkVCloudExpressClient in) {
|
||||
return in;
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark.xml;
|
||||
|
||||
import static org.jclouds.vcloud.terremark.TerremarkVCloudMediaType.KEYSLIST_XML;
|
||||
import static org.jclouds.vcloud.terremark.TerremarkVCloudExpressMediaType.KEYSLIST_XML;
|
||||
import static org.jclouds.vcloud.util.Utils.newNamedResource;
|
||||
|
||||
import org.jclouds.vcloud.domain.NamedResource;
|
||||
|
@ -36,13 +36,13 @@ public class TerremarkOrgHandler extends OrgHandler {
|
|||
private NamedResource keysList;
|
||||
|
||||
public TerremarkOrganization getResult() {
|
||||
return new TerremarkOrganizationImpl(org.getId(), org.getName(), org
|
||||
.getLocation(), catalogs, vdcs, tasksLists, keysList);
|
||||
return new TerremarkOrganizationImpl(org.getId(), org.getName(), org.getLocation(), catalogs,
|
||||
vdcs, tasksLists, keysList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startElement(String uri, String localName, String qName,
|
||||
Attributes attributes) throws SAXException {
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
super.startElement(uri, localName, qName, attributes);
|
||||
if (qName.equals("Link")) {
|
||||
int typeIndex = attributes.getIndex("type");
|
||||
|
|
|
@ -48,11 +48,11 @@ import com.google.inject.Module;
|
|||
*/
|
||||
@Test(groups = "live", sequential = true, testName = "vcloud.TerremarkVCloudClientLiveTest")
|
||||
public class InternetServiceLiveTest {
|
||||
TerremarkVCloudClient tmClient;
|
||||
TerremarkVCloudExpressClient tmClient;
|
||||
|
||||
private SortedSet<InternetService> services = Sets.newTreeSet();
|
||||
|
||||
private RestContext<TerremarkVCloudClient, TerremarkVCloudAsyncClient> context;
|
||||
private RestContext<TerremarkVCloudExpressClient, TerremarkVCloudExpressAsyncClient> context;
|
||||
|
||||
public static final String PREFIX = System.getProperty("user.name") + "-terremark";
|
||||
|
||||
|
@ -97,7 +97,7 @@ public class InternetServiceLiveTest {
|
|||
Properties props = new Properties();
|
||||
if (endpoint != null && !"".equals(endpoint))
|
||||
props.setProperty("terremark.endpoint", endpoint);
|
||||
context = new RestContextFactory().createContext("terremark", identity, credential, ImmutableSet
|
||||
context = new RestContextFactory().createContext("trmk-vcloudexpress", identity, credential, ImmutableSet
|
||||
.<Module> of(new Log4JLoggingModule(), new JschSshClientModule()), props);
|
||||
|
||||
tmClient = context.getApi();
|
||||
|
|
|
@ -17,16 +17,16 @@ public class ProvidersInPropertiesTest {
|
|||
@Test
|
||||
public void testSupportedProviders() {
|
||||
Iterable<String> providers = Utils.getSupportedProviders();
|
||||
assert Iterables.contains(providers, "terremark") : providers;
|
||||
assert Iterables.contains(providers, "ecloud") : providers;
|
||||
assert Iterables.contains(providers, "trmk-vcloudexpress") : providers;
|
||||
assert Iterables.contains(providers, "trmk-ecloud") : providers;
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSupportedComputeServiceProviders() {
|
||||
Iterable<String> providers = ComputeServiceUtils.getSupportedProviders();
|
||||
assert Iterables.contains(providers, "terremark") : providers;
|
||||
assert Iterables.contains(providers, "ecloud") : providers;
|
||||
assert Iterables.contains(providers, "trmk-vcloudexpress") : providers;
|
||||
assert Iterables.contains(providers, "trmk-ecloud") : providers;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -79,11 +79,11 @@ import com.google.inject.Module;
|
|||
|
||||
public abstract class TerremarkClientLiveTest extends VCloudClientLiveTest {
|
||||
|
||||
protected String provider = "terremark";
|
||||
protected String provider = "trmk-vcloudexpress";
|
||||
protected String expectedOs = "Ubuntu Linux (32-bit)";
|
||||
protected String itemName = "Ubuntu JeOS 9.10 (32-bit)";
|
||||
|
||||
protected TerremarkClient tmClient;
|
||||
protected TerremarkVCloudClient tmClient;
|
||||
protected Factory sshFactory;
|
||||
private String publicIp;
|
||||
private InternetService is;
|
||||
|
@ -467,7 +467,7 @@ public abstract class TerremarkClientLiveTest extends VCloudClientLiveTest {
|
|||
ImmutableSet.<Module> of(new Log4JLoggingModule(),
|
||||
new JschSshClientModule()), props).buildInjector();
|
||||
|
||||
connection = tmClient = injector.getInstance(TerremarkClient.class);
|
||||
connection = tmClient = injector.getInstance(TerremarkVCloudClient.class);
|
||||
|
||||
sshFactory = injector.getInstance(SshClient.Factory.class);
|
||||
socketTester = new RetryablePredicate<IPSocket>(injector.getInstance(SocketOpen.class), 130,
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.testng.annotations.Test;
|
|||
public class TerremarkECloudClientLiveTest extends TerremarkClientLiveTest {
|
||||
@BeforeClass
|
||||
void setProvider() {
|
||||
this.provider = "ecloud";
|
||||
this.provider = "trmk-ecloud";
|
||||
this.itemName = "Ubuntu 8.04 LTS (x86)";
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
|
|||
import org.jclouds.vcloud.internal.VCloudVersionsAsyncClient;
|
||||
import org.jclouds.vcloud.internal.VCloudLoginAsyncClient.VCloudSession;
|
||||
import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
|
||||
import org.jclouds.vcloud.terremark.config.TerremarkVCloudRestClientModule;
|
||||
import org.jclouds.vcloud.terremark.config.TerremarkVCloudExpressRestClientModule;
|
||||
import org.jclouds.vcloud.terremark.domain.NodeConfiguration;
|
||||
import org.jclouds.vcloud.terremark.domain.Protocol;
|
||||
import org.jclouds.vcloud.terremark.functions.ReturnEmptySetOnResourceNotFoundException;
|
||||
|
@ -80,12 +80,12 @@ import com.google.inject.TypeLiteral;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "unit", sequential = true, testName = "vcloud.TerremarkVCloudAsyncClientTest")
|
||||
public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVCloudAsyncClient> {
|
||||
public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVCloudExpressAsyncClient> {
|
||||
/**
|
||||
* ignore parameter of catalog id since this doesn't work
|
||||
*/
|
||||
public void testCatalog() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getCatalog", String.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getCatalog", String.class);
|
||||
HttpRequest request = processor.createRequest(method, "1");
|
||||
|
||||
assertRequestLineEquals(request, "GET https://catalog HTTP/1.1");
|
||||
|
@ -100,7 +100,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testGetDefaultVDC() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getDefaultVDC");
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getDefaultVDC");
|
||||
HttpRequest request = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(request, "GET https://vdc/1 HTTP/1.1");
|
||||
|
@ -115,7 +115,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testGetVDC() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getVDC", String.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getVDC", String.class);
|
||||
HttpRequest request = processor.createRequest(method, "1");
|
||||
|
||||
assertRequestLineEquals(request, "GET https://vcloud/vdc/1 HTTP/1.1");
|
||||
|
@ -131,7 +131,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testInstantiateVAppTemplate() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("instantiateVAppTemplateInVDC",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("instantiateVAppTemplateInVDC",
|
||||
String.class, String.class, String.class, Array.newInstance(
|
||||
InstantiateVAppTemplateOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, "1", "name", 3 + "");
|
||||
|
@ -153,7 +153,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testInstantiateVAppTemplateOptions() throws SecurityException,
|
||||
NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("instantiateVAppTemplateInVDC",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("instantiateVAppTemplateInVDC",
|
||||
String.class, String.class, String.class, Array.newInstance(
|
||||
InstantiateVAppTemplateOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, "1", "name", 3 + "",
|
||||
|
@ -178,7 +178,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testActivatePublicIpInVDC() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("activatePublicIpInVDC",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("activatePublicIpInVDC",
|
||||
String.class);
|
||||
HttpRequest request = processor.createRequest(method, "1");
|
||||
|
||||
|
@ -195,7 +195,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testAddInternetService() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("addInternetServiceToVDC",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("addInternetServiceToVDC",
|
||||
String.class, String.class, Protocol.class, int.class, Array.newInstance(
|
||||
AddInternetServiceOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, "1", "name", Protocol.TCP, 22);
|
||||
|
@ -217,7 +217,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testAddInternetServiceOptions() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("addInternetServiceToVDC",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("addInternetServiceToVDC",
|
||||
String.class, String.class, Protocol.class, int.class, Array.newInstance(
|
||||
AddInternetServiceOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, "1", "name", Protocol.TCP, 22,
|
||||
|
@ -239,7 +239,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testGetAllInternetServices() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getAllInternetServicesInVDC",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getAllInternetServicesInVDC",
|
||||
String.class);
|
||||
HttpRequest request = processor.createRequest(method, "1");
|
||||
|
||||
|
@ -257,7 +257,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testGetInternetService() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getInternetService", int.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getInternetService", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
assertRequestLineEquals(request, "GET https://vcloud/extensions/internetService/12 HTTP/1.1");
|
||||
|
@ -273,7 +273,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testDeleteInternetService() throws SecurityException, NoSuchMethodException,
|
||||
IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class
|
||||
.getMethod("deleteInternetService", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
|
@ -291,7 +291,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testAddInternetServiceToExistingIp() throws SecurityException,
|
||||
NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("addInternetServiceToExistingIp",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("addInternetServiceToExistingIp",
|
||||
int.class, String.class, Protocol.class, int.class, Array.newInstance(
|
||||
AddInternetServiceOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, 12, "name", Protocol.TCP, 22);
|
||||
|
@ -313,7 +313,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testAddInternetServiceToExistingIpOptions() throws SecurityException,
|
||||
NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("addInternetServiceToExistingIp",
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("addInternetServiceToExistingIp",
|
||||
int.class, String.class, Protocol.class, int.class, Array.newInstance(
|
||||
AddInternetServiceOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, 12, "name", Protocol.TCP, 22,
|
||||
|
@ -334,7 +334,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testAddNode() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("addNode", int.class,
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("addNode", int.class,
|
||||
String.class, String.class, int.class, Array.newInstance(AddNodeOptions.class, 0)
|
||||
.getClass());
|
||||
HttpRequest request = processor.createRequest(method, 12, "10.2.2.2", "name", 22);
|
||||
|
@ -355,7 +355,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testAddNodeOptions() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("addNode", int.class,
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("addNode", int.class,
|
||||
String.class, String.class, int.class, Array.newInstance(AddNodeOptions.class, 0)
|
||||
.getClass());
|
||||
HttpRequest request = processor.createRequest(method, 12, "10.2.2.2", "name", 22,
|
||||
|
@ -377,7 +377,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testGetKeyPair() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getNode", int.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getNode", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
assertRequestLineEquals(request, "GET https://vcloud/extensions/nodeService/12 HTTP/1.1");
|
||||
|
@ -392,7 +392,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testConfigureNode() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("configureNode", int.class,
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("configureNode", int.class,
|
||||
NodeConfiguration.class);
|
||||
HttpRequest request = processor.createRequest(method, 12, new NodeConfiguration()
|
||||
.changeDescriptionTo("eggs"));
|
||||
|
@ -412,7 +412,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testGetNodes() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getNodes", int.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getNodes", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
assertRequestLineEquals(request,
|
||||
|
@ -428,7 +428,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testDeleteNode() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("deleteNode", int.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("deleteNode", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
assertRequestLineEquals(request, "DELETE https://vcloud/extensions/nodeService/12 HTTP/1.1");
|
||||
|
@ -444,7 +444,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
public void testGetCustomizationOptionsOfCatalogItem() throws SecurityException,
|
||||
NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod(
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod(
|
||||
"getCustomizationOptionsOfCatalogItem", String.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
|
@ -462,7 +462,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testListKeyPairs() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("listKeyPairs");
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("listKeyPairs");
|
||||
HttpRequest request = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(request, "GET https://keysList HTTP/1.1");
|
||||
|
@ -477,7 +477,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testListKeyPairsInOrg() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("listKeyPairsInOrg", String.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("listKeyPairsInOrg", String.class);
|
||||
HttpRequest request = processor.createRequest(method, "org1");
|
||||
|
||||
assertRequestLineEquals(request, "GET https://vcloud/extensions/org/org1/keys HTTP/1.1");
|
||||
|
@ -492,7 +492,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
public void testGetNode() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("getNode", int.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("getNode", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
assertRequestLineEquals(request, "GET https://vcloud/extensions/nodeService/12 HTTP/1.1");
|
||||
|
@ -531,7 +531,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
// }
|
||||
|
||||
public void testDeleteKeyPair() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TerremarkVCloudAsyncClient.class.getMethod("deleteKeyPair", int.class);
|
||||
Method method = TerremarkVCloudExpressAsyncClient.class.getMethod("deleteKeyPair", int.class);
|
||||
HttpRequest request = processor.createRequest(method, 12);
|
||||
|
||||
assertRequestLineEquals(request, "DELETE https://vcloud/extensions/key/12 HTTP/1.1");
|
||||
|
@ -552,8 +552,8 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
}
|
||||
|
||||
@Override
|
||||
protected TypeLiteral<RestAnnotationProcessor<TerremarkVCloudAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<TerremarkVCloudAsyncClient>>() {
|
||||
protected TypeLiteral<RestAnnotationProcessor<TerremarkVCloudExpressAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<TerremarkVCloudExpressAsyncClient>>() {
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -564,14 +564,14 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
|
||||
@Override
|
||||
public ContextSpec<?, ?> createContextSpec() {
|
||||
return new RestContextFactory().createContextSpec("terremark", "identity", "credential",
|
||||
return new RestContextFactory().createContextSpec("trmk-vcloudexpress", "identity", "credential",
|
||||
new Properties());
|
||||
}
|
||||
|
||||
@RequiresHttp
|
||||
@ConfiguresRestClient
|
||||
protected static class TerremarkVCloudRestClientModuleExtension extends
|
||||
TerremarkVCloudRestClientModule {
|
||||
TerremarkVCloudExpressRestClientModule {
|
||||
@Override
|
||||
protected URI provideAuthenticationURI(VCloudVersionsAsyncClient versionService,
|
||||
@Named(PROPERTY_API_VERSION) String version) {
|
||||
|
|
|
@ -46,34 +46,34 @@ public class TerremarkVCloudClientLiveTest extends TerremarkClientLiveTest {
|
|||
|
||||
@Test
|
||||
public void testKeysList() throws Exception {
|
||||
TerremarkVCloudClient tmVCloudClient = TerremarkVCloudClient.class.cast(tmClient);
|
||||
TerremarkOrganization org = tmVCloudClient.getDefaultOrganization();
|
||||
Set<KeyPair> response = tmVCloudClient.listKeyPairs();
|
||||
TerremarkVCloudExpressClient vCloudExpressClient = TerremarkVCloudExpressClient.class.cast(tmClient);
|
||||
TerremarkOrganization org = vCloudExpressClient.getDefaultOrganization();
|
||||
Set<KeyPair> response = vCloudExpressClient.listKeyPairs();
|
||||
assertNotNull(response);
|
||||
System.err.println(response);
|
||||
assertEquals(response, tmVCloudClient.listKeyPairsInOrg(org.getId()));
|
||||
assertEquals(response, vCloudExpressClient.listKeyPairsInOrg(org.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void prepare() {
|
||||
TerremarkVCloudClient tmVCloudClient = TerremarkVCloudClient.class.cast(tmClient);
|
||||
TerremarkVCloudExpressClient vCloudExpressClient = TerremarkVCloudExpressClient.class.cast(tmClient);
|
||||
|
||||
TerremarkOrganization org = tmVCloudClient.getDefaultOrganization();
|
||||
key = tmVCloudClient.generateKeyPairInOrg(org.getId(), "livetest", false);
|
||||
TerremarkOrganization org = vCloudExpressClient.getDefaultOrganization();
|
||||
key = vCloudExpressClient.generateKeyPairInOrg(org.getId(), "livetest", false);
|
||||
assertNotNull(key);
|
||||
System.err.println(key);
|
||||
assertEquals(key.getName(), "livetest");
|
||||
assertNotNull(key.getPrivateKey());
|
||||
assertNotNull(key.getFingerPrint());
|
||||
assertEquals(key.isDefault(), false);
|
||||
assertEquals(key.getFingerPrint(), tmVCloudClient.getKeyPair(key.getId()).getFingerPrint());
|
||||
assertEquals(key.getFingerPrint(), vCloudExpressClient.getKeyPair(key.getId()).getFingerPrint());
|
||||
}
|
||||
|
||||
@AfterTest
|
||||
void cleanup1() throws InterruptedException, ExecutionException, TimeoutException {
|
||||
if (key != null) {
|
||||
TerremarkVCloudClient tmVCloudClient = TerremarkVCloudClient.class.cast(tmClient);
|
||||
tmVCloudClient.deleteKeyPair(key.getId());
|
||||
TerremarkVCloudExpressClient vCloudExpressClient = TerremarkVCloudExpressClient.class.cast(tmClient);
|
||||
vCloudExpressClient.deleteKeyPair(key.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ import java.net.URI;
|
|||
import java.util.Properties;
|
||||
|
||||
import org.jclouds.http.HttpRequest;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudPropertiesBuilder;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressPropertiesBuilder;
|
||||
import org.jclouds.vcloud.terremark.domain.NodeConfiguration;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
@ -53,8 +53,8 @@ public class BindNodeConfigurationToXmlPayloadTest {
|
|||
@Override
|
||||
protected void configure() {
|
||||
Properties props = new Properties();
|
||||
Names.bindProperties(binder(), checkNotNull(new TerremarkVCloudPropertiesBuilder(props).build(),
|
||||
"properties"));
|
||||
Names.bindProperties(binder(), checkNotNull(new TerremarkVCloudExpressPropertiesBuilder(
|
||||
props).build(), "properties"));
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.jclouds.vcloud.domain.Task;
|
|||
import org.jclouds.vcloud.domain.VApp;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.domain.VAppTemplate;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.jclouds.vcloud.terremark.compute.strategy.ParseVAppTemplateDescriptionToGetDefaultLoginCredentials;
|
||||
import org.jclouds.vcloud.terremark.options.TerremarkInstantiateVAppTemplateOptions;
|
||||
import org.testng.annotations.Test;
|
||||
|
@ -56,7 +56,7 @@ public class TerremarkVCloudComputeClientTest {
|
|||
String description = new String(ByteStreams.toByteArray(is));
|
||||
VAppTemplate template = createMock(VAppTemplate.class);
|
||||
expect(template.getDescription()).andReturn(description).atLeastOnce();
|
||||
TerremarkVCloudClient client = createMock(TerremarkVCloudClient.class);
|
||||
TerremarkVCloudExpressClient client = createMock(TerremarkVCloudExpressClient.class);
|
||||
expect(client.getVAppTemplate("templateId")).andReturn(template);
|
||||
VApp vApp = createMock(VApp.class);
|
||||
|
||||
|
|
|
@ -30,8 +30,8 @@ import org.jclouds.compute.domain.Template;
|
|||
import org.jclouds.compute.domain.TemplateBuilder;
|
||||
import org.jclouds.rest.RestContext;
|
||||
import org.jclouds.vcloud.compute.VCloudComputeServiceLiveTest;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressAsyncClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
@ -49,7 +49,7 @@ public class TerremarkVCloudComputeServiceLiveTest extends VCloudComputeServiceL
|
|||
String endpoint = System.getProperty("jclouds.test.endpoint");
|
||||
if (endpoint != null && !"".equals(endpoint))
|
||||
System.setProperty("terremark.endpoint", endpoint);
|
||||
provider = "terremark";
|
||||
provider = "trmk-vcloudexpress";
|
||||
tag = "trmk";
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ public class TerremarkVCloudComputeServiceLiveTest extends VCloudComputeServiceL
|
|||
|
||||
public void testAssignability() throws Exception {
|
||||
@SuppressWarnings("unused")
|
||||
RestContext<TerremarkVCloudClient, TerremarkVCloudAsyncClient> tmContext = new ComputeServiceContextFactory()
|
||||
RestContext<TerremarkVCloudExpressClient, TerremarkVCloudExpressAsyncClient> tmContext = new ComputeServiceContextFactory()
|
||||
.createContext(provider, identity, credential).getProviderSpecificContext();
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ import static org.easymock.classextension.EasyMock.verify;
|
|||
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressClient;
|
||||
import org.jclouds.vcloud.terremark.compute.domain.OrgAndName;
|
||||
import org.jclouds.vcloud.terremark.domain.KeyPair;
|
||||
import org.testng.annotations.Test;
|
||||
|
@ -122,7 +122,7 @@ public class DeleteKeyPairTest {
|
|||
@SuppressWarnings("unchecked")
|
||||
private DeleteKeyPair setupStrategy() {
|
||||
ConcurrentMap<OrgAndName, KeyPair> credentialsMap = createMock(ConcurrentMap.class);
|
||||
TerremarkVCloudClient terremarkClient = createMock(TerremarkVCloudClient.class);
|
||||
TerremarkVCloudExpressClient terremarkClient = createMock(TerremarkVCloudExpressClient.class);
|
||||
|
||||
return new DeleteKeyPair(terremarkClient, credentialsMap);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import org.jclouds.http.functions.ParseSax;
|
|||
import org.jclouds.http.functions.config.ParserModule;
|
||||
import org.jclouds.vcloud.VCloudMediaType;
|
||||
import org.jclouds.vcloud.domain.internal.NamedResourceImpl;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudMediaType;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudExpressMediaType;
|
||||
import org.jclouds.vcloud.terremark.TerremarkVCloudPropertiesBuilder;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkOrganization;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
|
@ -39,9 +39,8 @@ public class TerremarkOrgHandlerTest extends BaseHandlerTest {
|
|||
public void configure() {
|
||||
super.configure();
|
||||
Properties props = new Properties();
|
||||
Names.bindProperties(binder(), checkNotNull(
|
||||
new TerremarkVCloudPropertiesBuilder(props).build(),
|
||||
"properties"));
|
||||
Names.bindProperties(binder(), checkNotNull(new TerremarkVCloudPropertiesBuilder(props)
|
||||
.build(), "properties"));
|
||||
}
|
||||
});
|
||||
factory = injector.getInstance(ParseSax.Factory.class);
|
||||
|
@ -53,55 +52,45 @@ public class TerremarkOrgHandlerTest extends BaseHandlerTest {
|
|||
InputStream is = getClass().getResourceAsStream("/terremark/org.xml");
|
||||
|
||||
TerremarkOrganization result = (TerremarkOrganization) factory.create(
|
||||
injector.getInstance(TerremarkOrgHandler.class)).parse(is);
|
||||
injector.getInstance(TerremarkOrgHandler.class)).parse(is);
|
||||
assertEquals(result.getName(), "adrian@jclouds.org");
|
||||
assertEquals(result.getId(), 48 + "");
|
||||
assertEquals(result.getLocation(), URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48"));
|
||||
assertEquals(
|
||||
result.getLocation(),
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48"));
|
||||
assertEquals(
|
||||
result.getCatalogs(),
|
||||
ImmutableMap
|
||||
.of(
|
||||
"Miami Environment 1 Catalog",
|
||||
new NamedResourceImpl(
|
||||
"catalog",
|
||||
"Miami Environment 1 Catalog",
|
||||
CATALOG_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32/catalog"))));
|
||||
result.getCatalogs(),
|
||||
ImmutableMap
|
||||
.of(
|
||||
"Miami Environment 1 Catalog",
|
||||
new NamedResourceImpl(
|
||||
"catalog",
|
||||
"Miami Environment 1 Catalog",
|
||||
CATALOG_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32/catalog"))));
|
||||
|
||||
assertEquals(result.getVDCs(), ImmutableMap.of("Miami Environment 1", new NamedResourceImpl(
|
||||
"32", "Miami Environment 1", VCloudMediaType.VDC_XML,
|
||||
URI.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32"))));
|
||||
assertEquals(
|
||||
result.getVDCs(),
|
||||
ImmutableMap
|
||||
.of(
|
||||
"Miami Environment 1",
|
||||
new NamedResourceImpl(
|
||||
"32",
|
||||
"Miami Environment 1",
|
||||
VCloudMediaType.VDC_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32"))));
|
||||
result.getTasksLists(),
|
||||
ImmutableMap
|
||||
.of(
|
||||
"Miami Environment 1 Tasks List",
|
||||
new NamedResourceImpl(
|
||||
"tasksList",
|
||||
"Miami Environment 1 Tasks List",
|
||||
TASKSLIST_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32/tasksList"))));
|
||||
assertEquals(
|
||||
result.getTasksLists(),
|
||||
ImmutableMap
|
||||
.of(
|
||||
"Miami Environment 1 Tasks List",
|
||||
new NamedResourceImpl(
|
||||
"tasksList",
|
||||
"Miami Environment 1 Tasks List",
|
||||
TASKSLIST_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32/tasksList"))));
|
||||
assertEquals(
|
||||
result.getKeysList(),
|
||||
new NamedResourceImpl(
|
||||
"keys",
|
||||
"Keys",
|
||||
TerremarkVCloudMediaType.KEYSLIST_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/extensions/org/48/keys")));
|
||||
result.getKeysList(),
|
||||
new NamedResourceImpl(
|
||||
"keys",
|
||||
"Keys",
|
||||
TerremarkVCloudExpressMediaType.KEYSLIST_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/extensions/org/48/keys")));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue