You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ab...@apache.org on 2013/08/29 20:31:46 UTC
[04/14] JCLOUDS-166,
JCLOUDS-167 - Removing async from vcloud and Terremark APIs/providers
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudApiMetadata.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudApiMetadata.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudApiMetadata.java
index d117523..58f20d9 100644
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudApiMetadata.java
+++ b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudApiMetadata.java
@@ -24,11 +24,10 @@ import java.util.Properties;
import org.jclouds.apis.ApiMetadata;
import org.jclouds.trmk.ecloud.compute.config.TerremarkECloudComputeServiceContextModule;
-import org.jclouds.trmk.ecloud.config.TerremarkECloudRestClientModule;
+import org.jclouds.trmk.ecloud.config.TerremarkECloudHttpApiModule;
import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudApiMetadata;
import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
import com.google.inject.Module;
/**
@@ -38,15 +37,7 @@ import com.google.inject.Module;
*/
public class TerremarkECloudApiMetadata extends TerremarkVCloudApiMetadata {
- /**
- * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(TerremarkECloudClient.class)} as
- * {@link TerremarkECloudAsyncClient} interface will be removed in jclouds 1.7.
- */
- @Deprecated
- public static final TypeToken<org.jclouds.rest.RestContext<TerremarkECloudClient, TerremarkECloudAsyncClient>> CONTEXT_TOKEN = new TypeToken<org.jclouds.rest.RestContext<TerremarkECloudClient, TerremarkECloudAsyncClient>>() {
- private static final long serialVersionUID = 1L;
- };
-
+
@Override
public Builder toBuilder() {
return new Builder().fromApiMetadata(this);
@@ -69,16 +60,14 @@ public class TerremarkECloudApiMetadata extends TerremarkVCloudApiMetadata {
public static class Builder extends TerremarkVCloudApiMetadata.Builder<Builder> {
- @SuppressWarnings("deprecation")
protected Builder() {
- super(TerremarkECloudClient.class, TerremarkECloudAsyncClient.class);
id("trmk-ecloud")
.name("Terremark Enterprise Cloud v2.8 API")
.version("0.8b-ext2.8")
.defaultEndpoint("https://services.enterprisecloud.terremark.com/api")
.documentation(URI.create("http://support.theenterprisecloud.com/kb/default.asp?id=533&Lang=1&SID="))
.defaultProperties(TerremarkECloudApiMetadata.defaultProperties())
- .defaultModules(ImmutableSet.<Class<? extends Module>>of(TerremarkECloudRestClientModule.class, TerremarkECloudComputeServiceContextModule.class));
+ .defaultModules(ImmutableSet.<Class<? extends Module>>of(TerremarkECloudHttpApiModule.class, TerremarkECloudComputeServiceContextModule.class));
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudAsyncClient.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudAsyncClient.java
deleted file mode 100644
index 5aec317..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudAsyncClient.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_XML;
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.INTERNETSERVICESLIST_XML;
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.INTERNETSERVICE_XML;
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.IPADDRESS_LIST_XML;
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.KEYSLIST_XML;
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.PUBLICIP_XML;
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.VAPPEXTINFO_XML;
-import static org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType.NETWORK_XML;
-import static org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType.ORG_XML;
-
-import java.net.URI;
-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.Produces;
-
-import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.XMLResponseParser;
-import org.jclouds.trmk.ecloud.domain.ECloudOrg;
-import org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClient;
-import org.jclouds.trmk.ecloud.features.TagOperationsAsyncClient;
-import org.jclouds.trmk.ecloud.xml.ECloudOrgHandler;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
-import org.jclouds.trmk.vcloud_0_8.binders.BindCreateKeyToXmlPayload;
-import org.jclouds.trmk.vcloud_0_8.binders.OrgNameVDCNameNetworkNameToEndpoint;
-import org.jclouds.trmk.vcloud_0_8.domain.InternetService;
-import org.jclouds.trmk.vcloud_0_8.domain.IpAddress;
-import org.jclouds.trmk.vcloud_0_8.domain.KeyPair;
-import org.jclouds.trmk.vcloud_0_8.domain.Network;
-import org.jclouds.trmk.vcloud_0_8.domain.NetworkExtendedInfo;
-import org.jclouds.trmk.vcloud_0_8.domain.Protocol;
-import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
-import org.jclouds.trmk.vcloud_0_8.domain.VAppExtendedInfo;
-import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
-import org.jclouds.trmk.vcloud_0_8.functions.OrgNameToEndpoint;
-import org.jclouds.trmk.vcloud_0_8.functions.OrgURIToKeysListEndpoint;
-import org.jclouds.trmk.vcloud_0_8.functions.VDCURIToInternetServicesEndpoint;
-import org.jclouds.trmk.vcloud_0_8.functions.VDCURIToPublicIPsEndpoint;
-import org.jclouds.trmk.vcloud_0_8.options.AddInternetServiceOptions;
-import org.jclouds.trmk.vcloud_0_8.xml.InternetServiceHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.InternetServicesHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.IpAddressesHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.KeyPairByNameHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.KeyPairHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.KeyPairsHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.NetworkExtendedInfoHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.NetworkHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.PublicIpAddressHandler;
-import org.jclouds.trmk.vcloud_0_8.xml.VAppExtendedInfoHandler;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides access to eCloud resources via their REST API.
- * <p/>
- *
- * @see <a href=
- * "http://support.theenterprisecloud.com/kb/default.asp?id=645&Lang=1&SID="
- * />
- * @author Adrian Cole
- * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(TerremarkECloudClient.class)} as
- * {@link TerremarkECloudAsyncClient} interface will be removed in jclouds 1.7.
- */
-@Deprecated
-@RequestFilters(SetVCloudTokenCookie.class)
-public interface TerremarkECloudAsyncClient extends TerremarkVCloudAsyncClient {
- /**
- * Provides asynchronous access to Data Center Operations.
- *
- */
- @Delegate
- DataCenterOperationsAsyncClient getDataCenterOperationsClient();
-
- /**
- * Provides asynchronous access to Tag Operations.
- *
- */
- @Delegate
- TagOperationsAsyncClient getTagOperationsClient();
-
- @Override
- @GET
- @XMLResponseParser(ECloudOrgHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- @Consumes(ORG_XML)
- ListenableFuture<? extends ECloudOrg> getOrg(@EndpointParam URI orgId);
-
- @Override
- @GET
- @XMLResponseParser(ECloudOrgHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- @Consumes(ORG_XML)
- ListenableFuture<? extends ECloudOrg> findOrgNamed(
- @Nullable @EndpointParam(parser = OrgNameToEndpoint.class) String orgName);
-
- /**
- * @see TerremarkVCloudExpressClient#getAllInternetServices
- */
- @GET
- @Consumes(INTERNETSERVICESLIST_XML)
- @XMLResponseParser(InternetServicesHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- @Override
- ListenableFuture<? extends Set<InternetService>> getAllInternetServicesInVDC(
- @EndpointParam(parser = VDCURIToInternetServicesEndpoint.class) URI vDCId);
-
- /**
- * @see TerremarkVCloudExpressClient#activatePublicIpInVDC
- */
- @POST
- @Consumes(PUBLICIP_XML)
- @XMLResponseParser(PublicIpAddressHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<PublicIpAddress> activatePublicIpInVDC(
- @EndpointParam(parser = VDCURIToPublicIPsEndpoint.class) URI vDCId);
-
- /**
- * @see TerremarkVCloudExpressClient#addInternetServiceToExistingIp
- */
- @POST
- @Path("/internetServices")
- @Produces(INTERNETSERVICE_XML)
- @Consumes(INTERNETSERVICE_XML)
- @XMLResponseParser(InternetServiceHandler.class)
- @MapBinder(AddInternetServiceOptions.class)
- @Override
- ListenableFuture<? extends InternetService> addInternetServiceToExistingIp(@EndpointParam URI existingIpId,
- @PayloadParam("name") String serviceName, @PayloadParam("protocol") Protocol protocol,
- @PayloadParam("port") int port, AddInternetServiceOptions... options);
-
- /**
- * @see TerremarkVCloudExpressClient#getInternetServicesOnPublicIP
- */
- @GET
- @Path("/internetServices")
- @Consumes(INTERNETSERVICESLIST_XML)
- @XMLResponseParser(InternetServicesHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- @Override
- ListenableFuture<? extends Set<InternetService>> getInternetServicesOnPublicIp(@EndpointParam URI ipId);
-
- /**
- * @see TerremarkVCloudExpressClient#getInternetService
- */
- @GET
- @Consumes(INTERNETSERVICESLIST_XML)
- @XMLResponseParser(InternetServiceHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- @Override
- ListenableFuture<? extends InternetService> getInternetService(@EndpointParam URI internetServiceId);
-
- /**
- * @see TerremarkVCloudExpressClient#findKeyPairInOrgNamed
- */
- @GET
- @XMLResponseParser(KeyPairByNameHandler.class)
- @Consumes(KEYSLIST_XML)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<? extends KeyPair> findKeyPairInOrg(
- @Nullable @EndpointParam(parser = OrgURIToKeysListEndpoint.class) URI org, String keyName);
-
- /**
- * @see TerremarkVCloudExpressClient#listKeyPairsInOrg
- */
- @GET
- @Consumes(KEYSLIST_XML)
- @XMLResponseParser(KeyPairsHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<KeyPair>> listKeyPairsInOrg(
- @Nullable @EndpointParam(parser = OrgURIToKeysListEndpoint.class) URI org);
-
- /**
- * @see TerremarkECloudClient#listKeyPairs
- */
- @GET
- @Consumes(KEYSLIST_XML)
- @XMLResponseParser(KeyPairsHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<KeyPair>> listKeyPairs(@EndpointParam URI keysList);
-
- /**
- * @see TerremarkECloudClient#generateKeyPairInOrg
- */
- @POST
- @Produces(KEYSLIST_XML)
- @Consumes(KEYSLIST_XML)
- @XMLResponseParser(KeyPairHandler.class)
- @MapBinder(BindCreateKeyToXmlPayload.class)
- ListenableFuture<? extends KeyPair> generateKeyPairInOrg(
- @EndpointParam(parser = OrgURIToKeysListEndpoint.class) URI org, @PayloadParam("name") String name,
- @PayloadParam("isDefault") boolean makeDefault);
-
- /**
- * @see TerremarkECloudClient#getKeyPair
- */
- @GET
- @XMLResponseParser(KeyPairHandler.class)
- @Consumes(APPLICATION_XML)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<? extends KeyPair> getKeyPair(@EndpointParam URI keyId);
-
- /**
- * @see TerremarkECloudClient#deleteKeyPair
- */
- @DELETE
- @Fallback(VoidOnNotFoundOr404.class)
- ListenableFuture<Void> deleteKeyPair(@EndpointParam URI keyId);
-
- /**
- * @see TerremarkECloudClient#findNetworkInOrgVDCNamed
- */
- @Override
- @GET
- @Consumes(NETWORK_XML)
- @XMLResponseParser(NetworkHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- @MapBinder(OrgNameVDCNameNetworkNameToEndpoint.class)
- ListenableFuture<? extends Network> findNetworkInOrgVDCNamed(@Nullable @PayloadParam("orgName") String orgName,
- @Nullable @PayloadParam("vdcName") String vdcName, @PayloadParam("resourceName") String networkName);
-
- /**
- * @see TerremarkECloudClient#getNetwork
- */
- @Override
- @GET
- @Consumes(NETWORK_XML)
- @XMLResponseParser(NetworkHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<? extends Network> getNetwork(@EndpointParam URI network);
-
- /**
- * @see TerremarkECloudClient#getNetworkExtendedInfo
- */
- @GET
- @XMLResponseParser(NetworkExtendedInfoHandler.class)
- @Consumes(APPLICATION_XML)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<? extends NetworkExtendedInfo> getNetworkExtendedInfo(@EndpointParam URI network);
-
- /**
- * @see TerremarkECloudClient#getIpAddresses
- */
- @GET
- @Consumes(IPADDRESS_LIST_XML)
- @XMLResponseParser(IpAddressesHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<IpAddress>> getIpAddresses(@EndpointParam URI network);
-
- /**
- * @see TerremarkVCloudExpressClient#getInternetService
- */
- @GET
- @Consumes(VAPPEXTINFO_XML)
- @XMLResponseParser(VAppExtendedInfoHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- ListenableFuture<? extends VAppExtendedInfo> getVAppExtendedInfo(@EndpointParam URI href);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudClient.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudClient.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudClient.java
deleted file mode 100644
index 78cd5f9..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/TerremarkECloudClient.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud;
-
-import java.net.URI;
-import java.util.Set;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.trmk.ecloud.domain.ECloudOrg;
-import org.jclouds.trmk.ecloud.features.DataCenterOperationsClient;
-import org.jclouds.trmk.ecloud.features.TagOperationsClient;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
-import org.jclouds.trmk.vcloud_0_8.domain.IpAddress;
-import org.jclouds.trmk.vcloud_0_8.domain.Network;
-import org.jclouds.trmk.vcloud_0_8.domain.NetworkExtendedInfo;
-import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
-import org.jclouds.trmk.vcloud_0_8.domain.VAppExtendedInfo;
-
-/**
- * Provides access to VCloud resources via their REST API.
- * <p/>
- *
- * @see <a href=
- * "http://support.theenterprisecloud.com/kb/default.asp?id=645&Lang=1&SID="
- * />
- * @author Adrian Cole
- */
-public interface TerremarkECloudClient extends TerremarkVCloudClient {
- /**
- * Provides synchronous access to Data Center Operations.
- *
- */
- @Delegate
- DataCenterOperationsClient getDataCenterOperationsClient();
-
- /**
- * Provides synchronous access to Data Center Operations.
- *
- */
- @Delegate
- TagOperationsClient getTagOperationsClient();
-
- /**
- * {@inheritDoc}
- */
- @Override
- ECloudOrg getOrg(URI orgId);
-
- /**
- * Allocate a new public IP
- *
- * @param vDCId
- * @return
- * @throws org.jclouds.rest.InsufficientResourcesException
- * if there's no additional ips available
- */
- PublicIpAddress activatePublicIpInVDC(URI vDCId);
-
- Network findNetworkInOrgVDCNamed(@Nullable String orgName, @Nullable String vdc, String networkName);
-
- Network getNetwork(URI network);
-
- NetworkExtendedInfo getNetworkExtendedInfo(URI network);
-
- Set<IpAddress> getIpAddresses(URI network);
-
- /**
- * Returns extended information for the vApp.
- *
- * @param vApp
- * The URI at which the vApp information is available.
- * @return Extended vApp information like tags, long name, network adapter
- * information.
- */
- VAppExtendedInfo getVAppExtendedInfo(URI href);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudHttpApiModule.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudHttpApiModule.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudHttpApiModule.java
new file mode 100644
index 0000000..78b98ce
--- /dev/null
+++ b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudHttpApiModule.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.trmk.ecloud.config;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.rest.ConfiguresRestClient;
+import org.jclouds.trmk.ecloud.TerremarkECloudApi;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
+import org.jclouds.trmk.vcloud_0_8.config.DefaultVCloudReferencesModule;
+import org.jclouds.trmk.vcloud_0_8.config.TerremarkVCloudHttpApiModule;
+import org.jclouds.trmk.vcloud_0_8.domain.Network;
+import org.jclouds.trmk.vcloud_0_8.domain.NetworkExtendedInfo;
+import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
+
+import com.google.common.base.Predicate;
+import com.google.inject.Injector;
+import com.google.inject.Provides;
+
+/**
+ * Configures the VCloud authentication service connection, including logging
+ * and http transport.
+ *
+ * @author Adrian Cole
+ */
+@ConfiguresRestClient
+public class TerremarkECloudHttpApiModule extends
+ TerremarkVCloudHttpApiModule<TerremarkECloudApi> {
+
+ @Provides
+ @Singleton
+ protected TerremarkVCloudApi provideTerremarkApi(TerremarkECloudApi in) {
+ return in;
+ }
+
+ @Singleton
+ public static class IsDMZNetwork implements Predicate<ReferenceType> {
+ private final TerremarkECloudApi client;
+
+ @Inject
+ public IsDMZNetwork(TerremarkECloudApi client) {
+ this.client = client;
+ }
+
+ @Override
+ public boolean apply(ReferenceType arg0) {
+ // TODO FIXME XXX: In Terremark Enterprise environment with multiple
+ // VDC's
+ // this does not
+ // work well.
+ // Each VDC will have different network subnets. So we cannot assume the
+ // default VDC's
+ // networks will
+ // work with non-default VDC's. So make PROPERTY_VCLOUD_DEFAULT_NETWORK
+ // optional. If
+ // this property
+ // is not set, they are expected to add NetworkConfig to the options
+ // when
+ // launching a
+ // server.
+ Network orgNetwork = client.getNetwork(arg0.getHref());
+ NetworkExtendedInfo terremarkNetwork = client.getNetworkExtendedInfo(checkNotNull(
+ checkNotNull(orgNetwork, "network at: " + arg0).getNetworkExtension(), "network extension for: " + arg0)
+ .getHref());
+ return checkNotNull(terremarkNetwork, "terremark network extension at: " + orgNetwork.getNetworkExtension())
+ .getNetworkType() == NetworkExtendedInfo.Type.DMZ;
+ }
+ }
+
+ @Override
+ protected void installDefaultVCloudEndpointsModule() {
+ install(new DefaultVCloudReferencesModule() {
+
+ @Override
+ protected Predicate<ReferenceType> provideDefaultNetworkSelector(Injector i) {
+ return i.getInstance(IsDMZNetwork.class);
+ }
+
+ });
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudRestClientModule.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudRestClientModule.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudRestClientModule.java
deleted file mode 100644
index 8355256..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/config/TerremarkECloudRestClientModule.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud.config;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.rest.ConfiguresRestClient;
-import org.jclouds.trmk.ecloud.TerremarkECloudAsyncClient;
-import org.jclouds.trmk.ecloud.TerremarkECloudClient;
-import org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClient;
-import org.jclouds.trmk.ecloud.features.DataCenterOperationsClient;
-import org.jclouds.trmk.ecloud.features.TagOperationsAsyncClient;
-import org.jclouds.trmk.ecloud.features.TagOperationsClient;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
-import org.jclouds.trmk.vcloud_0_8.config.DefaultVCloudReferencesModule;
-import org.jclouds.trmk.vcloud_0_8.config.TerremarkVCloudRestClientModule;
-import org.jclouds.trmk.vcloud_0_8.domain.Network;
-import org.jclouds.trmk.vcloud_0_8.domain.NetworkExtendedInfo;
-import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.Injector;
-import com.google.inject.Provides;
-
-/**
- * Configures the VCloud authentication service connection, including logging
- * and http transport.
- *
- * @author Adrian Cole
- */
-@ConfiguresRestClient
-public class TerremarkECloudRestClientModule extends
- TerremarkVCloudRestClientModule<TerremarkECloudClient, TerremarkECloudAsyncClient> {
-
- public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
- .put(DataCenterOperationsClient.class, DataCenterOperationsAsyncClient.class)//
- .put(TagOperationsClient.class, TagOperationsAsyncClient.class)//
- .build();
-
- public TerremarkECloudRestClientModule() {
- super(DELEGATE_MAP);
- }
-
- @Provides
- @Singleton
- protected TerremarkVCloudAsyncClient provideTerremarkAsyncClient(TerremarkECloudAsyncClient in) {
- return in;
- }
-
- @Provides
- @Singleton
- protected TerremarkVCloudClient provideTerremarkClient(TerremarkECloudClient in) {
- return in;
- }
-
- @Singleton
- public static class IsDMZNetwork implements Predicate<ReferenceType> {
- private final TerremarkECloudClient client;
-
- @Inject
- public IsDMZNetwork(TerremarkECloudClient client) {
- this.client = client;
- }
-
- @Override
- public boolean apply(ReferenceType arg0) {
- // TODO FIXME XXX: In Terremark Enterprise environment with multiple
- // VDC's
- // this does not
- // work well.
- // Each VDC will have different network subnets. So we cannot assume the
- // default VDC's
- // networks will
- // work with non-default VDC's. So make PROPERTY_VCLOUD_DEFAULT_NETWORK
- // optional. If
- // this property
- // is not set, they are expected to add NetworkConfig to the options
- // when
- // launching a
- // server.
- Network orgNetwork = client.getNetwork(arg0.getHref());
- NetworkExtendedInfo terremarkNetwork = client.getNetworkExtendedInfo(checkNotNull(
- checkNotNull(orgNetwork, "network at: " + arg0).getNetworkExtension(), "network extension for: " + arg0)
- .getHref());
- return checkNotNull(terremarkNetwork, "terremark network extension at: " + orgNetwork.getNetworkExtension())
- .getNetworkType() == NetworkExtendedInfo.Type.DMZ;
- }
- }
-
- @Override
- protected void installDefaultVCloudEndpointsModule() {
- install(new DefaultVCloudReferencesModule() {
-
- @Override
- protected Predicate<ReferenceType> provideDefaultNetworkSelector(Injector i) {
- return i.getInstance(IsDMZNetwork.class);
- }
-
- });
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsApi.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsApi.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsApi.java
new file mode 100644
index 0000000..ba31d97
--- /dev/null
+++ b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsApi.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.trmk.ecloud.features;
+
+import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.DATACENTERSLIST_XML;
+
+import java.net.URI;
+import java.util.Set;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+
+import org.jclouds.Fallbacks;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.XMLResponseParser;
+import org.jclouds.trmk.ecloud.functions.OrgURIToDataCentersListEndpoint;
+import org.jclouds.trmk.vcloud_0_8.domain.DataCenter;
+import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
+import org.jclouds.trmk.vcloud_0_8.xml.DataCentersHandler;
+
+/**
+ * Data Center Operations access to DataCenterOperations functionality in vCloud
+ * <p/>
+ * There are times where knowing a data center is necessary to complete certain
+ * operations (i.e. uploading a catalog item). The data centers for an
+ * organization are those data centers that contain at least one of the
+ * organization's environments.
+ *
+ * @author Adrian Cole
+ */
+@RequestFilters(SetVCloudTokenCookie.class)
+public interface DataCenterOperationsApi {
+
+ /**
+ * This call will get the list of data centers that contain at least one of
+ * the organization's environments.
+ *
+ *
+ * @return data centers
+ */
+ @GET
+ @Consumes(DATACENTERSLIST_XML)
+ @XMLResponseParser(DataCentersHandler.class)
+ @Fallback(Fallbacks.EmptySetOnNotFoundOr404.class)
+ Set<DataCenter> listDataCentersInOrg(@Nullable @EndpointParam(parser = OrgURIToDataCentersListEndpoint.class) URI org);
+
+ /**
+ * This call will get the list of data centers by list id.
+ *
+ * @return data centers
+ */
+ @GET
+ @Consumes(DATACENTERSLIST_XML)
+ @XMLResponseParser(DataCentersHandler.class)
+ @Fallback(Fallbacks.EmptySetOnNotFoundOr404.class)
+ Set<DataCenter> listDataCenters(@EndpointParam URI dataCenters);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsAsyncClient.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsAsyncClient.java
deleted file mode 100644
index 2271307..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsAsyncClient.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud.features;
-
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.DATACENTERSLIST_XML;
-
-import java.net.URI;
-import java.util.Set;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-
-import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.XMLResponseParser;
-import org.jclouds.trmk.ecloud.functions.OrgURIToDataCentersListEndpoint;
-import org.jclouds.trmk.vcloud_0_8.domain.DataCenter;
-import org.jclouds.trmk.vcloud_0_8.domain.KeyPair;
-import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
-import org.jclouds.trmk.vcloud_0_8.xml.DataCentersHandler;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- *
- * @see <a href=
- * "http://support.theenterprisecloud.com/kb/default.asp?id=960&Lang=1&SID="
- * />
- * @see DataCenterOperationsClient
- *
- * @author Adrian Cole
- */
-@RequestFilters(SetVCloudTokenCookie.class)
-public interface DataCenterOperationsAsyncClient {
-
- /**
- * @see DataCenterOperationsClient#listDataCentersInOrg
- */
- @GET
- @Consumes(DATACENTERSLIST_XML)
- @XMLResponseParser(DataCentersHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<KeyPair>> listDataCentersInOrg(
- @Nullable @EndpointParam(parser = OrgURIToDataCentersListEndpoint.class) URI org);
-
- /**
- * @see DataCenterOperationsClient#listDataCenters
- */
- @GET
- @Consumes(DATACENTERSLIST_XML)
- @XMLResponseParser(DataCentersHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<DataCenter>> listDataCenters(@EndpointParam URI dataCenters);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsClient.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsClient.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsClient.java
deleted file mode 100644
index 6728cd3..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/DataCenterOperationsClient.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud.features;
-
-import java.net.URI;
-import java.util.Set;
-import org.jclouds.trmk.vcloud_0_8.domain.DataCenter;
-
-/**
- * Data Center Operations access to DataCenterOperations functionality in vCloud
- * <p/>
- * There are times where knowing a data center is necessary to complete certain
- * operations (i.e. uploading a catalog item). The data centers for an
- * organization are those data centers that contain at least one of the
- * organization's environments.
- *
- * @see DataCenterOperationsAsyncClient
- * @author Adrian Cole
- */
-public interface DataCenterOperationsClient {
-
- /**
- * This call will get the list of data centers that contain at least one of
- * the organization's environments.
- *
- *
- * @return data centers
- */
- Set<DataCenter> listDataCentersInOrg(URI orgId);
-
- /**
- * This call will get the list of data centers by list id.
- *
- * @return data centers
- */
- Set<DataCenter> listDataCenters(URI dataCentersList);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsApi.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsApi.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsApi.java
new file mode 100644
index 0000000..f024ba3
--- /dev/null
+++ b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsApi.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.trmk.ecloud.features;
+
+import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.TAGSLISTLIST_XML;
+
+import java.net.URI;
+import java.util.Map;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+
+import org.jclouds.Fallbacks;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.XMLResponseParser;
+import org.jclouds.trmk.ecloud.functions.OrgURIToTagsListEndpoint;
+import org.jclouds.trmk.ecloud.xml.TagNameToUsageCountHandler;
+import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
+
+/**
+ * Tag Based Operations
+ * <p/>
+ *
+ * @author Adrian Cole
+ */
+@RequestFilters(SetVCloudTokenCookie.class)
+public interface TagOperationsApi {
+
+ /**
+ * This call returns the list of all tags belonging to the organization.
+ *
+ * @return tags
+ */
+ @GET
+ @Consumes(TAGSLISTLIST_XML)
+ @XMLResponseParser(TagNameToUsageCountHandler.class)
+ @Fallback(Fallbacks.EmptyMapOnNotFoundOr404.class)
+ Map<String, Integer> getTagNameToUsageCountInOrg(@Nullable @EndpointParam(parser = OrgURIToTagsListEndpoint.class) URI org);
+
+ /**
+ * This call returns the list of all tags by list id.
+ *
+ * @return tags
+ */
+ @GET
+ @Consumes(TAGSLISTLIST_XML)
+ @XMLResponseParser(TagNameToUsageCountHandler.class)
+ @Fallback(Fallbacks.EmptyMapOnNotFoundOr404.class)
+ Map<String, Integer> getTagNameToUsageCount(@EndpointParam URI tagList);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsAsyncClient.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsAsyncClient.java
deleted file mode 100644
index 875baae..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsAsyncClient.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud.features;
-
-import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.TAGSLISTLIST_XML;
-
-import java.net.URI;
-import java.util.Map;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-
-import org.jclouds.Fallbacks.EmptyMapOnNotFoundOr404;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.XMLResponseParser;
-import org.jclouds.trmk.ecloud.functions.OrgURIToTagsListEndpoint;
-import org.jclouds.trmk.ecloud.xml.TagNameToUsageCountHandler;
-import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- *
- * @see <a href=
- * "http://support.theenterprisecloud.com/kb/default.asp?id=954&Lang=1&SID="
- * />
- * @see TagOperationsClient
- *
- * @author Adrian Cole
- */
-@RequestFilters(SetVCloudTokenCookie.class)
-public interface TagOperationsAsyncClient {
-
- /**
- * @see TagOperationsClient#getTagNameToUsageCountInOrg
- */
- @GET
- @Consumes(TAGSLISTLIST_XML)
- @XMLResponseParser(TagNameToUsageCountHandler.class)
- @Fallback(EmptyMapOnNotFoundOr404.class)
- ListenableFuture<? extends Map<String, Integer>> getTagNameToUsageCountInOrg(
- @Nullable @EndpointParam(parser = OrgURIToTagsListEndpoint.class) URI org);
-
- /**
- * @see TagOperationsClient#getTagNameToUsageCount
- */
- @GET
- @Consumes(TAGSLISTLIST_XML)
- @XMLResponseParser(TagNameToUsageCountHandler.class)
- @Fallback(EmptyMapOnNotFoundOr404.class)
- ListenableFuture<? extends Map<String, Integer>> getTagNameToUsageCount(@EndpointParam URI tagList);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsClient.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsClient.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsClient.java
deleted file mode 100644
index 7e1cbad..0000000
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/features/TagOperationsClient.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud.features;
-
-import java.net.URI;
-import java.util.Map;
-/**
- * Tag Based Operations
- * <p/>
- *
- * @see TagOperationsAsyncClient
- * @author Adrian Cole
- */
-public interface TagOperationsClient {
-
- /**
- * This call returns the list of all tags belonging to the organization.
- *
- * @return tags
- */
- Map<String, Integer> getTagNameToUsageCountInOrg(URI orgId);
-
- /**
- * This call returns the list of all tags by list id.
- *
- * @return tags
- */
- Map<String, Integer> getTagNameToUsageCount(URI tagsList);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/suppliers/TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/suppliers/TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/suppliers/TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java
index 0866aa2..7316464fa 100644
--- a/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/suppliers/TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java
+++ b/providers/trmk-ecloud/src/main/java/org/jclouds/trmk/ecloud/suppliers/TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java
@@ -30,7 +30,7 @@ import javax.inject.Singleton;
import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.logging.Logger;
import org.jclouds.rest.InsufficientResourcesException;
-import org.jclouds.trmk.ecloud.TerremarkECloudClient;
+import org.jclouds.trmk.ecloud.TerremarkECloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.InternetService;
import org.jclouds.trmk.vcloud_0_8.domain.Protocol;
import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
@@ -50,10 +50,10 @@ public class TerremarkECloudInternetServiceAndPublicIpAddressSupplier implements
@Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
public Logger logger = Logger.NULL;
- protected final TerremarkECloudClient client;
+ protected final TerremarkECloudApi client;
@Inject
- public TerremarkECloudInternetServiceAndPublicIpAddressSupplier(TerremarkECloudClient client) {
+ public TerremarkECloudInternetServiceAndPublicIpAddressSupplier(TerremarkECloudApi client) {
this.client = client;
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiLiveTest.java b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiLiveTest.java
new file mode 100644
index 0000000..77258c6
--- /dev/null
+++ b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiLiveTest.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.trmk.ecloud;
+
+import java.util.Properties;
+
+import org.jclouds.trmk.vcloud_0_8.internal.BaseTerremarkApiLiveTest;
+import org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants;
+import org.testng.annotations.Test;
+
+/**
+ * @author Adrian Cole
+ */
+@Test(groups = "live", enabled = true, singleThreaded = true)
+public class BaseTerremarkECloudApiLiveTest extends BaseTerremarkApiLiveTest {
+ @Override
+ protected Properties setupProperties() {
+ Properties props = super.setupProperties();
+ props.setProperty(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC,
+ ".* - " + System.getProperty("test.trmk-ecloud.datacenter", "MIA"));
+ return props;
+ }
+
+ protected TerremarkECloudApi api() {
+ return TerremarkECloudApi.class.cast(api);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiTest.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiTest.java b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiTest.java
new file mode 100644
index 0000000..33d8cfc
--- /dev/null
+++ b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudApiTest.java
@@ -0,0 +1,268 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.trmk.ecloud;
+
+import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.jclouds.http.HttpRequest;
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.rest.AuthorizationException;
+import org.jclouds.rest.ConfiguresRestClient;
+import org.jclouds.rest.internal.BaseAsyncClientTest;
+import org.jclouds.trmk.ecloud.config.TerremarkECloudHttpApiModule;
+import org.jclouds.trmk.ecloud.domain.internal.ECloudOrgImpl;
+import org.jclouds.trmk.vcloud_0_8.domain.Org;
+import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
+import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
+import org.jclouds.trmk.vcloud_0_8.domain.VDC;
+import org.jclouds.trmk.vcloud_0_8.domain.internal.CatalogImpl;
+import org.jclouds.trmk.vcloud_0_8.domain.internal.CatalogItemImpl;
+import org.jclouds.trmk.vcloud_0_8.domain.internal.ReferenceTypeImpl;
+import org.jclouds.trmk.vcloud_0_8.domain.internal.VDCImpl;
+import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
+import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudLoginApi;
+import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudVersionsApi;
+
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+import com.google.common.collect.ImmutableMap;
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
+
+/**
+ * @author Adrian Cole
+ */
+public abstract class BaseTerremarkECloudApiTest<T> extends BaseAsyncClientTest<T> {
+
+ @Override
+ protected void checkFilters(HttpRequest request) {
+ assertEquals(request.getFilters().size(), 1);
+ assertEquals(request.getFilters().get(0).getClass(), SetVCloudTokenCookie.class);
+ }
+
+ @Override
+ protected Module createModule() {
+ return new TerremarkECloudHttpApiModuleExtension();
+ }
+
+ @Override
+ public ProviderMetadata createProviderMetadata() {
+ return new TerremarkECloudProviderMetadata();
+ }
+
+ protected static final ReferenceTypeImpl ORG_REF = new ReferenceTypeImpl("org", TerremarkECloudMediaType.ORG_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/org/1"));
+
+ protected static final ReferenceTypeImpl CATALOG_REF = new ReferenceTypeImpl("catalog",
+ TerremarkECloudMediaType.CATALOG_XML, URI.create("https://vcloud.safesecureweb.com/api/v0.8/catalog/1"));
+
+ protected static final ReferenceTypeImpl TASKSLIST_REF = new ReferenceTypeImpl("tasksList",
+ TerremarkECloudMediaType.TASKSLIST_XML, URI.create("https://vcloud.safesecureweb.com/api/v0.8/tasksList/1"));
+
+ protected static final ReferenceTypeImpl VDC_REF = new ReferenceTypeImpl("vdc", TerremarkECloudMediaType.VDC_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/vdc/1"));
+
+ protected static final ReferenceTypeImpl KEYSLIST_REF = new ReferenceTypeImpl("keysList",
+ TerremarkECloudMediaType.KEYSLIST_XML, URI.create("https://vcloud.safesecureweb.com/api/v0.8/keysList/1"));
+ protected static final ReferenceTypeImpl TAGSLIST_REF = new ReferenceTypeImpl("deviceTags",
+ TerremarkECloudMediaType.TAGSLISTLIST_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/deviceTags/1"));
+ protected static final ReferenceTypeImpl VAPPCATALOGLIST_REF = new ReferenceTypeImpl("vappCatalog",
+ TerremarkECloudMediaType.VAPPCATALOGLIST_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/vappCatalog/1"));
+ protected static final ReferenceTypeImpl DATACENTERSLIST_REF = new ReferenceTypeImpl("dataCentersList",
+ TerremarkECloudMediaType.DATACENTERSLIST_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/datacentersList/1"));
+ protected static final ReferenceTypeImpl NETWORK_REF = new ReferenceTypeImpl("network",
+ TerremarkECloudMediaType.NETWORK_XML, URI.create("https://vcloud.safesecureweb.com/network/1990"));
+
+ protected static final ReferenceTypeImpl PUBLICIPS_REF = new ReferenceTypeImpl("publicIps",
+ TerremarkECloudMediaType.PUBLICIPSLIST_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/publicIps/1"));
+
+ protected static final ReferenceTypeImpl INTERNETSERVICES_REF = new ReferenceTypeImpl("internetServices",
+ TerremarkECloudMediaType.INTERNETSERVICESLIST_XML,
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/internetServices/1"));
+
+ protected static final Org ORG = new ECloudOrgImpl(ORG_REF.getName(), ORG_REF.getType(), ORG_REF.getHref(), "org",
+ ImmutableMap.<String, ReferenceType> of(CATALOG_REF.getName(), CATALOG_REF),
+ ImmutableMap.<String, ReferenceType> of(VDC_REF.getName(), VDC_REF), ImmutableMap.<String, ReferenceType> of(
+ TASKSLIST_REF.getName(), TASKSLIST_REF), KEYSLIST_REF, DATACENTERSLIST_REF, TAGSLIST_REF,
+ VAPPCATALOGLIST_REF);
+
+ protected static final VDC VDC = new VDCImpl(VDC_REF.getName(), VDC_REF.getType(), VDC_REF.getHref(), "description",
+ CATALOG_REF, PUBLICIPS_REF, INTERNETSERVICES_REF, ImmutableMap.<String, ReferenceType> of(
+ "vapp",
+ new ReferenceTypeImpl("vapp", "application/vnd.vmware.vcloud.vApp+xml", URI
+ .create("https://vcloud.safesecureweb.com/api/v0.8/vApp/188849-1")),
+ "network",
+ new ReferenceTypeImpl("network", "application/vnd.vmware.vcloud.vAppTemplate+xml", URI
+ .create("https://vcloud.safesecureweb.com/api/v0.8/vdcItem/2"))),
+ ImmutableMap.<String, ReferenceType> of(NETWORK_REF.getName(), NETWORK_REF));
+
+ @ConfiguresRestClient
+ protected static class TerremarkECloudHttpApiModuleExtension extends TerremarkECloudHttpApiModule {
+
+ @Override
+ protected Supplier<URI> provideAuthenticationURI(TerremarkVCloudVersionsApi versionService, String version) {
+ return Suppliers.ofInstance(URI.create("https://vcloud.safesecureweb.com/api/v0.8/login"));
+ }
+
+ @Override
+ protected Supplier<Org> provideOrg(Supplier<Map<String, ? extends Org>> orgSupplier,
+ @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
+ return Suppliers.ofInstance(ORG);
+ }
+
+ @Override
+ protected void installDefaultVCloudEndpointsModule() {
+ install(new AbstractModule() {
+
+ @Override
+ protected void configure() {
+ TypeLiteral<Supplier<ReferenceType>> refTypeSupplier = new TypeLiteral<Supplier<ReferenceType>>() {
+ };
+ bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Org.class).toInstance(
+ Suppliers.<ReferenceType> ofInstance(ORG_REF));
+ bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Catalog.class).toInstance(
+ Suppliers.<ReferenceType> ofInstance(CATALOG_REF));
+ bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.TasksList.class).toInstance(
+ Suppliers.<ReferenceType> ofInstance(TASKSLIST_REF));
+ bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.VDC.class).toInstance(
+ Suppliers.<ReferenceType> ofInstance(VDC_REF));
+ bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Network.class).toInstance(
+ Suppliers.<ReferenceType> ofInstance(NETWORK_REF));
+ }
+
+ });
+ }
+
+ @Override
+ protected Supplier<VCloudSession> provideVCloudTokenCache(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
+ AtomicReference<AuthorizationException> authException, TerremarkVCloudLoginApi login) {
+ return Suppliers.<VCloudSession> ofInstance(new VCloudSession() {
+
+ @Override
+ public Map<String, ReferenceType> getOrgs() {
+ return ImmutableMap.<String, ReferenceType> of(ORG_REF.getName(), ORG_REF);
+ }
+
+ @Override
+ public String getVCloudToken() {
+ return "token";
+ }
+
+ });
+
+ }
+
+ @Override
+ protected void configure() {
+ super.configure();
+ bind(OrgMapSupplier.class).to(TestOrgMapSupplier.class);
+ bind(OrgCatalogSupplier.class).to(TestOrgCatalogSupplier.class);
+ bind(OrgCatalogItemSupplier.class).to(TestOrgCatalogItemSupplier.class);
+ }
+
+ @Override
+ protected Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> provideOrgVDCSupplierCache(
+ @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
+ OrgVDCSupplier supplier) {
+ return Suppliers
+ .<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> ofInstance(ImmutableMap
+ .<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> of(ORG_REF.getName(),
+ ImmutableMap.<String, org.jclouds.trmk.vcloud_0_8.domain.VDC> of(VDC.getName(), VDC)));
+ }
+
+ @Singleton
+ public static class TestOrgMapSupplier extends OrgMapSupplier {
+
+ @Inject
+ protected TestOrgMapSupplier() {
+ super(null, null);
+ }
+
+ @Override
+ public Map<String, Org> get() {
+ return ImmutableMap.<String, Org> of(ORG.getName(), ORG);
+ }
+ }
+
+ @Singleton
+ public static class TestOrgCatalogSupplier extends OrgCatalogSupplier {
+ @Inject
+ protected TestOrgCatalogSupplier() {
+ super(null, null);
+ }
+
+ @Override
+ public Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> get() {
+ return ImmutableMap.<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> of(ORG_REF
+ .getName(), ImmutableMap.<String, org.jclouds.trmk.vcloud_0_8.domain.Catalog> of(
+ CATALOG_REF.getName(),
+ new CatalogImpl(CATALOG_REF.getName(), CATALOG_REF.getType(), CATALOG_REF.getHref(), null,
+ ImmutableMap.<String, ReferenceType> of(
+ "item",
+ new ReferenceTypeImpl("item", "application/vnd.vmware.vcloud.catalogItem+xml", URI
+ .create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/1")),
+ "template",
+ new ReferenceTypeImpl("template", "application/vnd.vmware.vcloud.vAppTemplate+xml", URI
+ .create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/2"))))));
+ }
+ }
+
+ @Singleton
+ public static class TestOrgCatalogItemSupplier extends OrgCatalogItemSupplier {
+ protected TestOrgCatalogItemSupplier() {
+ super(null, null);
+ }
+
+ @Override
+ public Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>> get() {
+ return ImmutableMap
+ .<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>> of(
+ ORG_REF.getName(),
+ ImmutableMap.<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>> of(
+ CATALOG_REF.getName(),
+ ImmutableMap
+ .<String, org.jclouds.trmk.vcloud_0_8.domain.CatalogItem> of(
+ "template",
+ new CatalogItemImpl(
+ "template",
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/2"),
+ "description",
+ new ReferenceTypeImpl(
+ "template",
+ "application/vnd.vmware.vcloud.vAppTemplate+xml",
+ URI.create("https://vcloud.safesecureweb.com/api/v0.8/vAppTemplate/2")),
+ null, null, ImmutableMap.<String, String> of()))));
+
+ }
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudAsyncClientTest.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudAsyncClientTest.java b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudAsyncClientTest.java
deleted file mode 100644
index 977a13d..0000000
--- a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudAsyncClientTest.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud;
-
-import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
-import static org.testng.Assert.assertEquals;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.ConfiguresRestClient;
-import org.jclouds.rest.internal.BaseAsyncClientTest;
-import org.jclouds.trmk.ecloud.config.TerremarkECloudRestClientModule;
-import org.jclouds.trmk.ecloud.domain.internal.ECloudOrgImpl;
-import org.jclouds.trmk.vcloud_0_8.domain.Org;
-import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
-import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
-import org.jclouds.trmk.vcloud_0_8.domain.VDC;
-import org.jclouds.trmk.vcloud_0_8.domain.internal.CatalogImpl;
-import org.jclouds.trmk.vcloud_0_8.domain.internal.CatalogItemImpl;
-import org.jclouds.trmk.vcloud_0_8.domain.internal.ReferenceTypeImpl;
-import org.jclouds.trmk.vcloud_0_8.domain.internal.VDCImpl;
-import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
-import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudLoginClient;
-import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudVersionsClient;
-
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
-import com.google.inject.TypeLiteral;
-
-/**
- * @author Adrian Cole
- */
-public abstract class BaseTerremarkECloudAsyncClientTest<T> extends BaseAsyncClientTest<T> {
-
- @Override
- protected void checkFilters(HttpRequest request) {
- assertEquals(request.getFilters().size(), 1);
- assertEquals(request.getFilters().get(0).getClass(), SetVCloudTokenCookie.class);
- }
-
- @Override
- protected Module createModule() {
- return new TerremarkECloudRestClientModuleExtension();
- }
-
- @Override
- public ProviderMetadata createProviderMetadata() {
- return new TerremarkECloudProviderMetadata();
- }
-
- protected static final ReferenceTypeImpl ORG_REF = new ReferenceTypeImpl("org", TerremarkECloudMediaType.ORG_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/org/1"));
-
- protected static final ReferenceTypeImpl CATALOG_REF = new ReferenceTypeImpl("catalog",
- TerremarkECloudMediaType.CATALOG_XML, URI.create("https://vcloud.safesecureweb.com/api/v0.8/catalog/1"));
-
- protected static final ReferenceTypeImpl TASKSLIST_REF = new ReferenceTypeImpl("tasksList",
- TerremarkECloudMediaType.TASKSLIST_XML, URI.create("https://vcloud.safesecureweb.com/api/v0.8/tasksList/1"));
-
- protected static final ReferenceTypeImpl VDC_REF = new ReferenceTypeImpl("vdc", TerremarkECloudMediaType.VDC_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/vdc/1"));
-
- protected static final ReferenceTypeImpl KEYSLIST_REF = new ReferenceTypeImpl("keysList",
- TerremarkECloudMediaType.KEYSLIST_XML, URI.create("https://vcloud.safesecureweb.com/api/v0.8/keysList/1"));
- protected static final ReferenceTypeImpl TAGSLIST_REF = new ReferenceTypeImpl("deviceTags",
- TerremarkECloudMediaType.TAGSLISTLIST_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/deviceTags/1"));
- protected static final ReferenceTypeImpl VAPPCATALOGLIST_REF = new ReferenceTypeImpl("vappCatalog",
- TerremarkECloudMediaType.VAPPCATALOGLIST_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/vappCatalog/1"));
- protected static final ReferenceTypeImpl DATACENTERSLIST_REF = new ReferenceTypeImpl("dataCentersList",
- TerremarkECloudMediaType.DATACENTERSLIST_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/datacentersList/1"));
- protected static final ReferenceTypeImpl NETWORK_REF = new ReferenceTypeImpl("network",
- TerremarkECloudMediaType.NETWORK_XML, URI.create("https://vcloud.safesecureweb.com/network/1990"));
-
- protected static final ReferenceTypeImpl PUBLICIPS_REF = new ReferenceTypeImpl("publicIps",
- TerremarkECloudMediaType.PUBLICIPSLIST_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/publicIps/1"));
-
- protected static final ReferenceTypeImpl INTERNETSERVICES_REF = new ReferenceTypeImpl("internetServices",
- TerremarkECloudMediaType.INTERNETSERVICESLIST_XML,
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/internetServices/1"));
-
- protected static final Org ORG = new ECloudOrgImpl(ORG_REF.getName(), ORG_REF.getType(), ORG_REF.getHref(), "org",
- ImmutableMap.<String, ReferenceType> of(CATALOG_REF.getName(), CATALOG_REF),
- ImmutableMap.<String, ReferenceType> of(VDC_REF.getName(), VDC_REF), ImmutableMap.<String, ReferenceType> of(
- TASKSLIST_REF.getName(), TASKSLIST_REF), KEYSLIST_REF, DATACENTERSLIST_REF, TAGSLIST_REF,
- VAPPCATALOGLIST_REF);
-
- protected static final VDC VDC = new VDCImpl(VDC_REF.getName(), VDC_REF.getType(), VDC_REF.getHref(), "description",
- CATALOG_REF, PUBLICIPS_REF, INTERNETSERVICES_REF, ImmutableMap.<String, ReferenceType> of(
- "vapp",
- new ReferenceTypeImpl("vapp", "application/vnd.vmware.vcloud.vApp+xml", URI
- .create("https://vcloud.safesecureweb.com/api/v0.8/vApp/188849-1")),
- "network",
- new ReferenceTypeImpl("network", "application/vnd.vmware.vcloud.vAppTemplate+xml", URI
- .create("https://vcloud.safesecureweb.com/api/v0.8/vdcItem/2"))),
- ImmutableMap.<String, ReferenceType> of(NETWORK_REF.getName(), NETWORK_REF));
-
- @ConfiguresRestClient
- protected static class TerremarkECloudRestClientModuleExtension extends TerremarkECloudRestClientModule {
-
- @Override
- protected Supplier<URI> provideAuthenticationURI(TerremarkVCloudVersionsClient versionService, String version) {
- return Suppliers.ofInstance(URI.create("https://vcloud.safesecureweb.com/api/v0.8/login"));
- }
-
- @Override
- protected Supplier<Org> provideOrg(Supplier<Map<String, ? extends Org>> orgSupplier,
- @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
- return Suppliers.ofInstance(ORG);
- }
-
- @Override
- protected void installDefaultVCloudEndpointsModule() {
- install(new AbstractModule() {
-
- @Override
- protected void configure() {
- TypeLiteral<Supplier<ReferenceType>> refTypeSupplier = new TypeLiteral<Supplier<ReferenceType>>() {
- };
- bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Org.class).toInstance(
- Suppliers.<ReferenceType> ofInstance(ORG_REF));
- bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Catalog.class).toInstance(
- Suppliers.<ReferenceType> ofInstance(CATALOG_REF));
- bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.TasksList.class).toInstance(
- Suppliers.<ReferenceType> ofInstance(TASKSLIST_REF));
- bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.VDC.class).toInstance(
- Suppliers.<ReferenceType> ofInstance(VDC_REF));
- bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Network.class).toInstance(
- Suppliers.<ReferenceType> ofInstance(NETWORK_REF));
- }
-
- });
- }
-
- @Override
- protected Supplier<VCloudSession> provideVCloudTokenCache(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
- AtomicReference<AuthorizationException> authException, TerremarkVCloudLoginClient login) {
- return Suppliers.<VCloudSession> ofInstance(new VCloudSession() {
-
- @Override
- public Map<String, ReferenceType> getOrgs() {
- return ImmutableMap.<String, ReferenceType> of(ORG_REF.getName(), ORG_REF);
- }
-
- @Override
- public String getVCloudToken() {
- return "token";
- }
-
- });
-
- }
-
- @Override
- protected void configure() {
- super.configure();
- bind(OrgMapSupplier.class).to(TestOrgMapSupplier.class);
- bind(OrgCatalogSupplier.class).to(TestOrgCatalogSupplier.class);
- bind(OrgCatalogItemSupplier.class).to(TestOrgCatalogItemSupplier.class);
- }
-
- @Override
- protected Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> provideOrgVDCSupplierCache(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- OrgVDCSupplier supplier) {
- return Suppliers
- .<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> ofInstance(ImmutableMap
- .<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> of(ORG_REF.getName(),
- ImmutableMap.<String, org.jclouds.trmk.vcloud_0_8.domain.VDC> of(VDC.getName(), VDC)));
- }
-
- @Singleton
- public static class TestOrgMapSupplier extends OrgMapSupplier {
-
- @Inject
- protected TestOrgMapSupplier() {
- super(null, null);
- }
-
- @Override
- public Map<String, Org> get() {
- return ImmutableMap.<String, Org> of(ORG.getName(), ORG);
- }
- }
-
- @Singleton
- public static class TestOrgCatalogSupplier extends OrgCatalogSupplier {
- @Inject
- protected TestOrgCatalogSupplier() {
- super(null, null);
- }
-
- @Override
- public Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> get() {
- return ImmutableMap.<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> of(ORG_REF
- .getName(), ImmutableMap.<String, org.jclouds.trmk.vcloud_0_8.domain.Catalog> of(
- CATALOG_REF.getName(),
- new CatalogImpl(CATALOG_REF.getName(), CATALOG_REF.getType(), CATALOG_REF.getHref(), null,
- ImmutableMap.<String, ReferenceType> of(
- "item",
- new ReferenceTypeImpl("item", "application/vnd.vmware.vcloud.catalogItem+xml", URI
- .create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/1")),
- "template",
- new ReferenceTypeImpl("template", "application/vnd.vmware.vcloud.vAppTemplate+xml", URI
- .create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/2"))))));
- }
- }
-
- @Singleton
- public static class TestOrgCatalogItemSupplier extends OrgCatalogItemSupplier {
- protected TestOrgCatalogItemSupplier() {
- super(null, null);
- }
-
- @Override
- public Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>> get() {
- return ImmutableMap
- .<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>> of(
- ORG_REF.getName(),
- ImmutableMap.<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>> of(
- CATALOG_REF.getName(),
- ImmutableMap
- .<String, org.jclouds.trmk.vcloud_0_8.domain.CatalogItem> of(
- "template",
- new CatalogItemImpl(
- "template",
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/2"),
- "description",
- new ReferenceTypeImpl(
- "template",
- "application/vnd.vmware.vcloud.vAppTemplate+xml",
- URI.create("https://vcloud.safesecureweb.com/api/v0.8/vAppTemplate/2")),
- null, null, ImmutableMap.<String, String> of()))));
-
- }
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudClientLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudClientLiveTest.java b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudClientLiveTest.java
deleted file mode 100644
index f1d3b58..0000000
--- a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/BaseTerremarkECloudClientLiveTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.trmk.ecloud;
-
-import java.util.Properties;
-
-import org.jclouds.trmk.vcloud_0_8.internal.BaseTerremarkClientLiveTest;
-import org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants;
-import org.testng.annotations.Test;
-
-/**
- * @author Adrian Cole
- */
-@Test(groups = "live", enabled = true, singleThreaded = true)
-public class BaseTerremarkECloudClientLiveTest extends BaseTerremarkClientLiveTest {
- @Override
- protected Properties setupProperties() {
- Properties props = super.setupProperties();
- props.setProperty(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC,
- ".* - " + System.getProperty("test.trmk-ecloud.datacenter", "MIA"));
- return props;
- }
-
- protected TerremarkECloudClient api() {
- return TerremarkECloudClient.class.cast(api);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/TerremarkECloudApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/TerremarkECloudApiLiveTest.java b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/TerremarkECloudApiLiveTest.java
new file mode 100644
index 0000000..80b851c
--- /dev/null
+++ b/providers/trmk-ecloud/src/test/java/org/jclouds/trmk/ecloud/TerremarkECloudApiLiveTest.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.trmk.ecloud;
+
+import java.util.Map.Entry;
+import java.util.Properties;
+
+import org.jclouds.domain.LoginCredentials;
+import org.jclouds.ssh.SshClient;
+import org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier;
+import org.jclouds.trmk.vcloud_0_8.TerremarkApiLiveTest;
+import org.jclouds.trmk.vcloud_0_8.domain.InternetService;
+import org.jclouds.trmk.vcloud_0_8.domain.Protocol;
+import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
+import org.jclouds.trmk.vcloud_0_8.domain.VApp;
+import org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants;
+import org.testng.annotations.Test;
+
+import com.google.common.net.HostAndPort;
+
+/**
+ * Tests behavior of {@code TerremarkECloudApi}
+ *
+ * @author Adrian Cole
+ */
+@Test(groups = "live", enabled = true, singleThreaded = true, testName = "TerremarkECloudApiLiveTest")
+public class TerremarkECloudApiLiveTest extends TerremarkApiLiveTest {
+
+ public TerremarkECloudApiLiveTest() {
+ this.provider = "trmk-ecloud";
+ this.itemName = "Ubuntu Server 10.04 x64";
+ this.expectedOs = "Ubuntu Linux (64-bit)";
+ }
+
+ @Override
+ protected Properties setupProperties() {
+ Properties props = super.setupProperties();
+ props.setProperty(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC,
+ ".* - " + System.getProperty("test.trmk-ecloud.datacenter", "MIA"));
+ return props;
+ }
+
+ @Override
+ protected SshClient getConnectionFor(HostAndPort socket) {
+ return sshFactory.create(socket, LoginCredentials.builder().user("ecloud").password("TmrkCl0ud1s#1!").privateKey(
+ key.getPrivateKey()).authenticateSudo(true).build());
+ }
+
+ @Override
+ protected Entry<InternetService, PublicIpAddress> getNewInternetServiceAndIpForSSH(VApp vApp) {
+ return new TerremarkECloudInternetServiceAndPublicIpAddressSupplier(TerremarkECloudApi.class.cast(api))
+ .getNewInternetServiceAndIp(vApp, 22, Protocol.TCP);
+ }
+
+}