You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by za...@apache.org on 2013/12/13 01:46:50 UTC

[3/4] Remove trove from labs (moved to jclouds). https://issues.apache.org/jira/browse/JCLOUDS-102

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/filters/EncodeDotsForUserGet.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/filters/EncodeDotsForUserGet.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/filters/EncodeDotsForUserGet.java
deleted file mode 100644
index 4be330f..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/filters/EncodeDotsForUserGet.java
+++ /dev/null
@@ -1,49 +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.openstack.trove.v1.filters;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpException;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequestFilter;
-
-/**
- * Encodes "." as %2e when getting a user with restricted hostname
- * 
- * @author Zack Shoylev
- * 
- */
-@Singleton
-public class EncodeDotsForUserGet implements HttpRequestFilter {
-   private final Pattern pattern = Pattern.compile("/[^/]*$"); // From last / to the end of the line 
-   
-   @Override
-   public HttpRequest filter(HttpRequest request) throws HttpException {
-      String endpoint = request.getEndpoint().toString();      
-      Matcher matcher = pattern.matcher(endpoint);
-      if(!matcher.find())
-         return request; // do not modify if not found. This however is not expected to happen.
-      String encodable = matcher.group();
-      String encoded = encodable.replace(".", "%2e");
-      String newEndpoint = matcher.replaceFirst(encoded);
-      return request.toBuilder().endpoint(newEndpoint).build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParseDatabaseListForUser.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParseDatabaseListForUser.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParseDatabaseListForUser.java
deleted file mode 100644
index e357d11..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParseDatabaseListForUser.java
+++ /dev/null
@@ -1,54 +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.openstack.trove.v1.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-import java.util.Map;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseJson;
-import com.google.common.base.Function;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Lists;
-import com.google.inject.Inject;
-
-/**
- * This parses the list of databases
- * 
- * @author Zack Shoylev
- */
-public class ParseDatabaseListForUser implements Function<HttpResponse, FluentIterable<String>> {
-
-   private final ParseJson<Map<String, List<Map<String, String>>>> json;
-
-   @Inject
-   ParseDatabaseListForUser(ParseJson<Map<String, List<Map<String, String>>>> json) {
-      this.json = checkNotNull(json, "json");
-   }
-
-   /**
-    * Parses the database list from the json response
-    */
-   public FluentIterable<String> apply(HttpResponse from) {
-      List<String> resultDatabases = Lists.newArrayList();
-      Map<String, List<Map<String, String>>> result = json.apply(from);
-      for(Map<String, String> database : result.get("databases")) {
-         resultDatabases.add(database.get("name"));
-      }
-      return FluentIterable.from(resultDatabases);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParsePasswordFromRootedInstance.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParsePasswordFromRootedInstance.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParsePasswordFromRootedInstance.java
deleted file mode 100644
index 582b01f..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/functions/ParsePasswordFromRootedInstance.java
+++ /dev/null
@@ -1,49 +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.openstack.trove.v1.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.Map;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseJson;
-import com.google.common.base.Function;
-import com.google.inject.Inject;
-
-/**
- * This parses the password
- * 
- * @author Zack Shoylev
- */
-public class ParsePasswordFromRootedInstance implements Function<HttpResponse, String> {
-
-   private final ParseJson<Map<String, Map<String, String>>> json;
-
-   @Inject
-   ParsePasswordFromRootedInstance(ParseJson<Map<String, Map<String, String>>> json) {
-      this.json = checkNotNull(json, "json");
-   }
-
-   /**
-    * Extracts the user password from the json response
-    */
-   public String apply(HttpResponse from) {
-      Map<String, Map<String, String>> result = json.apply(from);
-      if(result.get("user") == null) 
-         return null;
-      return result.get("user").get("password");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/handlers/TroveErrorHandler.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/handlers/TroveErrorHandler.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/handlers/TroveErrorHandler.java
deleted file mode 100644
index 4dcf546..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/handlers/TroveErrorHandler.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.openstack.trove.v1.handlers;
-
-import static org.jclouds.http.HttpUtils.closeClientButKeepContentStream;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.InsufficientResourcesException;
-import org.jclouds.rest.ResourceNotFoundException;
-
-/**
- * This will parse and set an appropriate exception on the command object.
- * 
- * @author Zack Shoylev
- * 
- */
-@Singleton
-public class TroveErrorHandler implements HttpErrorHandler {
-
-   public void handleError(HttpCommand command, HttpResponse response) {
-      // it is important to always read fully and close streams
-      byte[] data = closeClientButKeepContentStream(response);
-      String message = data != null ? new String(data) : null;
-
-      Exception exception = message != null ? new HttpResponseException(command, response, message)
-               : new HttpResponseException(command, response);
-      message = message != null ? message : String.format("%s -> %s", command.getCurrentRequest().getRequestLine(),
-               response.getStatusLine());
-      switch (response.getStatusCode()) {
-         case 400:
-            if (message.contains("quota exceeded"))
-               exception = new InsufficientResourcesException(message, exception);
-            break;
-         case 401:
-         case 403:
-            exception = new AuthorizationException(message, exception);
-            break;
-         case 404:
-            if (!command.getCurrentRequest().getMethod().equals("DELETE")) {
-               exception = new ResourceNotFoundException(message, exception);
-            }
-            break;
-         case 413:
-            exception = new InsufficientResourcesException(message, exception);
-            break;
-      }
-      command.setException(exception);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/internal/Volume.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/internal/Volume.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/internal/Volume.java
deleted file mode 100644
index 5d066fa..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/internal/Volume.java
+++ /dev/null
@@ -1,32 +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.openstack.trove.v1.internal;
-
-public class Volume{
-   private final int size;
-   
-   public Volume(int size){
-      this.size = size;
-   }
-
-   /**
-    * @return the size
-    */
-   public int getSize() {
-      return size;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/predicates/InstancePredicates.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/predicates/InstancePredicates.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/predicates/InstancePredicates.java
deleted file mode 100644
index 6149eff..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/predicates/InstancePredicates.java
+++ /dev/null
@@ -1,144 +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.openstack.trove.v1.predicates;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.jclouds.util.Predicates2.retry;
-import org.jclouds.openstack.trove.v1.domain.Instance;
-import org.jclouds.openstack.trove.v1.domain.Instance.Status;
-import org.jclouds.openstack.trove.v1.features.InstanceApi;
-
-import com.google.common.base.Predicate;
-
-/**
- * Tests to see if instance has reached status. This class is most useful when paired with a RetryablePredicate as
- * in the code below. This class can be used to block execution until the Instance status has reached a desired state.
- * This is useful when your Instance needs to be 100% ready before you can continue with execution.
- *
- * <pre>
- * {@code
- * Instance instance = instanceApi.create(100);
- * 
- * RetryablePredicate<String> awaitAvailable = RetryablePredicate.create(
- *    InstancePredicates.available(instanceApi), 600, 10, 10, TimeUnit.SECONDS);
- * 
- * if (!awaitAvailable.apply(instance.getId())) {
- *    throw new TimeoutException("Timeout on instance: " + instance); 
- * }    
- * }
- * </pre>
- * 
- * You can also use the static convenience methods as follows.
- * 
- * <pre>
- * {@code
- * Instance instance = instanceApi.create(100);
- * 
- * if (!InstancePredicates.awaitAvailable(instanceApi).apply(instance.getId())) {
- *    throw new TimeoutException("Timeout on instance: " + instance);     
- * }
- * }
- * </pre>
- * 
- * @author Zack Shoylev
- */
-public class InstancePredicates {
-   /**
-    * Wait until an Instance is Available.
-    * 
-    * @param instanceApi The InstanceApi in the zone where your Instance resides.
-    * @return RetryablePredicate That will check the status every 5 seconds for a maxiumum of 10 minutes.
-    */
-   public static Predicate<Instance> awaitAvailable(InstanceApi instanceApi) {
-      StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(instanceApi, Instance.Status.ACTIVE);
-      return retry(statusPredicate, 600, 5, 5, SECONDS);
-   }
-
-   /**
-    * Wait until an Instance no longer exists.
-    * 
-    * @param instanceApi The InstanceApi in the zone where your Instance resides.
-    * @return RetryablePredicate That will check whether the Instance exists.
-    * every 5 seconds for a maxiumum of 10 minutes.
-    */
-   public static Predicate<Instance> awaitDeleted(InstanceApi instanceApi) {
-      DeletedPredicate deletedPredicate = new DeletedPredicate(instanceApi);
-      return retry(deletedPredicate, 600, 5, 5, SECONDS);
-   }
-   
-   /**
-    * Wait until instance is in the status specified.
-    * 
-    * @param instanceApi The InstanceApi in the zone where your Instance resides.
-    * @param status Wait until instance in in this status.
-    * @param maxWaitInSec Maximum time to wait.
-    * @param periodInSec Interval between retries.
-    * @return RetryablePredicate That will check whether the Instance exists.
-    */
-   public static Predicate<Instance> awaitStatus(
-         InstanceApi instanceApi, Instance.Status status, long maxWaitInSec, long periodInSec) {
-      StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(instanceApi, status);
-      return retry(statusPredicate, maxWaitInSec, periodInSec, periodInSec, SECONDS);
-   }
-   
-   private static class StatusUpdatedPredicate implements Predicate<Instance> {
-      private InstanceApi instanceApi;
-      private Status status;
-
-      public StatusUpdatedPredicate(InstanceApi instanceApi, Instance.Status status) {
-         this.instanceApi = checkNotNull(instanceApi, "instanceApi must be defined");
-         this.status = checkNotNull(status, "status must be defined");
-      }
-
-      /**
-       * @return boolean Return true when the instance reaches status, false otherwise.
-       */
-      @Override
-      public boolean apply(Instance instance) {
-         checkNotNull(instance, "instance must be defined");
-         
-         if (status.equals(instance.getStatus())) {
-            return true;
-         }
-         else {
-            Instance instanceUpdated = instanceApi.get(instance.getId());
-            checkNotNull(instanceUpdated, "Instance %s not found.", instance.getId());
-            
-            return status.equals(instanceUpdated.getStatus());
-         }
-      }
-   }
-
-   private static class DeletedPredicate implements Predicate<Instance> {
-      private InstanceApi instanceApi;
-
-      public DeletedPredicate(InstanceApi instanceApi) {
-         this.instanceApi = checkNotNull(instanceApi, "instanceApi must be defined");
-      }
-
-      /**
-       * @return boolean Return true when the snapshot is deleted, false otherwise.
-       */
-      @Override
-      public boolean apply(Instance instance) {
-         checkNotNull(instance, "instance must be defined");
-
-         return instanceApi.get(instance.getId()) == null;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/utils/TroveUtils.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/utils/TroveUtils.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/utils/TroveUtils.java
deleted file mode 100644
index dbc17f2..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/utils/TroveUtils.java
+++ /dev/null
@@ -1,107 +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.openstack.trove.v1.utils;
-
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.Resource;
-
-import org.jclouds.openstack.trove.v1.TroveApi;
-import org.jclouds.openstack.trove.v1.domain.Instance;
-import org.jclouds.openstack.trove.v1.features.InstanceApi;
-import org.jclouds.openstack.trove.v1.predicates.InstancePredicates;
-import org.jclouds.logging.Logger;
-
-import com.google.common.util.concurrent.Uninterruptibles;
-
-/**
- * @author Zack Shoylev
- * 
- * Helper methods for dealing with instances that get created with errors.
- */
-public class TroveUtils {
-   private final TroveApi api;
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   public TroveUtils(TroveApi api) {
-      this.api = api;
-   }
-
-   /**
-    * Create an ACTIVE operational instance.
-    * 
-    * @see InstanceApi#create(String, int, String)
-    * 
-    * @param zone
-    *           The instance zone or region.
-    * @param name
-    *           Instance name.
-    * @param flavorId
-    *           Id of the flavor to be used when creating the instance.
-    * @param size
-    *           Size of the instance.
-    * @return Instance object in active state or NULL.
-    */
-   public Instance getWorkingInstance(String zone, String name, String flavorId, int size) {
-      InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-      for (int retries = 0; retries < 10; retries++) {
-         Instance instance = null;
-         try {
-            instance = instanceApi.create(flavorId, size, name);
-         } catch (Exception e) {
-
-            Uninterruptibles.sleepUninterruptibly(15, TimeUnit.SECONDS);
-
-            logger.error(e.getStackTrace().toString());
-            continue;
-         }
-
-         Instance updatedInstance = awaitAvailable(instance, instanceApi);
-         if (updatedInstance != null) {
-            return updatedInstance;
-         }
-         instanceApi.delete(instance.getId());
-         InstancePredicates.awaitDeleted(instanceApi).apply(instance);
-         
-      }
-      return null;
-   }
-
-   /**
-    * This will return a small working instance.
-    * 
-    * @param zone The zone where the instance should be created.
-    * @return A working database instance.
-    */
-   public Instance getWorkingInstance(String zone) {
-      return getWorkingInstance(zone, UUID.randomUUID().toString(), "1", 1);
-   }
-
-   private Instance awaitAvailable(Instance instance, InstanceApi iapi) {
-      for (int n = 0; n < 100; n = n + 1) {
-         Instance updatedInstance = iapi.get(instance.getId());
-         if (updatedInstance.getStatus() == Instance.Status.ACTIVE)
-            return updatedInstance;
-         if (updatedInstance.getStatus() == Instance.Status.UNRECOGNIZED)
-            return null; // fast fail
-         Uninterruptibles.sleepUninterruptibly(15, TimeUnit.SECONDS);
-      }
-      return null;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata b/openstack-trove/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index 558658c..0000000
--- a/openstack-trove/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.jclouds.openstack.trove.v1.TroveApiMetadata

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/FlavorTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/FlavorTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/FlavorTest.java
deleted file mode 100644
index 0b9d1b1..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/FlavorTest.java
+++ /dev/null
@@ -1,55 +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.openstack.trove.v1.domain;
-
-import org.jclouds.http.Uris;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.Link.Relation;
-import org.testng.annotations.Test;
-import com.google.common.collect.ImmutableList;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-
-@Test(groups = "unit", testName = "FlavorTest")
-public class FlavorTest {
-   public void testFlavorForId() {
-      Flavor flavor1 = forId(1);
-      Flavor flavor2 = forId(2);
-      assertEquals(flavor1.getId(), 1);
-      assertEquals(flavor1.getName(), "small");
-      assertFalse(flavor1.equals(flavor2));
-   }
-   
-   /**
-    * Creates a dummy Flavor when you need a Flavor with just the flavorId. 
-    * 
-    * 1. name  = small
-    * 2. ram   = 512
-    * 3. links = self, bookmark
-    */
-   public static Flavor forId(int flavorId) {       
-       return Flavor.builder()
-               .id(flavorId)
-               .name("small")
-               .ram(512)
-               .links( 
-                       ImmutableList.of(
-                               Link.create(Relation.SELF, Uris.uriBuilder("http://test1").build() ),
-                               Link.create(Relation.BOOKMARK, Uris.uriBuilder("http://test2").build() )
-                               ) ).build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/InstanceTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/InstanceTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/InstanceTest.java
deleted file mode 100644
index d0cf6f2..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/InstanceTest.java
+++ /dev/null
@@ -1,53 +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.openstack.trove.v1.domain;
-
-import org.jclouds.http.Uris;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.Link.Relation;
-import org.testng.annotations.Test;
-import com.google.common.collect.ImmutableList;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-
-@Test(groups = "unit", testName = "InstanceTest")
-public class InstanceTest {
-   public void testInstanceForId() {
-      Instance instance1 = forId("1");
-      Instance instance2 = forId("2");
-      assertEquals(instance1.getId(), "1");
-      assertEquals(instance1.getName(), "json");
-      assertFalse(instance1.equals(instance2));
-   }
-   
-   /**
-    * Creates a dummy Instance when you need an Instance with just the instanceId.
-    */
-   public static Instance forId(String instanceId) {       
-       return Instance.builder()
-               .id(instanceId)
-               .name("json")
-               .status(Instance.Status.ACTIVE)
-               .size(2)
-               .flavor( FlavorTest.forId(1) )
-               .links( 
-                       ImmutableList.of(
-                               Link.create(Relation.SELF, Uris.uriBuilder("http://test1").build() ),
-                               Link.create(Relation.BOOKMARK, Uris.uriBuilder("http://test2").build() )
-                               ) ).build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/UserTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/UserTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/UserTest.java
deleted file mode 100644
index 9edd6f8..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/domain/UserTest.java
+++ /dev/null
@@ -1,47 +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.openstack.trove.v1.domain;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import org.testng.annotations.Test;
-import com.google.common.collect.ImmutableSet;
-
-@Test(groups = "unit", testName = "UserTest")
-public class UserTest {
-   public void testUserForName() {
-      User user1 = forName("1");
-      User user2 = forName("2");
-      assertEquals(user1.getName(), "1");
-      assertEquals(user2.getName(), "2");
-      assertFalse(user1.equals(user2));
-   }
-   
-   /**
-    * Creates a dummy User when you need an User with just the userName.
-    */
-   public static User forName(String userName) {       
-       return User.builder()
-               .name(userName)
-               .password("password")
-               .databases( 
-                       ImmutableSet.of(
-                               "db1",
-                               "db2"
-                               ) ).build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiExpectTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiExpectTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiExpectTest.java
deleted file mode 100644
index 804d77d..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiExpectTest.java
+++ /dev/null
@@ -1,161 +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.openstack.trove.v1.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Set;
-
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.trove.v1.internal.BaseTroveApiExpectTest;
-import org.testng.annotations.Test;
-
-/**
- * Tests DatabaseApi Guice wiring and parsing
- *
- * @author Zack Shoylev
- */
-@Test(groups = "unit", testName = "DatabaseApiExpectTest")
-public class DatabaseApiExpectTest extends BaseTroveApiExpectTest {
-
-   public void testCreateDatabaseSimple() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-            .method("POST")
-            .payload(payloadFromResourceWithContentType("/database_create_simple_request.json", MediaType.APPLICATION_JSON))
-            .build(),
-            HttpResponse.builder().statusCode(202).build() // response
-            ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      boolean result = api.create("testingdb");
-      assertTrue(result);
-   }
-
-   public void testCreateDatabaseSimpleFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-            .method("POST")
-            .payload(payloadFromResourceWithContentType("/database_create_simple_request.json", MediaType.APPLICATION_JSON))
-            .build(),
-            HttpResponse.builder().statusCode(404).build() // response
-            ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      boolean result = api.create("testingdb");
-      assertFalse(result);
-   }
-
-   public void testCreateDatabase() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-            .method("POST")
-            .payload(payloadFromResourceWithContentType("/database_create_request.json", MediaType.APPLICATION_JSON))
-            .build(),
-            HttpResponse.builder().statusCode(202).build() // response
-            ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      boolean result = api.create("testingdb", "utf8", "utf8_general_ci");
-      assertTrue(result);
-   }
-
-   public void testCreateDatabaseFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-            .method("POST")
-            .payload(payloadFromResourceWithContentType("/database_create_request.json", MediaType.APPLICATION_JSON))
-            .build(),
-            HttpResponse.builder().statusCode(404).build() // response
-            ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      boolean result = api.create("testingdb", "utf8", "utf8_general_ci");
-      assertFalse(result);
-   }
-   
-   public void testDeleteDatabase() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases/db1");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint) 
-            .method("DELETE")
-            .build(),
-            HttpResponse.builder().statusCode(202).build() // response
-            ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      boolean result = api.delete("db1");
-      assertTrue(result);
-   }
-   
-   public void testDeleteDatabaseFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases/db1");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint) 
-            .method("DELETE")
-            .build(),
-            HttpResponse.builder().statusCode(404).build() // response
-            ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      boolean result = api.delete("db1");
-      assertFalse(result);
-   }
-   
-   public void testListDatabases() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(200).payload(payloadFromResource("/database_list.json")).build()
-      ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      List<String> databases = api.list().toList();
-      assertEquals(databases.size(), 5);
-      assertEquals(databases.iterator().next(), "anotherdb");
-   }
-   
-   public void testListDatabasesFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/instanceId-1234-5678/databases");
-      DatabaseApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).payload(payloadFromResource("/database_list.json")).build()
-      ).getDatabaseApiForZoneAndInstance("RegionOne", "instanceId-1234-5678");
-
-      Set<String> databases = api.list().toSet();
-      assertTrue(databases.isEmpty());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java
deleted file mode 100644
index c60ee7c..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java
+++ /dev/null
@@ -1,114 +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.openstack.trove.v1.features;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-import java.util.Map;
-
-import org.jclouds.openstack.trove.v1.domain.Instance;
-import org.jclouds.openstack.trove.v1.internal.BaseTroveApiLiveTest;
-import org.jclouds.openstack.trove.v1.utils.TroveUtils;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * @author Zack Shoylev
- */
-@Test(groups = "live", testName = "DatabaseApiLiveTest")
-public class DatabaseApiLiveTest extends BaseTroveApiLiveTest {
-
-   // zone to instance
-   private static Map<String,List<Instance>> instancesToDelete = Maps.newHashMap();
-   // not deleting databases. they will be deleted when instances are deleted
-
-   @Override
-   @BeforeClass(groups = { "integration", "live" })
-   public void setup() {
-      super.setup();
-      TroveUtils utils = new TroveUtils(api);
-      for (String zone : api.getConfiguredZones()) {
-         // create instances
-         List<Instance> instanceList = Lists.newArrayList();
-         Instance first = utils.getWorkingInstance(zone, "first_database_testing_" + zone, "1", 1);
-         Instance second = utils.getWorkingInstance(zone, "second_database_testing_" + zone, "1", 1);
-         instanceList.add(first);
-         instanceList.add(second);
-         instancesToDelete.put(zone, instanceList);
-
-         DatabaseApi databaseApiFirst = api.getDatabaseApiForZoneAndInstance(zone, first.getId());
-         DatabaseApi databaseApiSecond = api.getDatabaseApiForZoneAndInstance(zone, second.getId());
-         databaseApiFirst.create("livetest_db1");
-         databaseApiFirst.create("livetest_db2");
-         databaseApiSecond.create("livetest_db3");
-      }
-   }
-
-   @Override
-   @AfterClass(groups = { "integration", "live" })
-   public void tearDown(){
-      for (String zone : api.getConfiguredZones()) {
-         InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-         for(Instance instance : instancesToDelete.get(zone)){
-            if( !instanceApi.delete(instance.getId() ) )
-               throw new RuntimeException("Could not delete a database instance after tests!");
-         }
-      }
-      super.tearDown();
-   }
-
-   @Test
-   public void testListDatabases() {
-      for (String zone : api.getConfiguredZones()) {
-         InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-         assertTrue(instanceApi.list().size() >= 2);
-         for(Instance instance : instancesToDelete.get(zone)) {
-            DatabaseApi databaseApi = api.getDatabaseApiForZoneAndInstance(zone, instance.getId());
-            if(!instance.getName().contains("database_testing"))continue;
-            assertTrue(databaseApi.list().size() >=1);
-            for(String database : databaseApi.list()){
-               assertNotNull(database);      
-            }
-         }  
-      }   
-   }
-
-   @Test
-   public void testDeleteDatabases() {
-      for (String zone : api.getConfiguredZones()) {
-         InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-         assertTrue(instanceApi.list().size() >= 2);
-         for(Instance instance : instancesToDelete.get(zone)) {
-            DatabaseApi databaseApi = api.getDatabaseApiForZoneAndInstance(zone, instance.getId());
-            if(!instance.getName().contains("database_testing"))continue;
-            assertTrue(databaseApi.list().size() >=1);
-            for(String database : databaseApi.list()){
-               assertNotNull(database);
-               assertTrue(database.equals("livetest_db1") || database.equals("livetest_db2") || database.equals("livetest_db3") );
-               assertTrue(databaseApi.delete(database));
-               assertTrue(databaseApi.create(database));
-            }
-         }  
-      }   
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiExpectTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiExpectTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiExpectTest.java
deleted file mode 100644
index 0231a85..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiExpectTest.java
+++ /dev/null
@@ -1,111 +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.openstack.trove.v1.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.net.URI;
-import java.util.Set;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.trove.v1.TroveApi;
-import org.jclouds.openstack.trove.v1.domain.Flavor;
-import org.jclouds.openstack.trove.v1.internal.BaseTroveApiExpectTest;
-import org.testng.annotations.Test;
-
-/**
- * Tests FlavorApi Guice wiring and parsing
- *
- * @author Zack Shoylev
- */
-@Test(groups = "unit", testName = "FlavorApiExpectTest")
-public class FlavorApiExpectTest extends BaseTroveApiExpectTest {
-
-   public void testListFlavors() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/flavors");
-      FlavorApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(200).payload(payloadFromResource("/flavor_list.json")).build()
-      ).getFlavorApiForZone("RegionOne");
-
-      Set<? extends Flavor> flavors = api.list().toSet();
-      assertEquals(flavors.size(),6);
-      assertEquals(flavors.iterator().next().getRam(), 512);
-   }
-
-   public void testListFlavorsFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/flavors");
-      FlavorApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getFlavorApiForZone("RegionOne");
-
-      Set<? extends Flavor> flavors = api.list().toSet();
-      assertTrue(flavors.isEmpty());
-   }   
-
-   public void testGetFlavor() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/flavors/1");
-      FlavorApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(200).payload(payloadFromResource("/flavor_get.json")).build()
-      ).getFlavorApiForZone("RegionOne");
-
-      Flavor flavor = api.get(1);
-      assertEquals(flavor.getName(), "512MB Instance");
-      assertEquals(flavor.getId(), 1);
-      assertEquals(flavor.getRam(), 512);
-      assertEquals(flavor.getLinks().size(), 2);
-   }
-   
-   public void testGetFlavorByAccountId() {
-	      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/flavors/40806637803162");
-	      TroveApi redDwarfApi = requestsSendResponses(
-               keystoneAuthWithUsernameAndPasswordAndTenantName,
-               responseWithKeystoneAccess,
-               authenticatedGET().endpoint(endpoint).build(),
-               HttpResponse.builder().statusCode(200).payload(payloadFromResource("/flavor_list.json")).build() ); 
-	      FlavorApi api = redDwarfApi.getFlavorApiForZone("RegionOne");
-
-	      Set<? extends Flavor> flavors = api.list( redDwarfApi.getCurrentTenantId().get().getId() ).toSet();
-	      Flavor flavor = flavors.iterator().next();
-	      assertEquals(flavor.getName(), "512MB Instance");
-	      assertEquals(flavor.getId(), 1);
-	      assertEquals(flavor.getRam(), 512);
-	      assertEquals(flavor.getLinks().size(), 2);
-	   }
-
-   public void testGetFlavorFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/flavors/12312");
-      FlavorApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getFlavorApiForZone("RegionOne");
-
-      assertNull(api.get(12312));
-   }   
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiLiveTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiLiveTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiLiveTest.java
deleted file mode 100644
index 7d0eebe..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/FlavorApiLiveTest.java
+++ /dev/null
@@ -1,87 +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.openstack.trove.v1.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-import org.jclouds.openstack.trove.v1.domain.Flavor;
-import org.jclouds.openstack.trove.v1.internal.BaseTroveApiLiveTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import com.google.common.collect.FluentIterable;
-
-/**
- * @author Zack Shoylev
- */
-@Test(groups = "live", testName = "FlavorApiLiveTest")
-public class FlavorApiLiveTest extends BaseTroveApiLiveTest {
-
-    @Override
-    @BeforeClass(groups = { "integration", "live" })
-    public void setup() {
-        super.setup();
-    }
-
-    private void checkFlavor(Flavor flavor) {
-        assertNotNull(flavor.getId(), "Id cannot be null for " + flavor);
-        assertNotNull(flavor.getName(), "Name cannot be null for " + flavor);
-    }
-
-    @Test
-    public void testListFlavorsByAccount() {
-        for (String zone : api.getConfiguredZones()) {
-            FlavorApi flavorApi = api.getFlavorApiForZone(zone);
-
-            FluentIterable<Flavor> response = flavorApi.list( api.getCurrentTenantId().get().getId() ); // tenant id, but referred to as account id. 
-            for (Flavor flavor : response) {
-                checkFlavor(flavor);
-            }  
-        }   
-    }
-
-    @Test
-    public void testListFlavorsByAccountWhenAccountIdNotFound() {
-        for (String zone : api.getConfiguredZones()) {
-            FlavorApi flavorApi = api.getFlavorApiForZone(zone);
-            assertTrue(flavorApi.list("9999").isEmpty());
-        }
-    }
-
-    @Test
-    public void testGetFlavor() {
-        for (String zone : api.getConfiguredZones()) {
-            FlavorApi flavorApi = api.getFlavorApiForZone(zone);           
-            for (Flavor flavor : flavorApi.list()) {
-                Flavor flavorFromGet = flavorApi.get(flavor.getId());
-                assertEquals(flavorFromGet.getId(), flavor.getId());
-                assertEquals(flavorFromGet.getRam(), flavor.getRam());
-                assertEquals(flavorFromGet.getName(), flavor.getName());
-                assertEquals(flavorFromGet.getLinks(), flavor.getLinks());
-            }
-        }
-    }
-
-    @Test
-    public void testGetFlavorWhenNotFound() {
-        for (String zone : api.getConfiguredZones()) {
-            FlavorApi flavorApi = api.getFlavorApiForZone(zone);
-            assertNull(flavorApi.get(9999));
-        }
-    }   
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiExpectTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiExpectTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiExpectTest.java
deleted file mode 100644
index b15c46e..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiExpectTest.java
+++ /dev/null
@@ -1,217 +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.openstack.trove.v1.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-import java.net.URI;
-import java.util.Set;
-import javax.ws.rs.core.MediaType;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.trove.v1.domain.Instance;
-import org.jclouds.openstack.trove.v1.internal.BaseTroveApiExpectTest;
-import org.jclouds.rest.ResourceNotFoundException;
-import org.testng.annotations.Test;
-
-/**
- * Tests InstanceApi Guice wiring and parsing
- *
- * @author Zack Shoylev
- */
-@Test(groups = "unit", testName = "InstanceApiExpectTest")
-public class InstanceApiExpectTest extends BaseTroveApiExpectTest {
-    
-    public void testCreateInstance() {
-        URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances");
-        InstanceApi api = requestsSendResponses(
-                keystoneAuthWithUsernameAndPasswordAndTenantName,
-                responseWithKeystoneAccess,
-                authenticatedGET().endpoint(endpoint) // bad naming convention, you should not be able to change the method to POST
-                .method("POST")
-                .payload(payloadFromResourceWithContentType("/instance_create_request.json", MediaType.APPLICATION_JSON))
-                .build(),
-                HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_create.json")).build() // response
-                ).getInstanceApiForZone("RegionOne");
-
-        Instance instance = api.create("1", 2, "json_rack_instance");
-        assertEquals(instance.getSize(),2);
-        assertEquals(instance.getName(), "json_rack_instance");  
-    }
-    
-    @Test(expectedExceptions = ResourceNotFoundException.class)
-    public void testCreateInstanceFail() {
-        URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances");
-        InstanceApi api = requestsSendResponses(
-                keystoneAuthWithUsernameAndPasswordAndTenantName,
-                responseWithKeystoneAccess,
-                authenticatedGET().endpoint(endpoint) // bad naming convention, you should not be able to change the method to POST
-                .method("POST")
-                .payload(payloadFromResourceWithContentType("/instance_create_request.json", MediaType.APPLICATION_JSON))
-                .build(),
-                HttpResponse.builder().statusCode(404).payload(payloadFromResource("/instance_create.json")).build() // response
-                ).getInstanceApiForZone("RegionOne");
-
-        api.create("1", 2, "json_rack_instance");
-    }
-    
-    public void testDeleteInstance() {
-        URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/098653ba-218b-47ce-936a-e0b749101f81");
-        InstanceApi api = requestsSendResponses(
-                keystoneAuthWithUsernameAndPasswordAndTenantName,
-                responseWithKeystoneAccess,
-                authenticatedGET().endpoint(endpoint).method("DELETE").build(),
-                HttpResponse.builder().statusCode(202).build() // response
-                ).getInstanceApiForZone("RegionOne");
-
-        assertTrue( api.delete("098653ba-218b-47ce-936a-e0b749101f81") );
-    }
-    
-    public void testDeleteInstanceFail() {
-        URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/098653ba-218b-47ce-936a-e0b749101f81");
-        InstanceApi api = requestsSendResponses(
-                keystoneAuthWithUsernameAndPasswordAndTenantName,
-                responseWithKeystoneAccess,
-                authenticatedGET().endpoint(endpoint).method("DELETE").build(),
-                HttpResponse.builder().statusCode(404).build() // response
-                ).getInstanceApiForZone("RegionOne");
-
-        assertTrue( !api.delete("098653ba-218b-47ce-936a-e0b749101f81") );
-    }
-
-   
-   public void testListInstances() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances");
-      InstanceApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_list.json")).build()
-      ).getInstanceApiForZone("RegionOne");
-
-      Set<? extends Instance> instances = api.list().toSet();
-      assertEquals(instances.size(),2);
-      assertEquals(instances.iterator().next().getSize(), 2);
-   }
-
-   public void testListInstancesFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances");
-      InstanceApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getInstanceApiForZone("RegionOne");
-
-      Set<? extends Instance> instances = api.list().toSet();
-      assertTrue(instances.isEmpty());
-   }   
-
-   public void testGetInstance() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7");
-      InstanceApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_get.json")).build()
-      ).getInstanceApiForZone("RegionOne");
-
-      Instance instance = api.get("44b277eb-39be-4921-be31-3d61b43651d7");
-      assertEquals(instance.getName(), "json_rack_instance");
-      assertEquals(instance.getId(), "44b277eb-39be-4921-be31-3d61b43651d7");
-      assertEquals(instance.getLinks().size(), 2);
-      assertEquals(instance.getHostname(), "e09ad9a3f73309469cf1f43d11e79549caf9acf2.rackspaceclouddb.com");
-   }
-   
-   public void testGetInstanceFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/12312");
-      InstanceApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getInstanceApiForZone("RegionOne");
-
-      assertNull(api.get("12312"));
-   }  
-   
-   public void testEnableRootOnInstance() {
-       URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7/root");
-       InstanceApi api = requestsSendResponses(
-             keystoneAuthWithUsernameAndPasswordAndTenantName,
-             responseWithKeystoneAccess,
-             authenticatedGET().method("POST").endpoint(endpoint).build(),
-             HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_root.json")).build()
-       ).getInstanceApiForZone("RegionOne");
-
-       String password = api.enableRoot("44b277eb-39be-4921-be31-3d61b43651d7");
-       assertEquals(password, "12345");
-    }
-   
-   public void testEnableRootOnInstanceFail() {
-       URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7/root");
-       InstanceApi api = requestsSendResponses(
-             keystoneAuthWithUsernameAndPasswordAndTenantName,
-             responseWithKeystoneAccess,
-             authenticatedGET().method("POST").endpoint(endpoint).build(),
-             HttpResponse.builder().statusCode(404).payload(payloadFromResource("/instance_root.json")).build()
-       ).getInstanceApiForZone("RegionOne");
-
-       String password = api.enableRoot("44b277eb-39be-4921-be31-3d61b43651d7");
-       assertEquals(password, null);
-    }
-   
-   public void testIsRootInstance() {
-       URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7/root");
-       InstanceApi api = requestsSendResponses(
-             keystoneAuthWithUsernameAndPasswordAndTenantName,
-             responseWithKeystoneAccess,
-             authenticatedGET().endpoint(endpoint).build(),
-             HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_is_rooted.json")).build()
-       ).getInstanceApiForZone("RegionOne");
-
-       boolean rooted = api.isRooted("44b277eb-39be-4921-be31-3d61b43651d7");
-       assertEquals(rooted, true);
-    }
-   
-   public void testIsRootInstanceFalse() {
-       URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7/root");
-       InstanceApi api = requestsSendResponses(
-             keystoneAuthWithUsernameAndPasswordAndTenantName,
-             responseWithKeystoneAccess,
-             authenticatedGET().endpoint(endpoint).build(),
-             HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_is_rooted_false.json")).build()
-       ).getInstanceApiForZone("RegionOne");
-
-       Boolean rooted = api.isRooted("44b277eb-39be-4921-be31-3d61b43651d7");
-       assertEquals(rooted.booleanValue(), false);
-    }
-   
-   @Test(expectedExceptions = ResourceNotFoundException.class)  
-   public void testIsRootInstanceFail() {
-       URI endpoint = URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7/root");
-       InstanceApi api = requestsSendResponses(
-             keystoneAuthWithUsernameAndPasswordAndTenantName,
-             responseWithKeystoneAccess,
-             authenticatedGET().endpoint(endpoint).build(),
-             HttpResponse.builder().statusCode(404).payload(payloadFromResource("/instance_is_rooted.json")).build()
-       ).getInstanceApiForZone("RegionOne");
-
-       Boolean rooted = api.isRooted("44b277eb-39be-4921-be31-3d61b43651d7");
-       assertNull(rooted);
-    }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java
deleted file mode 100644
index 6de832a..0000000
--- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java
+++ /dev/null
@@ -1,137 +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.openstack.trove.v1.features;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.jclouds.openstack.trove.v1.domain.Instance;
-import org.jclouds.openstack.trove.v1.internal.BaseTroveApiLiveTest;
-import org.jclouds.openstack.trove.v1.utils.TroveUtils;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * @author Zack Shoylev
- */
-@Test(groups = "live", testName = "InstanceApiLiveTest")
-public class InstanceApiLiveTest extends BaseTroveApiLiveTest {
-
-    private static Map<String,List<Instance>> created = Maps.newHashMap();
-    
-    @Override
-    @BeforeClass(groups = { "integration", "live" })
-    public void setup() {
-        super.setup();
-        TroveUtils utils= new TroveUtils(api);
-        for (String zone : api.getConfiguredZones()) {
-            List<Instance> zoneList = Lists.newArrayList();
-            InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-            zoneList.add(utils.getWorkingInstance(zone, "first_instance_testing_" + zone, "1", 1));
-            Instance second = utils.getWorkingInstance(zone, "second_instance_testing_" + zone, "1", 1);
-            instanceApi.enableRoot(second.getId());
-            zoneList.add(second);            
-            created.put(zone, zoneList);
-        }
-    }
-    
-    @Override
-    @AfterClass(groups = { "integration", "live" })
-    public void tearDown(){
-        for (String zone : api.getConfiguredZones()) {
-            InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-            for(Instance instance : created.get(zone)){
-                if( !instanceApi.delete(instance.getId() ) )
-                    throw new RuntimeException("Could not delete a database instance after tests!");
-            }
-        }
-        super.tearDown();
-    }
-
-    private void checkInstance(Instance instance) {
-        assertNotNull(instance.getId(), "Id cannot be null for " + instance);
-        checkArgument(instance.getSize() > 0, "Size must not be 0");
-    }
-
-    @Test
-    public void testListInstances() {
-        for (String zone : api.getConfiguredZones()) {
-            InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-            FluentIterable<Instance> response = instanceApi.list(); 
-            assertFalse(response.isEmpty());
-            for (Instance instance : response) {
-                checkInstance(instance);
-            }  
-        }   
-    }    
-
-    @Test
-    public void testGetInstance() {
-        for (String zone : api.getConfiguredZones()) {
-            InstanceApi instanceApi = api.getInstanceApiForZone(zone);           
-            for (Instance instance : instanceApi.list()) {
-                Instance instanceFromGet = instanceApi.get(instance.getId());
-                assertNotNull(instanceFromGet.getHostname());
-                assertNull(instance.getHostname());
-                assertEquals(instanceFromGet.getId(), instance.getId());
-                assertEquals(instanceFromGet.getName(), instance.getName());
-                assertEquals(instanceFromGet.getStatus(), instance.getStatus());
-                assertEquals(instanceFromGet.getFlavor(), instance.getFlavor());
-                assertEquals(instanceFromGet.getSize(), instance.getSize());
-                assertEquals(instanceFromGet.getLinks(), instance.getLinks());
-            }
-        }
-    }
-
-    @Test
-    public void testGetInstanceWhenNotFound() {
-        for (String zone : api.getConfiguredZones()) {
-            InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-            assertNull(instanceApi.get("9999"));
-        }
-    }   
-    
-    @Test
-    public void testGetRootStatus() {
-        for (String zone : api.getConfiguredZones()) {
-            InstanceApi instanceApi = api.getInstanceApiForZone(zone);
-            Iterator<Instance> iterator = instanceApi.list().iterator();
-            Instance first;
-            Instance second;
-            do {
-               first = iterator.next(); 
-            } while(!first.getName().contains("instance_testing"));
-            do {
-               second = iterator.next(); 
-            } while(!second.getName().contains("instance_testing"));
-            assertTrue(instanceApi.isRooted(first.getId()) || instanceApi.isRooted(second.getId()));
-        }
-    }
-}