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:51 UTC

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

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


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/commit/f65d94a8
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/f65d94a8
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/f65d94a8

Branch: refs/heads/master
Commit: f65d94a8d45ebfa1c9e8fd2ac9ecf7df19e349bd
Parents: a9a2b5b
Author: Zack Shoylev <za...@rackspace.com>
Authored: Thu Dec 12 17:44:10 2013 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Thu Dec 12 18:44:16 2013 -0600

----------------------------------------------------------------------
 README.md                                       |   3 -
 openstack-trove/README.md                       |   7 -
 openstack-trove/pom.xml                         | 142 ------
 .../jclouds/openstack/trove/v1/TroveApi.java    |  87 ----
 .../openstack/trove/v1/TroveApiMetadata.java    |  95 ----
 .../v1/binders/BindCreateDatabaseToJson.java    |  58 ---
 .../v1/binders/BindCreateInstanceToJson.java    |  50 ---
 .../trove/v1/binders/BindCreateUserToJson.java  |  69 ---
 .../trove/v1/binders/BindGrantUserToJson.java   |  61 ---
 .../trove/v1/config/TroveHttpApiModule.java     |  82 ----
 .../trove/v1/config/TroveParserModule.java      |  32 --
 .../openstack/trove/v1/domain/Flavor.java       | 169 --------
 .../openstack/trove/v1/domain/Instance.java     | 301 -------------
 .../jclouds/openstack/trove/v1/domain/User.java | 234 ----------
 .../trove/v1/features/DatabaseApi.java          | 109 -----
 .../openstack/trove/v1/features/FlavorApi.java  |  92 ----
 .../trove/v1/features/InstanceApi.java          | 162 -------
 .../openstack/trove/v1/features/UserApi.java    | 237 ----------
 .../trove/v1/filters/EncodeDotsForUserGet.java  |  49 ---
 .../v1/functions/ParseDatabaseListForUser.java  |  54 ---
 .../ParsePasswordFromRootedInstance.java        |  49 ---
 .../trove/v1/handlers/TroveErrorHandler.java    |  69 ---
 .../openstack/trove/v1/internal/Volume.java     |  32 --
 .../trove/v1/predicates/InstancePredicates.java | 144 ------
 .../openstack/trove/v1/utils/TroveUtils.java    | 107 -----
 .../services/org.jclouds.apis.ApiMetadata       |  18 -
 .../openstack/trove/v1/domain/FlavorTest.java   |  55 ---
 .../openstack/trove/v1/domain/InstanceTest.java |  53 ---
 .../openstack/trove/v1/domain/UserTest.java     |  47 --
 .../v1/features/DatabaseApiExpectTest.java      | 161 -------
 .../trove/v1/features/DatabaseApiLiveTest.java  | 114 -----
 .../trove/v1/features/FlavorApiExpectTest.java  | 111 -----
 .../trove/v1/features/FlavorApiLiveTest.java    |  87 ----
 .../v1/features/InstanceApiExpectTest.java      | 217 ----------
 .../trove/v1/features/InstanceApiLiveTest.java  | 137 ------
 .../trove/v1/features/UserApiExpectTest.java    | 433 -------------------
 .../trove/v1/features/UserApiLiveTest.java      | 207 ---------
 .../v1/internal/BaseTroveApiExpectTest.java     |  27 --
 .../trove/v1/internal/BaseTroveApiLiveTest.java |  43 --
 .../trove/v1/internal/BaseTroveExpectTest.java  |  78 ----
 .../trove/v1/parse/ParseFlavorListTest.java     | 108 -----
 .../trove/v1/parse/ParseInstanceListTest.java   |  95 ----
 .../trove/v1/parse/ParseUserListTest.java       |  66 ---
 .../trove/v1/utils/TroveUtilsExpectTest.java    |  67 ---
 .../src/test/resources/access_rax_us.json       | 168 -------
 .../test/resources/database_create_request.json |   9 -
 .../database_create_simple_request.json         |   7 -
 .../src/test/resources/database_list.json       |  19 -
 .../src/test/resources/flavor_get.json          |  17 -
 .../src/test/resources/flavor_list.json         |  94 ----
 .../src/test/resources/instance_create.json     |  35 --
 .../test/resources/instance_create_request.json |   9 -
 .../src/test/resources/instance_get.json        |  37 --
 .../resources/instance_get_bad_instance.json    |  37 --
 .../src/test/resources/instance_is_rooted.json  |   3 -
 .../resources/instance_is_rooted_false.json     |   3 -
 .../src/test/resources/instance_list.json       |  66 ---
 .../src/test/resources/instance_root.json       |   6 -
 .../src/test/resources/logback-test.xml         |  69 ---
 openstack-trove/src/test/resources/logback.xml  |  69 ---
 .../src/test/resources/trove_user_list.json     |  35 --
 .../src/test/resources/user_create_request.json |  35 --
 .../resources/user_create_simple_request.json   |  13 -
 .../user_create_with_host_simple_request.json   |  14 -
 .../src/test/resources/user_get.json            |  14 -
 .../src/test/resources/user_get_withhost.json   |  14 -
 .../src/test/resources/user_grant_request.json  |  10 -
 .../resources/user_grant_simple_request.json    |   7 -
 .../src/test/resources/user_list_access.json    |  10 -
 .../test/resources/user_password_request.json   |  12 -
 pom.xml                                         |   3 -
 rackspace-clouddatabases-uk/README.md           |   7 -
 rackspace-clouddatabases-uk/pom.xml             | 164 -------
 .../uk/CloudDatabasesUKProviderMetadata.java    | 112 -----
 .../org.jclouds.providers.ProviderMetadata      |   1 -
 ...udDatabasesUKProviderMetadataExpectTest.java |  64 ---
 .../uk/CloudDatabasesUKProviderTest.java        |  32 --
 .../CloudDatabasesUKDatabaseApiLiveTest.java    |  30 --
 .../CloudDatabasesUKFlavorApiLiveTest.java      |  30 --
 .../CloudDatabasesUKInstanceApiLiveTest.java    |  30 --
 .../CloudDatabasesUKUserApiLiveTest.java        |  30 --
 .../src/test/resources/access_rax_uk.json       | 129 ------
 .../src/test/resources/logback.xml              |  69 ---
 rackspace-clouddatabases-us/README.md           |   7 -
 rackspace-clouddatabases-us/pom.xml             | 164 -------
 .../us/CloudDatabasesUSProviderMetadata.java    | 116 -----
 .../org.jclouds.providers.ProviderMetadata      |   1 -
 ...udDatabasesUSProviderMetadataExpectTest.java |  64 ---
 .../us/CloudDatabasesUSProviderTest.java        |  32 --
 .../CloudDatabasesUSDatabaseApiLiveTest.java    |  30 --
 .../CloudDatabasesUSFlavorApiLiveTest.java      |  30 --
 .../CloudDatabasesUSInstanceApiLiveTest.java    |  30 --
 .../CloudDatabasesUSUserApiLiveTest.java        |  30 --
 .../src/test/resources/logback.xml              |  69 ---
 94 files changed, 6704 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index faf3c5d..af43803 100644
--- a/README.md
+++ b/README.md
@@ -13,11 +13,8 @@ Although this is a "labs" repository, some of the providers and APIs here are pr
 | openstack-marconi | API | No |
 | openstack-neutron | API | Yes |
 | openstack-swift | API | No |
-| openstack-trove | API | Yes |
 | rackspace-autoscale | API | No |
 | rackspace-autoscale-us | Provider | No |
-| rackspace-clouddatabases-uk | Provider | Yes |
-| rackspace-clouddatabases-us | Provider | Yes |
 | rackspace-cloudqueues-us | Provider | No |
 
 License

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/README.md
----------------------------------------------------------------------
diff --git a/openstack-trove/README.md b/openstack-trove/README.md
deleted file mode 100644
index ef8c513..0000000
--- a/openstack-trove/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-OpenStack Trove
-===============
-
-Trove is Database as a Service for OpenStack.
-
-Production ready?
-Yes

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/pom.xml
----------------------------------------------------------------------
diff --git a/openstack-trove/pom.xml b/openstack-trove/pom.xml
deleted file mode 100644
index af3f973..0000000
--- a/openstack-trove/pom.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.jclouds</groupId>
-    <artifactId>jclouds-project</artifactId>
-    <version>1.7.0-SNAPSHOT</version>
-  </parent>
-
-  <!-- TODO: when out of labs, switch to org.jclouds.api -->
-  <groupId>org.apache.jclouds.labs</groupId>
-  <artifactId>openstack-trove</artifactId>
-  <version>1.7.0-SNAPSHOT</version>
-  <name>jclouds openstack-trove api</name>
-  <description>jclouds components to access an implementation of OpenStack Trove</description>
-  <packaging>bundle</packaging>
-
-  <properties>
-    <!-- keystone endpoint -->
-    <test.openstack-trove.endpoint>http://localhost:5000/v2.0/</test.openstack-trove.endpoint>
-    <!-- keystone version -->
-    <test.openstack-trove.api-version>1.0</test.openstack-trove.api-version>
-    <test.openstack-trove.build-version />
-    <test.openstack-trove.identity>FIXME_IDENTITY</test.openstack-trove.identity>
-    <test.openstack-trove.credential>FIXME_CREDENTIALS</test.openstack-trove.credential>
-    <test.jclouds.keystone.credential-type>passwordCredentials</test.jclouds.keystone.credential-type>
-
-    <jclouds.osgi.export>org.jclouds.openstack.trove.v1_0*;version="${project.version}"</jclouds.osgi.export>
-    <jclouds.osgi.import>
-      org.jclouds.rest.internal;version="${jclouds.version}",
-      org.jclouds.labs*;version="${project.version}",
-      org.jclouds*;version="${jclouds.version}",
-      *
-    </jclouds.osgi.import>
-  </properties>
-
-  <repositories>
-    <repository>
-      <id>apache-snapshots</id>
-      <url>https://repository.apache.org/content/repositories/snapshots</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.jclouds.api</groupId>
-      <artifactId>openstack-keystone</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-core</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-core</artifactId>
-      <version>${project.parent.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.api</groupId>
-      <artifactId>openstack-keystone</artifactId>
-      <version>${project.parent.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.driver</groupId>
-      <artifactId>jclouds-slf4j</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>live</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>integration</id>
-                <phase>integration-test</phase>
-                <goals>
-                  <goal>test</goal>
-                </goals>
-                <configuration>
-                  <forkCount>5</forkCount>
-                  <reuseForks>true</reuseForks>
-                  <parallel>classes</parallel>
-                  <systemPropertyVariables>
-                    <test.openstack-trove.endpoint>${test.openstack-trove.endpoint}</test.openstack-trove.endpoint>
-                    <test.openstack-trove.api-version>${test.openstack-trove.api-version}</test.openstack-trove.api-version>
-                    <test.openstack-trove.build-version>${test.openstack-trove.build-version}</test.openstack-trove.build-version>
-                    <test.openstack-trove.identity>${test.openstack-trove.identity}</test.openstack-trove.identity>
-                    <test.openstack-trove.credential>${test.openstack-trove.credential}</test.openstack-trove.credential>
-                    <test.jclouds.keystone.credential-type>${test.jclouds.keystone.credential-type}</test.jclouds.keystone.credential-type>
-                  </systemPropertyVariables>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApi.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApi.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApi.java
deleted file mode 100644
index 798ebd3..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApi.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;
-
-import java.io.Closeable;
-import java.util.Set;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.location.functions.ZoneToEndpoint;
-import org.jclouds.openstack.keystone.v2_0.domain.Tenant;
-import org.jclouds.openstack.trove.v1.features.DatabaseApi;
-import org.jclouds.openstack.trove.v1.features.FlavorApi;
-import org.jclouds.openstack.trove.v1.features.InstanceApi;
-import org.jclouds.openstack.trove.v1.features.UserApi;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.rest.annotations.EndpointParam;
-import com.google.common.base.Optional;
-import com.google.inject.Provides;
-
-/**
- * Provides access to Trove.
- *  
- * @see <a href="http://api.openstack.org/">API Doc</a>
- * @author Zack Shoylev
- */
-public interface TroveApi extends Closeable{
-   /**
-    * Provides a set of all zones available.
-    * 
-    * @return the Zone codes configured
-    */
-   @Provides
-   @Zone
-   Set<String> getConfiguredZones();
-
-   /**
-    * Provides access to Flavor features.
-    */
-   @Delegate
-   FlavorApi getFlavorApiForZone(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
-
-   /**
-    * Provides access to Instance features.
-    */
-   @Delegate
-   InstanceApi getInstanceApiForZone(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
-
-   /**
-    * Provides access to User features.
-    */
-   @Delegate
-   @Path("/instances/{instanceId}")
-   UserApi getUserApiForZoneAndInstance(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
-         @PathParam("instanceId") String instanceId);
-
-   /**
-    * Provides access to Database features.
-    */
-   @Delegate
-   @Path("/instances/{instanceId}")
-   DatabaseApi getDatabaseApiForZoneAndInstance(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
-         @PathParam("instanceId") String instanceId);
-
-   /**
-    * Provides the Tenant.
-    */
-   @Provides 
-   Optional<Tenant> getCurrentTenantId();
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApiMetadata.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApiMetadata.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApiMetadata.java
deleted file mode 100644
index 9ed047c..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/TroveApiMetadata.java
+++ /dev/null
@@ -1,95 +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;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
-import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
-import org.jclouds.openstack.trove.v1.config.TroveHttpApiModule;
-import org.jclouds.openstack.trove.v1.config.TroveParserModule;
-import org.jclouds.openstack.v2_0.ServiceType;
-import org.jclouds.rest.internal.BaseHttpApiMetadata;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-/**
- * Implementation of {@link ApiMetadata} for Trove API
- * 
- * @author Zack Shoylev
- */
-public class TroveApiMetadata extends BaseHttpApiMetadata<TroveApi> {
-      
-   @Override
-   public Builder toBuilder() {
-      return new Builder().fromApiMetadata(this);
-   }
-
-   public TroveApiMetadata() {
-      this(new Builder());
-   }
-
-   protected TroveApiMetadata(Builder builder) {
-      super(builder);
-   }
-
-   public static Properties defaultProperties() {
-      Properties properties = BaseHttpApiMetadata.defaultProperties();
-      properties.setProperty(SERVICE_TYPE, ServiceType.DATABASE_SERVICE);      
-      properties.setProperty(CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
-      return properties;
-   }
-
-   public static class Builder extends BaseHttpApiMetadata.Builder<TroveApi, Builder> {
-
-      protected Builder() {         
-          id("openstack-trove")
-         .name("OpenStack Trove API")
-         .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant")
-         .credentialName("${password}")
-         .endpointName("Keystone base URL ending in /v2.0/")
-         .documentation(URI.create("http://api.openstack.org/"))
-         .version("1.0")
-         .defaultEndpoint("http://localhost:5000/v2.0/")
-         .defaultProperties(TroveApiMetadata.defaultProperties())
-         .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
-                                     .add(AuthenticationApiModule.class)
-                                     .add(KeystoneAuthenticationModule.class)
-                                     .add(ZoneModule.class)
-                                     .add(TroveParserModule.class)
-                                     .add(TroveHttpApiModule.class)
-                                     .build());
-      }
-      
-      @Override
-      public TroveApiMetadata build() {
-         return new TroveApiMetadata(this);
-      }
-
-      @Override
-      protected Builder self() {
-         return this;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateDatabaseToJson.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateDatabaseToJson.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateDatabaseToJson.java
deleted file mode 100644
index 50bbdfc..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateDatabaseToJson.java
+++ /dev/null
@@ -1,58 +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.binders;
-
-import java.util.Map;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Inject;
-
-/**
- * @author Zack Shoylev
- */
-public class BindCreateDatabaseToJson implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Builder<String, String> databaseBuilder = ImmutableMap.builder();
-
-      databaseBuilder.put("name", (String) postParams.get("database"));
-
-      if (postParams.get("character_set") != null) {
-         databaseBuilder.put("character_set", (String) postParams.get("character_set"));
-      }
-      if (postParams.get("collate") != null) {
-         databaseBuilder.put("collate", (String) postParams.get("collate"));
-      }
-
-      return jsonBinder.bindToRequest(request, ImmutableMap.of("databases", ImmutableSet.of(databaseBuilder.build())));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object toBind) {
-      throw new IllegalStateException("Create database is a POST operation");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateInstanceToJson.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateInstanceToJson.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateInstanceToJson.java
deleted file mode 100644
index 6ee0e22..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateInstanceToJson.java
+++ /dev/null
@@ -1,50 +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.binders;
-
-import java.util.Map;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.trove.v1.internal.Volume;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import com.google.inject.Inject;
-
-/**
- * @author Zack Shoylev
- */
-public class BindCreateInstanceToJson implements MapBinder {
-    
-    @Inject
-    private BindToJsonPayload jsonBinder;
-    
-    @Override    
-    public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-       Map<String, Object> databaseInstance = Maps.newHashMap();
-       databaseInstance.put("flavorRef", postParams.get("flavorRef"));
-       databaseInstance.put("volume", new Volume((Integer) postParams.get("size")));
-       if (postParams.get("name") != null)
-           databaseInstance.put("name", postParams.get("name"));
-       return jsonBinder.bindToRequest(request, ImmutableMap.of("instance", databaseInstance));
-    }
-
-    @Override
-    public <R extends HttpRequest> R bindToRequest(R request, Object toBind) {
-       throw new IllegalStateException("CreateInstance is a POST operation");
-    }    
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateUserToJson.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateUserToJson.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateUserToJson.java
deleted file mode 100644
index 2e17677..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindCreateUserToJson.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.binders;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.trove.v1.domain.User;
-import org.jclouds.openstack.trove.v1.domain.User.Builder;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Sets;
-import com.google.inject.Inject;
-
-/**
- * @author Zack Shoylev
- */
-public class BindCreateUserToJson implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @SuppressWarnings("unchecked")
-   @Override    
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Set<User> users = Sets.newHashSet();
-      if( postParams.get("name") != null ) {
-         Set<String> databases = Sets.newHashSet();
-         if(postParams.get("databaseName")!=null)
-            databases.add((String) postParams.get("databaseName"));
-         
-         Builder builder = User.builder();
-         builder.name((String) postParams.get("name"))
-                .password((String) postParams.get("password"));
-         
-         builder.host((String) postParams.get("host"));
-         builder.databases(databases);
-         
-         User user = builder.build();
-         users.add(user);
-      }
-      else if( postParams.get("users") != null ) {
-         users = (Set<User>) postParams.get("users");
-      }
-      return jsonBinder.bindToRequest(request, ImmutableMap.of("users", users));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object toBind) {
-      throw new IllegalStateException("Create user is a POST operation");
-   }    
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindGrantUserToJson.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindGrantUserToJson.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindGrantUserToJson.java
deleted file mode 100644
index cb8fe7c..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/binders/BindGrantUserToJson.java
+++ /dev/null
@@ -1,61 +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.binders;
-
-import java.util.List;
-import java.util.Map;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.inject.Inject;
-
-/**
- * @author Zack Shoylev
- */
-public class BindGrantUserToJson implements MapBinder {
-    
-    @Inject
-    private BindToJsonPayload jsonBinder;
-    
-    @SuppressWarnings("unchecked")
-    @Override    
-    public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-       List<String> databases = Lists.newArrayList();
-       if( postParams.get("databaseName")!=null ) {
-          databases.add((String)postParams.get("databaseName"));
-       }
-       else if( postParams.get("databases")!=null ) {
-          databases = (List<String>) postParams.get("databases");
-       }
-       
-       List<Map<String,String>> databaseList = Lists.newArrayList();       
-       for(String databaseName : databases) {
-           Map<String,String> singleDatabase = Maps.newHashMap();
-           singleDatabase.put("name", databaseName);
-           databaseList.add(singleDatabase);
-       }
-       return jsonBinder.bindToRequest(request, ImmutableMap.of("databases", databaseList));
-    }
-
-    @Override
-    public <R extends HttpRequest> R bindToRequest(R request, Object toBind) {
-       throw new IllegalStateException("Grant user is a PUT operation");
-    }    
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveHttpApiModule.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveHttpApiModule.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveHttpApiModule.java
deleted file mode 100644
index 2ff5940..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveHttpApiModule.java
+++ /dev/null
@@ -1,82 +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.config;
-
-import java.net.URI;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.annotation.ClientError;
-import org.jclouds.http.annotation.Redirection;
-import org.jclouds.http.annotation.ServerError;
-import org.jclouds.json.config.GsonModule.DateAdapter;
-import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
-import org.jclouds.openstack.keystone.v2_0.domain.Access;
-import org.jclouds.openstack.keystone.v2_0.domain.Tenant;
-import org.jclouds.openstack.trove.v1.TroveApi;
-import org.jclouds.openstack.trove.v1.handlers.TroveErrorHandler;
-import org.jclouds.rest.ConfiguresHttpApi;
-import org.jclouds.rest.config.HttpApiModule;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
-import com.google.inject.Provides;
-
-/**
- * Configures the Trove connection.
- * 
- * @author Zack Shoylev
- */
-@ConfiguresHttpApi
-public class TroveHttpApiModule extends HttpApiModule<TroveApi> {
-   
-   @Override
-   protected void configure() {
-      bind(DateAdapter.class).to(Iso8601DateAdapter.class);
-      super.configure();
-   }
-   
-   @Provides
-   @Singleton
-   public Multimap<URI, URI> aliases() {
-      return ImmutableMultimap.<URI, URI>builder().build();
-   }
-
-   @Override
-   protected void bindErrorHandlers() {
-      bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(TroveErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(TroveErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(TroveErrorHandler.class);
-   }
-   
-   @Provides
-   Supplier<Optional<Tenant>> supplyTenant(Supplier<Access> access) {
-      return Suppliers.compose(GetTenant.INSTANCE, access);
-   }
-   
-   private static enum GetTenant implements Function<Access, Optional<Tenant>> {
-      INSTANCE;
-      public Optional<Tenant> apply(Access in){
-         return in.getToken().getTenant();
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveParserModule.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveParserModule.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveParserModule.java
deleted file mode 100644
index 2406c13..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/config/TroveParserModule.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.config;
-
-import org.jclouds.json.config.GsonModule;
-import org.jclouds.json.config.GsonModule.DateAdapter;
-
-import com.google.inject.AbstractModule;
-
-/**
- * @author Everett Toews
- */
-public class TroveParserModule extends AbstractModule {
-   @Override
-   protected void configure() {
-      bind(DateAdapter.class).to(GsonModule.Iso8601DateAdapter.class);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Flavor.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Flavor.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Flavor.java
deleted file mode 100644
index df31ac8..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Flavor.java
+++ /dev/null
@@ -1,169 +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 java.beans.ConstructorProperties;
-import java.util.List;
-
-import org.jclouds.openstack.v2_0.domain.Link;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
-
-/**
- * An Openstack Trove Flavor.
- * 
- * @author Zack Shoylev
- */
-public class Flavor implements Comparable<Flavor>{
-
-   private final int id;
-   private final Optional<String> name;
-   private final int ram;
-   private final List<Link> links;
-
-   @ConstructorProperties({
-      "id", "name", "ram", "links"
-   })
-   protected Flavor(int id, String name, int ram, List<Link> links) {
-      this.id = id;
-      this.name = Optional.fromNullable(name);
-      this.ram = ram;
-      this.links = links;
-   }
-
-   /**
-    * @return the id of this flavor.
-    */
-   public int getId() {
-      return this.id;
-   }
-
-   /**
-    * @return the name of this flavor.
-    */
-   public String getName() {
-      return this.name.orNull();
-   }
-
-   /**
-    * @return the RAM amount for this flavor.
-    */
-   public int getRam() {
-      return this.ram;
-   }
-
-   /**
-    * @return the flavor links for this flavor. These are used during database instance creation.
-    */
-   public List<Link> getLinks() {
-      return this.links;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(id);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Flavor that = Flavor.class.cast(obj);
-      return Objects.equal(this.id, that.id);
-   }
-
-   protected ToStringHelper string() {
-      return Objects.toStringHelper(this)
-            .add("id", id).add("name", name).add("ram", ram);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   @Override
-   public int compareTo(Flavor that) {
-      if (that == null)
-         return 1;
-      if (this == that)
-         return 0;
-      return this.getId() > that.getId() ? +1 : this.getId() < this.getId() ? -1 : 0;
-   }
-
-   public static Builder builder() { 
-      return new Builder();
-   }
-
-   public Builder toBuilder() { 
-      return new Builder().fromFlavor(this);
-   }    
-
-   public static class Builder {
-      protected int id;
-      protected String name;
-      protected int ram;
-      protected List<Link> links;
-
-      /** 
-       * @see Flavor#getId()
-       */
-      public Builder id(int id) {
-         this.id = id;
-         return this;
-      }
-
-      /** 
-       * @see Flavor#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return this;
-      }
-
-      /** 
-       * @see Flavor#getRam()
-       */
-      public Builder ram(int ram) {
-         this.ram = ram;
-         return this;
-      }
-
-      /** 
-       * @see Flavor#getLinks()
-       */
-      public Builder links(List<Link> links) {
-         this.links = ImmutableList.copyOf(links);
-         return this;
-      }
-
-      public Flavor build() {
-         return new Flavor(id, name, ram, links);
-      }
-
-      public Builder fromFlavor(Flavor in) {
-         return this
-               .id(in.getId())
-               .name(in.getName())
-               .ram(in.getRam())
-               .links(in.getLinks());
-      }
-   }    
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Instance.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Instance.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Instance.java
deleted file mode 100644
index 64b7ea8..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/Instance.java
+++ /dev/null
@@ -1,301 +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 com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.beans.ConstructorProperties;
-import java.util.List;
-
-import org.jclouds.openstack.trove.v1.internal.Volume;
-import org.jclouds.openstack.v2_0.domain.Link;
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.collect.ImmutableList;
-
-/**
- * An Openstack Trove Database Instance.
- * 
- * @author Zack Shoylev
- */
-public class Instance implements Comparable<Instance>{
-
-   private final String id;
-   private final String name;
-   private final Flavor flavor;
-   private final Volume volume;
-   private final Status status;
-   private final List<Link> links;
-   private final String hostname;
-
-   @ConstructorProperties({
-      "id", "name", "flavor", "volume", "status", "links", "hostname"
-   })
-   protected Instance(String id, String name, Flavor flavor, Volume volume, Status status, List<Link> links, String hostname) {
-      this.id = checkNotNull(id, "id required");
-      this.name = checkNotNull(name, "name required");
-      this.flavor = checkNotNull(flavor, "flavor required");
-      this.volume =  checkNotNull(volume, "volume required");
-      checkArgument(volume.getSize() > 0, "Size must be greater than 0");
-      this.status = checkNotNull(status, "status required");
-      this.links = checkNotNull(links, "links required");
-      this.hostname = hostname; // Hostname is sometimes null. See Instance#getHostname() for details
-   }
-
-   /**
-    * @return the id of this instance.
-    */
-   public String getId() {
-      return this.id;
-   }
-
-   /**
-    * @return the name of this instance.
-    * @see Instance.Builder#name(String)
-    */
-   public String getName() {
-      return this.name;
-   }
-
-   /**
-    * @return the flavor of this instance.
-    * @see Instance.Builder#flavor(Flavor)
-    */
-   public Flavor getFlavor() {
-      return this.flavor;
-   }
-
-   /**
-    * @return the volume size for this instance in gigabytes (GB).
-    * @see Instance.Builder#size(int)
-    */
-   public int getSize() {
-      return this.volume.getSize();
-   }
-
-   /**
-    * @return the status for this instance.
-    * @see Instance.Builder#status(Instance.Status)
-    */
-   public Status getStatus() {
-      return this.status;
-   }
-
-   /**
-    * @return the Links for this instance.
-    * @see Instance.Builder#links(ImmutableList)
-    */
-   public List<Link> getLinks() {
-      return this.links;
-   }
-   
-   /**
-    * @return the hostname of this instance. The hostname is null unless this Instance was obtained with {@link InstanceApi#get(String)}.
-    * @see Instance.Builder#hostname(String)
-    */
-   public String getHostname() {
-      return this.hostname;
-   }
-
-   /**
-    * Lists possible Instance status.
-    * @author zack-shoylev
-    *
-    */
-   public enum Status {
-      /**
-       * The database instance is being provisioned.
-       * */
-      BUILD, 
-      /**
-       * The database instance is rebooting.
-       */
-      REBOOT,
-      /**
-       * The database instance is online and available to take requests.
-       * */
-      ACTIVE,
-      /**
-       * The database instance is unresponsive at the moment.
-       */
-      BLOCKED,
-      /**
-       * The database instance is being resized at the moment.
-       */
-      RESIZE,
-      /**
-       * The database instance is terminating services. Also, SHUTDOWN is returned if for any reason the instance is shut down but not the actual server.
-       */
-      SHUTDOWN, 
-      /**
-       * Unrecognized status response.
-       */
-      UNRECOGNIZED;
-
-      public String value() {
-         return name();
-      }
-
-      @Override
-      public String toString() {
-         return value();
-      }
-
-      public static Status fromValue(String status) {
-         try {
-            return valueOf(checkNotNull(status, "type"));
-         } catch (IllegalArgumentException e) {
-            return UNRECOGNIZED;
-         }
-      }
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(id, name, volume.getSize(), flavor, status, links, hostname);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Instance that = Instance.class.cast(obj);
-      return Objects.equal(this.id, that.id);
-   }
-
-   protected ToStringHelper string() {
-      return Objects.toStringHelper(this)
-            .add("id", id).add("name", name).add("flavor", flavor).add("volume size", volume.getSize()).add("links", links).add("hostname", hostname);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() { 
-      return new Builder();
-   }
-
-   public Builder toBuilder() { 
-      return new Builder().fromInstance(this);
-   }
-
-   public static class Builder {
-      protected String id;
-      protected String name;
-      protected int size;
-      protected Flavor flavor;
-      protected Status status;
-      protected ImmutableList<Link> links;
-      protected String hostname;
-
-      /** 
-       * @param id The id of this instance.
-       * @return The builder object.
-       * @see Instance#getId()
-       */
-      public Builder id(String id) {
-         this.id = id;
-         return this;
-      }
-
-      /** 
-       * @param name The name of this instance.
-       * @return The builder object.
-       * @see Instance#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return this;
-      }
-
-      /** 
-       * @param size Specifies the volume size in gigabytes (GB).
-       * @return The builder object.
-       * @see Instance#getSize()
-       */
-      public Builder size(int size) {
-         this.size = size;
-         return this;
-      }
-
-      /** 
-       * @param flavor The Flavor of this instance as specified in the response from the List Flavors API call.
-       * @return The builder object.
-       * @see Instance#getFlavor()
-       */
-      public Builder flavor(Flavor flavor) {
-         this.flavor = flavor;
-         return this;
-      }
-
-      /** 
-       * @param status The status of this instance.
-       * @return The builder object.
-       * @see Instance#getStatus()
-       */
-      public Builder status(Status status) {
-         this.status = status;
-         return this;
-      }
-
-      /** 
-       * @param links The links to this instance.
-       * @return The builder object.
-       * @see Instance#getLinks()
-       */
-      public Builder links(ImmutableList<Link> links) {
-         this.links = links;
-         return this;
-      }
-      
-      /** 
-       * @param name The hostname of this instance.
-       * @return The builder object.
-       * @see Instance#getHostname()
-       */
-      public Builder hostname(String hostname) {
-         this.hostname = hostname;
-         return this;
-      }
-
-      /**
-       * 
-       * @return A new Instance object.
-       */
-      public Instance build() {
-         return new Instance(id, name, flavor, new Volume(size), status, links, hostname);
-      }
-
-      public Builder fromInstance(Instance in) {
-         return this
-               .id(in.getId())
-               .name(in.getName())
-               .flavor(in.getFlavor())
-               .size(in.getSize())
-               .status(in.getStatus())
-               .links(links)
-               .hostname(hostname);
-      }        
-   }
-
-   @Override
-   public int compareTo(Instance that) {
-      return this.getId().compareTo(that.getId());
-   }   
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/User.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/User.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/User.java
deleted file mode 100644
index 965e6e0..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/domain/User.java
+++ /dev/null
@@ -1,234 +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 com.google.common.base.Preconditions.checkNotNull;
-import java.beans.ConstructorProperties;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * An Openstack Trove Database User.
- * 
- * @author Zack Shoylev
- */
-public class User implements Comparable<User>{
-   private final String name;
-   private final String password;
-   private final String host;
-   private final List<Map<String,String>> databases;
-
-   @ConstructorProperties({
-      "name", "password", "host", "databases"
-   })
-   protected User(String name, String password, String host, List<Map<String,String>> databases) {
-      this.name = checkNotNull(name, "name required");
-      this.password = password;
-      this.host = host;
-      // Set databases to an empty list instead of null
-      if(databases == null) {
-         this.databases = Lists.newArrayList();
-      }
-      else {
-         this.databases = databases;
-      }
-   }    
-
-   protected User(String name, String password, String host, Set<String> databases) {
-      this.name = checkNotNull(name, "name required");
-      this.password = password;
-      this.host = host;
-      // Set databases to an empty list instead of null
-      if(databases == null) {
-         this.databases = Lists.newArrayList();
-      }
-      else {
-         // Using List<Map<String,String>> as the internal representation makes it easy to serialize properly
-         // with less code; this code is to present databases as List<String> to the user.
-         List<Map<String,String>> databaseList = Lists.newArrayList();
-         for(String databaseName : databases) {
-            Map<String,String> singleDatabase = Maps.newHashMap();
-            singleDatabase.put("name", databaseName);
-            databaseList.add(singleDatabase);
-         }
-         this.databases = ImmutableList.copyOf(databaseList);
-      }
-   }   
-
-   /**
-    * @return the name of this user. The name is not a unique or even sufficient identifier in some cases.
-    * @see User#getIdentifier()
-    * @see User.Builder#name(String)
-    */
-   public String getName() {
-      return this.name;
-   }   
-   
-   /**
-    * @return the password for this user.
-    * @see User.Builder#password(String)
-    */
-   public String getPassword() {
-      return this.password;
-   }
-   
-   /**
-    * @return the host for this user.
-    * @see User.Builder#host(String)
-    */
-   public String getHost() {
-      return this.host;
-   }
-   
-   /**
-    * @return a unique identifier for this user. In most cases, this is just the name. If the user is restricted to connections from a specific host, the hostname must be appended to the user name with a "@".
-    */
-   public String getIdentifier() {
-      if(host==null || "%".equals(host))
-         return name;
-      else 
-         return name + "@" + host;
-   }
-
-   /**
-    * @return the databases for this user.
-    * @see User.Builder#databases(String)
-    */
-   public List<String> getDatabases() {
-      List<String> databaseList = Lists.newArrayList();
-      for(Map<String,String> database : this.databases) {
-         databaseList.add(database.get("name"));
-      }
-      return ImmutableList.copyOf(databaseList);
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(name, password, databases);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      User that = User.class.cast(obj);
-      return Objects.equal(this.name, that.name) && 
-            Objects.equal(this.password, that.password) &&
-            Objects.equal(this.host, that.host) &&
-            Objects.equal(this.databases, that.databases);
-   }
-
-   protected ToStringHelper string() {
-      return Objects.toStringHelper(this)
-            .add("name", name)
-            .add("password", password)
-            .add("host", host)
-            .add("databases", databases);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() { 
-      return new Builder();
-   }
-
-   public Builder toBuilder() { 
-      return new Builder().fromUser(this);
-   }
-
-   public static class Builder {
-      protected String name;
-      protected String password;
-      protected String host;
-      protected Set<String> databases;
-      
-      /** 
-       * @param name The name of this user.
-       * @return The builder object.
-       * @see User#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return this;
-      }
-
-      /** 
-       * @param name The password for this user.
-       * @return The builder object.
-       * @see User#getPassword()
-       */
-      public Builder password(String password) {
-         this.password = password;
-         return this;
-      }
-      
-      /** 
-       * @param host Specifies the host from which a user is allowed to connect to the database. 
-       * Possible values are a string containing an IPv4 address or "%" to allow connecting from any host. 
-       * Refer to Section 3.11.1, “User Access Restriction by Host” in the Rackspace Cloud Databases Developer Guide for details.
-       * If host is not specified, it defaults to "%".
-       * @return The builder object.
-       * @see <a href="http://docs.rackspace.com/cdb/api/v1.0/cdb-devguide/content/user_access_restrict_by_host-dle387.html">User Access Restriction by Host</a>
-       * @see User#getHost()
-       */
-      public Builder host(String host) {
-         this.host = host;
-         return this;
-      }
-
-      /** 
-       * @param name The databases for this user.
-       * @return The builder object.
-       * @see User#getDatabases()
-       */
-      public Builder databases(Set<String> databases) {
-         this.databases = databases;
-         return this;
-      }
-
-      /**
-       * 
-       * @return A new User object.
-       */
-      public User build() {
-         return new User(name, password, host, databases);
-      }
-
-      public Builder fromUser(User in) {
-         return this
-               .name(in.getName())
-               .password(in.getPassword())
-               .host(in.getHost())
-               .databases(ImmutableSet.copyOf( in.getDatabases() ));
-      }        
-   }
-
-   @Override
-   public int compareTo(User that) {
-      return this.getName().compareTo(that.getName());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/DatabaseApi.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/DatabaseApi.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/DatabaseApi.java
deleted file mode 100644
index cf6c869..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/DatabaseApi.java
+++ /dev/null
@@ -1,109 +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 javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
-import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.trove.v1.binders.BindCreateDatabaseToJson;
-import org.jclouds.openstack.trove.v1.functions.ParseDatabaseListForUser;
-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.ResponseParser;
-import org.jclouds.rest.annotations.SkipEncoding;
-
-import com.google.common.collect.FluentIterable;
-
-/**
- * This API is for creating, listing, and deleting a Database
- * 
- * @see <a href="http://sourceforge.net/apps/trac/reddwarf/">api doc</a>
- * @see <a
- *      href="https://github.com/reddwarf-nextgen/reddwarf">api
- *      src</a>
- *      
- * @author Zack Shoylev
- */
-@SkipEncoding({'/', '='})
-@RequestFilters(AuthenticateRequest.class)
-public interface DatabaseApi {
-    
-   /**
-    * Same as create(String, null, null)
-    * @see DatabaseApi#create(String, String, String) 
-    */
-   @Named("database:create")
-   @POST
-   @Path("/databases")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindCreateDatabaseToJson.class)
-   boolean create(@PayloadParam("database") String database);
-   
-   /**
-    * This operation creates a new database within the specified instance.
-    * 
-    * @param database The name of the database to be created
-    * @param character_set Optional. Set of symbols and encodings. The default character set is utf8.
-    * @param collate Optional. Set of rules for comparing characters in a character set. The default value for collate is utf8_general_ci.
-    * @return true if successful.
-    */
-   @Named("database:create")
-   @POST
-   @Path("/databases")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindCreateDatabaseToJson.class)
-   boolean create(@PayloadParam("database") String database, @PayloadParam("character_set") String character_set, @PayloadParam("collate") String collate);
-   
-   /**
-    * This operation deletes the specified database for the specified database instance.
-    *
-    * @param databaseName The name for the specified database.
-    * @return true if successful.
-    */
-   @Named("databases:delete")
-   @DELETE
-   @Path("/databases/{name}")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("name") String databaseName);
-   
-   /**
-    * This operation lists the databases for the specified database instance.
-    *
-    * @return The list of Databases.
-    */
-   @Named("database:list")
-   @GET
-   @Path("/databases")   
-   @ResponseParser(ParseDatabaseListForUser.class)
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)   
-   FluentIterable<String> list();   
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/FlavorApi.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/FlavorApi.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/FlavorApi.java
deleted file mode 100644
index f32f059..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/FlavorApi.java
+++ /dev/null
@@ -1,92 +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 javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.trove.v1.domain.Flavor;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.SkipEncoding;
-
-import com.google.common.collect.FluentIterable;
-
-/**
- * This API strictly for listing and retrieving Flavor. Flavors cannot be created or deleted.
- * @see org.jclouds.openstack.trove.v1.domain.Flavor
- * Flavor
- * 
- * @see <a href="http://sourceforge.net/apps/trac/reddwarf/">api doc</a>
- * @see <a
- *      href="https://github.com/reddwarf-nextgen/reddwarf">api
- *      src</a>
- *      
- * @author Zack Shoylev
- */
-@SkipEncoding({'/', '='})
-@RequestFilters(AuthenticateRequest.class)
-public interface FlavorApi {
-   /**
-    * Returns a summary list of Flavors.
-    *
-    * @return The list of Flavors.
-    */
-   @Named("flavor:list")
-   @GET
-   @Path("/flavors")
-   @SelectJson("flavors")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   FluentIterable<Flavor> list();
-   
-   /**
-    * Returns a Flavor by id.
-    *
-    * @param flavorId The id of the Flavor.
-    * @return Flavor The Flavor for the specified id.
-    */
-   @Named("flavors:get/{id}")
-   @GET
-   @Path("/flavors/{id}")
-   @SelectJson("flavor")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   Flavor get(@PathParam("id") int flavorId);
-   
-   /**
-    * Returns a list of Flavors by Account ID (Tenant Id).
-    *
-    * @param flavorId The id of the tenant.
-    * @return The list of Flavors for Account/Tenant Id.
-    */
-   @Named("flavors:get/{id}")
-   @GET
-   @Path("/flavors/{id}")
-   @SelectJson("flavors")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   FluentIterable<Flavor> list(@PathParam("id") String accountId);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/InstanceApi.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/InstanceApi.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/InstanceApi.java
deleted file mode 100644
index 7319c09..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/InstanceApi.java
+++ /dev/null
@@ -1,162 +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 javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
-import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.trove.v1.binders.BindCreateInstanceToJson;
-import org.jclouds.openstack.trove.v1.domain.Instance;
-import org.jclouds.openstack.trove.v1.functions.ParsePasswordFromRootedInstance;
-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.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.SkipEncoding;
-import com.google.common.collect.FluentIterable;
-
-/**
- * This API is for creating, listing, and deleting an Instance, and allows enabling a root user.
- * @see org.jclouds.openstack.trove.v1.domain.Instance
- * Instance
- * 
- * @see <a href="http://sourceforge.net/apps/trac/reddwarf/">api doc</a>
- * @see <a
- *      href="https://github.com/reddwarf-nextgen/reddwarf">api
- *      src</a>
- *      
- * @author Zack Shoylev
- */
-@SkipEncoding({'/', '='})
-@RequestFilters(AuthenticateRequest.class)
-public interface InstanceApi {
-    
-   /**
-    * Same as {@link #create(String, int, String)} but accept an integer Flavor ID.
-    *
-    * @param flavor The flavor ID.
-    * @param volumeSize The size in GB of the instance volume.
-    * @param name The name of the instance.
-    * @return The instance created.
-    * 
-    * @see InstanceApi#create(String, int, String)
-    */
-   @Named("instance:create")
-   @POST
-   @Path("/instances")
-   @SelectJson("instance")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @MapBinder(BindCreateInstanceToJson.class)
-   Instance create(@PayloadParam("flavorRef") int flavor, @PayloadParam("size") int volumeSize, @PayloadParam("name") String name);
-
-   /**
-    * Create a database instance by flavor type and volume size.
-    *
-    * @param flavor The flavor URL or flavor id as string.
-    * @param volumeSize The size in GB of the instance volume.
-    * @param name The name of the instance.
-    * @return The instance created.
-    */
-   @Named("instance:create")
-   @POST
-   @Path("/instances")
-   @SelectJson("instance")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @MapBinder(BindCreateInstanceToJson.class)
-   Instance create(@PayloadParam("flavorRef") String flavor, @PayloadParam("size") int volumeSize, @PayloadParam("name") String name);
-   
-   /**
-    * Deletes an Instance by id.
-    *
-    * @param instanceId The instance id.
-    * @return true if successful.
-    */
-   @Named("instances:delete/{id}")
-   @DELETE
-   @Path("/instances/{id}")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("id") String instanceId);
-   
-   /**
-    * Enables root for an instance.
-    *
-    * @param instanceId The instance id.
-    * @return String The password for the root user.
-    */
-   @Named("instances/{id}/root")
-   @POST
-   @Path("/instances/{id}/root")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @ResponseParser(ParsePasswordFromRootedInstance.class)
-   @Fallback(NullOnNotFoundOr404.class)
-   String enableRoot(@PathParam("id") String instanceId);
-   
-   /**
-    * Checks to see if root is enabled for an instance.
-    *
-    * @param instanceId The instance id.
-    * @throws ResourceNotFoundException
-    * @return boolean True if root is enabled.
-    */
-   @Named("instances/{id}/root")
-   @GET
-   @Path("/instances/{id}/root")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @SelectJson("rootEnabled")
-   boolean isRooted(@PathParam("id") String instanceId);
-   
-   /**
-    * Returns a summary list of Instances.
-    *
-    * @return The list of Instances.
-    */
-   @Named("instance:list")
-   @GET
-   @Path("/instances")
-   @SelectJson("instances")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   FluentIterable<Instance> list();
-      
-   /**
-    * Returns an Instance by id.
-    *
-    * @param instanceId The instance id.
-    * @return Instance or Null on not found.
-    */
-   @Named("instances:get/{id}")
-   @GET
-   @Path("/instances/{id}")
-   @SelectJson("instance")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
-   Instance get(@PathParam("id") String instanceId);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/f65d94a8/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/UserApi.java
----------------------------------------------------------------------
diff --git a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/UserApi.java b/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/UserApi.java
deleted file mode 100644
index c153358..0000000
--- a/openstack-trove/src/main/java/org/jclouds/openstack/trove/v1/features/UserApi.java
+++ /dev/null
@@ -1,237 +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 java.util.List;
-import java.util.Set;
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
-import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.trove.v1.binders.BindCreateUserToJson;
-import org.jclouds.openstack.trove.v1.binders.BindGrantUserToJson;
-import org.jclouds.openstack.trove.v1.domain.User;
-import org.jclouds.openstack.trove.v1.filters.EncodeDotsForUserGet;
-import org.jclouds.openstack.trove.v1.functions.ParseDatabaseListForUser;
-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.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.SkipEncoding;
-import com.google.common.collect.FluentIterable;
-
-/**
- * This API is for creating, listing, and deleting a User. Also allows listing, granting, and revoking access permissions for users.
- * @see org.jclouds.openstack.trove.v1.domain.User
- * User
- * 
- * @see <a href="http://sourceforge.net/apps/trac/reddwarf/">api doc</a>
- * @see <a
- *      href="https://github.com/reddwarf-nextgen/reddwarf">api
- *      src</a>
- *      
- * @author Zack Shoylev
- */
-@SkipEncoding({'/', '='})
-@RequestFilters(AuthenticateRequest.class)
-public interface UserApi {
-    
-   /**
-    * Create database users.
-    * A user is granted all privileges on the specified databases.
-    * The following user name is reserved and cannot be used for creating users: root.
-    * This method can be used to create users with access restrictions by host
-    *
-    * @param users List of users to be created.
-    * @return true if successful.
-    * @see <a href="http://docs.rackspace.com/cdb/api/v1.0/cdb-devguide/content/user_access_restrict_by_host-dle387.html">User Access Restriction by Host</a>
-    */
-   @Named("user:create")
-   @POST
-   @Path("/users")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindCreateUserToJson.class)
-   boolean create(@PayloadParam("users") Set<User> users);
-   
-   /**
-    * Create a database user by name, password, and database name. Simpler overload for {@link #create(String, Set)}.
-    *
-    * @param userName Name of the user for the database.
-    * @param password User password for database access.
-    * @param databaseName Name of the database that the user can access.
-    * @return true if successful.
-    */
-   @Named("user:create")
-   @POST
-   @Path("/users")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindCreateUserToJson.class)
-   boolean create(@PayloadParam("name") String userName, @PayloadParam("password") String password, @PayloadParam("databaseName") String databaseName);
-   
-   /**
-    * Create a database user by name, password, and database name. Simpler overload for {@link #create(String, Set)}.
-    *
-    * @param userName Name of the user for the database.
-    * @param password User password for database access.
-    * @param host Specifies the host from which a user is allowed to connect to the database. Possible values are a string containing an IPv4 address or "%" to allow connecting from any host. Refer to Section 3.11.1, “User Access Restriction by Host” for details. If host is not specified, it defaults to "%".
-    * @param databaseName Name of the database that the user can access.
-    * @return true if successful.
-    */
-   @Named("user:create")
-   @POST
-   @Path("/users")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindCreateUserToJson.class)
-   boolean create(@PayloadParam("name") String userName, @PayloadParam("password") String password, @PayloadParam("host") String host, @PayloadParam("databaseName") String databaseName);
-
-   /**
-    * This operation grants access for the specified user to a database for the specified instance.
-    * The user is granted all privileges.
-    *
-    * @param userName The name of the specified user.
-    * @param databases List of the databases that the user should be granted access to.
-    * @return true if successful.
-    */
-   @Named("user:grant")
-   @PUT
-   @Path("/users/{name}/databases")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindGrantUserToJson.class)
-   boolean grant(@PathParam("name") String userName, @PayloadParam("databases") List<String> databases);
-   
-   /**
-    * This operation grants access for the specified user to a database for the specified instance. Simpler overload for {@link #create(String, Set)}.
-    * The user is granted all privileges.
-    *
-    * @param userName Name of the user for the database.
-    * @param databaseName Name of the database that the user can access.
-    * @return true if successful.
-    */
-   @Named("user:grant")
-   @PUT
-   @Path("/users/{name}/databases")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   @MapBinder(BindGrantUserToJson.class)
-   boolean grant(@PathParam("name") String userName, @PayloadParam("databaseName") String databaseName);
-   
-   /**
-    * This operation grants access for the specified user to a database for the specified instance.
-    * The user is granted all privileges.
-    *
-    * @param userName Name of the user for the database.
-    * @param databaseName Name of the database that the user can access.
-    * @return true if successful.
-    */
-   @Named("user:revoke")
-   @DELETE
-   @Path("/users/{name}/databases/{databaseName}")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   boolean revoke(@PathParam("name") String userName, @PathParam("databaseName") String databaseName);
-   
-   /**
-    * This operation deletes the specified user for the specified database instance.
-    *
-    * @param userName The name for the specified user.
-    * @return true if successful.
-    */
-   @Named("users:delete/{name}")
-   @DELETE
-   @Path("/users/{name}")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("name") String userName);
-   
-   /**
-    * This operation lists the users in the specified database instance.
-    * This operation does not return the system users (database administrators that administer the health of the database). Also, this operation returns the "root" user only if "root" user has been enabled.
-    *
-    * @return The list of Users.
-    */
-   @Named("user:list")
-   @GET
-   @Path("/users")
-   @SelectJson("users")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   FluentIterable<User> list();
-   
-   /**
-    * This operation shows a list of all databases to which a user has access.
-    *
-    * @param instanceId The instance ID for the specified database instance.
-    * @param userName The name for the specified user.
-    * @return The list of Users.
-    */
-   @Named("user:getDatabaseList/{name}")
-   @GET
-   @Path("/users/{name}/databases")
-   @ResponseParser(ParseDatabaseListForUser.class)
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   FluentIterable<String> getDatabaseList(@PathParam("name") String userName);
-      
-   /**
-    * Returns a User by identifier.
-    *
-    * @param name The name or identifier for the specified user.
-    * @return User or Null on not found.
-    */
-   @Named("user:get/{name}")
-   @GET
-   @Path("/users/{name}")
-   @RequestFilters(EncodeDotsForUserGet.class)
-   @SelectJson("user")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
-   User get(@PathParam("name") String name);
-   
-   /**
-    * Returns a User by name and allowed host.
-    *
-    * @param name The name for the specified user.
-    * @param host The associated hostname.
-    * @return User or Null on not found.
-    */
-   @Named("user:get/{name}@{hostname}")
-   @GET
-   @Path("/users/{name}@{hostname}")
-   @RequestFilters(EncodeDotsForUserGet.class)
-   @SelectJson("user")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
-   User get(@PathParam("name") String name, @PathParam("hostname") String hostname);
-}