You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2016/05/09 09:33:30 UTC

[1/2] jclouds-labs git commit: Remove project etcd. Project is now being hosted at https://github.com/cdancy/etcd-rest.

Repository: jclouds-labs
Updated Branches:
  refs/heads/master 247e9fd97 -> 1f2153799


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiMockTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiMockTest.java b/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiMockTest.java
deleted file mode 100644
index ad5d8a1..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiMockTest.java
+++ /dev/null
@@ -1,105 +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.etcd.features;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertFalse;
-
-import org.jclouds.etcd.EtcdApi;
-import org.jclouds.etcd.domain.miscellaneous.Version;
-import org.jclouds.etcd.internal.BaseEtcdMockTest;
-import org.testng.annotations.Test;
-
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-
-/**
- * Mock tests for the {@link org.jclouds.etcd.features.MiscellaneousApi} class.
- */
-@Test(groups = "unit", testName = "MiscellaneousApiMockTest")
-public class MiscellaneousApiMockTest extends BaseEtcdMockTest {
-
-   private final String versionRegex = "^\\d+\\.\\d+\\.\\d+$";
-
-   public void testGetVersion() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/version.json")).setResponseCode(200));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      MiscellaneousApi api = etcdJavaApi.miscellaneousApi();
-      try {
-         Version version = api.version();
-         assertNotNull(version);
-         assertTrue(version.etcdServer().matches(versionRegex));
-         assertTrue(version.etcdCluster().matches(versionRegex));
-         assertSent(server, "GET", "/version");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetHealth() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/health.json")).setResponseCode(200));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      MiscellaneousApi api = etcdJavaApi.miscellaneousApi();
-      try {
-         boolean health = api.health();
-         assertTrue(health);
-         assertSent(server, "GET", "/health");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetBadHealth() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/health-bad.json")).setResponseCode(503));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      MiscellaneousApi api = etcdJavaApi.miscellaneousApi();
-      try {
-         boolean health = api.health();
-         assertFalse(health);
-         assertSent(server, "GET", "/health");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetMetrics() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/metrics.txt")).setResponseCode(200));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      MiscellaneousApi api = etcdJavaApi.miscellaneousApi();
-      try {
-         String metrics = api.metrics();
-         assertNotNull(metrics);
-         assertSentAcceptText(server, "GET", "/metrics");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiLiveTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiLiveTest.java b/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiLiveTest.java
deleted file mode 100644
index 97cd1ac..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiLiveTest.java
+++ /dev/null
@@ -1,77 +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.etcd.features;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.fail;
-
-import java.util.Properties;
-
-import org.jclouds.Constants;
-import org.jclouds.etcd.BaseEtcdApiLiveTest;
-import org.jclouds.etcd.EtcdApi;
-import org.jclouds.etcd.domain.members.Member;
-import org.jclouds.etcd.domain.statistics.Self;
-import org.testng.annotations.Test;
-
-import com.google.inject.Module;
-
-@Test(groups = "live", testName = "StatisticsApiLiveTest")
-public class StatisticsApiLiveTest extends BaseEtcdApiLiveTest {
-
-   private Self self;
-
-   @Test
-   public void testGetSelf() {
-      self = api().self();
-      assertNotNull(self);
-   }
-
-   @Test(dependsOnMethods = "testGetSelf")
-   public void testGetLeader() {
-
-      /*
-       * It's possible the default end-point is not the cluster leader. If true
-       * we will iterate through all members to find the leader and execute the
-       * 'leader' endpoint against its client URL.
-       */
-      if (self.state().equals("StateLeader")) {
-         assertNotNull(api().leader());
-      } else {
-         for (Member possibleLeader : api.membersApi().list()) {
-            if (possibleLeader.id().equals(self.leaderInfo().leader())) {
-               Properties properties = new Properties();
-               properties.setProperty(Constants.PROPERTY_ENDPOINT, possibleLeader.clientURLs().get(0));
-               Iterable<Module> modules = setupModules();
-               EtcdApi etcdApi = super.create(properties, modules);
-               assertNotNull(etcdApi.statisticsApi().leader());
-               return;
-            }
-         }
-         fail("Could not find a leader within cluster");
-      }
-   }
-
-   @Test
-   public void testGetStore() {
-      assertNotNull(api().store());
-   }
-
-   private StatisticsApi api() {
-      return api.statisticsApi();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiMockTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiMockTest.java b/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiMockTest.java
deleted file mode 100644
index fc5bdc7..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/StatisticsApiMockTest.java
+++ /dev/null
@@ -1,91 +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.etcd.features;
-
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertNotNull;
-
-import org.jclouds.etcd.EtcdApi;
-import org.jclouds.etcd.EtcdApiMetadata;
-import org.jclouds.etcd.domain.statistics.Leader;
-import org.jclouds.etcd.domain.statistics.Self;
-import org.jclouds.etcd.domain.statistics.Store;
-import org.jclouds.etcd.internal.BaseEtcdMockTest;
-
-import org.testng.annotations.Test;
-
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-
-/**
- * Mock tests for the {@link org.jclouds.etcd.features.StatisticsApi} class.
- */
-@Test(groups = "unit", testName = "StatisticsApiMockTest")
-public class StatisticsApiMockTest extends BaseEtcdMockTest {
-
-   public void testGetLeader() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/leader.json")).setResponseCode(200));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      StatisticsApi api = etcdJavaApi.statisticsApi();
-      try {
-         Leader leader = api.leader();
-         assertNotNull(leader);
-         assertTrue(leader.followers().size() == 2);
-         assertTrue(leader.leader().equals("924e2e83e93f2560"));
-         assertSent(server, "GET", "/" + EtcdApiMetadata.API_VERSION + "/stats/leader");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetSelf() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/self.json")).setResponseCode(200));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      StatisticsApi api = etcdJavaApi.statisticsApi();
-      try {
-         Self self = api.self();
-         assertNotNull(self);
-         assertTrue(self.leaderInfo().leader().equals("924e2e83e93f2560"));
-         assertSent(server, "GET", "/" + EtcdApiMetadata.API_VERSION + "/stats/self");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetStore() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/store.json")).setResponseCode(200));
-      EtcdApi etcdJavaApi = api(server.getUrl("/"));
-      StatisticsApi api = etcdJavaApi.statisticsApi();
-      try {
-         Store store = api.store();
-         assertNotNull(store);
-         assertTrue(store.getsSuccess() == 75);
-         assertSent(server, "GET", "/" + EtcdApiMetadata.API_VERSION + "/stats/store");
-      } finally {
-         etcdJavaApi.close();
-         server.shutdown();
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/internal/BaseEtcdMockTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/internal/BaseEtcdMockTest.java b/etcd/src/test/java/org/jclouds/etcd/internal/BaseEtcdMockTest.java
deleted file mode 100644
index 9358d09..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/internal/BaseEtcdMockTest.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.etcd.internal;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.jclouds.util.Strings2.toStringAndClose;
-import static org.testng.Assert.assertEquals;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Properties;
-
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Constants;
-import org.jclouds.ContextBuilder;
-import org.jclouds.etcd.EtcdApi;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Throwables;
-import com.google.gson.JsonParser;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-import com.squareup.okhttp.mockwebserver.RecordedRequest;
-
-/**
- * Base class for all Etcd mock tests.
- */
-public class BaseEtcdMockTest {
-
-   protected String provider;
-   private final JsonParser parser = new JsonParser();
-
-   public BaseEtcdMockTest() {
-      provider = "etcd";
-   }
-
-   public EtcdApi api(URL url) {
-      return ContextBuilder.newBuilder(provider).endpoint(url.toString()).overrides(setupProperties())
-            .buildApi(EtcdApi.class);
-   }
-
-   protected Properties setupProperties() {
-      Properties properties = new Properties();
-      properties.setProperty(Constants.PROPERTY_MAX_RETRIES, "0");
-      return properties;
-   }
-
-   public static MockWebServer mockEtcdJavaWebServer() throws IOException {
-      MockWebServer server = new MockWebServer();
-      server.play();
-      return server;
-   }
-
-   public String payloadFromResource(String resource) {
-      try {
-         return new String(toStringAndClose(getClass().getResourceAsStream(resource)).getBytes(Charsets.UTF_8));
-      } catch (IOException e) {
-         throw Throwables.propagate(e);
-      }
-   }
-
-   protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException {
-      RecordedRequest request = server.takeRequest();
-      assertThat(request.getMethod()).isEqualTo(method);
-      assertThat(request.getPath()).isEqualTo(path);
-      assertThat(request.getHeader(HttpHeaders.ACCEPT)).isEqualTo(MediaType.APPLICATION_JSON);
-      return request;
-   }
-
-   protected RecordedRequest assertSentWithFormData(MockWebServer server, String method, String path, String body)
-         throws InterruptedException {
-      RecordedRequest request = server.takeRequest();
-      assertThat(request.getMethod()).isEqualTo(method);
-      assertThat(request.getPath()).isEqualTo(path);
-      assertThat(request.getUtf8Body()).isEqualTo(body);
-      assertThat(request.getHeader(HttpHeaders.ACCEPT)).isEqualTo(MediaType.APPLICATION_JSON);
-      assertThat(request.getHeader(HttpHeaders.CONTENT_TYPE)).isEqualTo(MediaType.APPLICATION_FORM_URLENCODED);
-      return request;
-   }
-
-   protected RecordedRequest assertSentAcceptText(MockWebServer server, String method, String path)
-         throws InterruptedException {
-      RecordedRequest request = server.takeRequest();
-      assertThat(request.getMethod()).isEqualTo(method);
-      assertThat(request.getPath()).isEqualTo(path);
-      assertThat(request.getHeader(HttpHeaders.ACCEPT)).isEqualTo(MediaType.TEXT_PLAIN);
-      return request;
-   }
-
-   protected RecordedRequest assertSent(MockWebServer server, String method, String path, String json)
-         throws InterruptedException {
-      RecordedRequest request = assertSent(server, method, path);
-      assertEquals(request.getHeader("Content-Type"), APPLICATION_JSON);
-      assertEquals(parser.parse(request.getUtf8Body()), parser.parse(json));
-      return request;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/health-bad.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/health-bad.json b/etcd/src/test/resources/health-bad.json
deleted file mode 100644
index 6b68ef1..0000000
--- a/etcd/src/test/resources/health-bad.json
+++ /dev/null
@@ -1 +0,0 @@
-{"health": "false"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/health.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/health.json b/etcd/src/test/resources/health.json
deleted file mode 100644
index fdc9176..0000000
--- a/etcd/src/test/resources/health.json
+++ /dev/null
@@ -1 +0,0 @@
-{"health": "true"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/keys-create-ttl.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/keys-create-ttl.json b/etcd/src/test/resources/keys-create-ttl.json
deleted file mode 100644
index aa1b94a..0000000
--- a/etcd/src/test/resources/keys-create-ttl.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{  
-   "action":"set",
-   "node":{  
-      "createdIndex":5,
-      "expiration":"2016-02-16T13:33:21.970469165Z",
-      "key":"/hello",
-      "modifiedIndex":5,
-      "ttl":5,
-      "value":"world"
-   }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/keys-create.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/keys-create.json b/etcd/src/test/resources/keys-create.json
deleted file mode 100644
index 79cb39e..0000000
--- a/etcd/src/test/resources/keys-create.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{  
-   "action":"set",
-   "node":{  
-      "key":"/hello",
-      "value":"world",
-      "modifiedIndex":40,
-      "createdIndex":40
-   }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/keys-delete.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/keys-delete.json b/etcd/src/test/resources/keys-delete.json
deleted file mode 100644
index 9e8d234..0000000
--- a/etcd/src/test/resources/keys-delete.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{  
-   "action":"delete",
-   "node":{  
-      "key":"/hello",
-      "modifiedIndex":41,
-      "createdIndex":39
-   },
-   "prevNode":{  
-      "key":"/hello",
-      "value":"world",
-      "modifiedIndex":39,
-      "createdIndex":39
-   }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/keys-get-delete-nonexistent.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/keys-get-delete-nonexistent.json b/etcd/src/test/resources/keys-get-delete-nonexistent.json
deleted file mode 100644
index 3a69156..0000000
--- a/etcd/src/test/resources/keys-get-delete-nonexistent.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{  
-   "errorCode":100,
-   "message":"Key not found",
-   "cause":"/foo",
-   "index":16
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/keys-get.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/keys-get.json b/etcd/src/test/resources/keys-get.json
deleted file mode 100644
index 19213c4..0000000
--- a/etcd/src/test/resources/keys-get.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{  
-   "action":"get",
-   "node":{  
-      "key":"/hello",
-      "value":"world",
-      "modifiedIndex":39,
-      "createdIndex":39
-   }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/leader.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/leader.json b/etcd/src/test/resources/leader.json
deleted file mode 100644
index 496f904..0000000
--- a/etcd/src/test/resources/leader.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "followers": {
-        "6e3bd23ae5f1eae0": {
-            "counts": {
-                "fail": 0,
-                "success": 745
-            },
-            "latency": {
-                "average": 0.017039507382550306,
-                "current": 0.000138,
-                "maximum": 1.007649,
-                "minimum": 0,
-                "standardDeviation": 0.05289178277920594
-            }
-        },
-        "a8266ecf031671f3": {
-            "counts": {
-                "fail": 0,
-                "success": 735
-            },
-            "latency": {
-                "average": 0.012124141496598642,
-                "current": 0.000559,
-                "maximum": 0.791547,
-                "minimum": 0,
-                "standardDeviation": 0.04187900156583733
-            }
-        }
-    },
-    "leader": "924e2e83e93f2560"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/members-add-existent.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/members-add-existent.json b/etcd/src/test/resources/members-add-existent.json
deleted file mode 100644
index 363618c..0000000
--- a/etcd/src/test/resources/members-add-existent.json
+++ /dev/null
@@ -1 +0,0 @@
-{"message":"etcdserver: ID exists"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/members-add-illegal-format.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/members-add-illegal-format.json b/etcd/src/test/resources/members-add-illegal-format.json
deleted file mode 100644
index c344f28..0000000
--- a/etcd/src/test/resources/members-add-illegal-format.json
+++ /dev/null
@@ -1 +0,0 @@
-{"message":"URL address does not have the form \"host:port\": http://www.google.com"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/members-add-malformed-url.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/members-add-malformed-url.json b/etcd/src/test/resources/members-add-malformed-url.json
deleted file mode 100644
index ffa9a2e..0000000
--- a/etcd/src/test/resources/members-add-malformed-url.json
+++ /dev/null
@@ -1 +0,0 @@
-{"message":"URL scheme must be http or https: 1234567890"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/members-added.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/members-added.json b/etcd/src/test/resources/members-added.json
deleted file mode 100644
index 904d739..0000000
--- a/etcd/src/test/resources/members-added.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "id": "3777296169",
-    "peerURLs": [
-        "http://10.0.0.10:2380"
-    ],
-    "clientURLs": [
-        "http://10.0.0.10:2381"
-    ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/members-delete-nonexistent.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/members-delete-nonexistent.json b/etcd/src/test/resources/members-delete-nonexistent.json
deleted file mode 100644
index 52302e6..0000000
--- a/etcd/src/test/resources/members-delete-nonexistent.json
+++ /dev/null
@@ -1 +0,0 @@
-{"message":"No such member: 1234567890"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/members.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/members.json b/etcd/src/test/resources/members.json
deleted file mode 100644
index cdfcbb5..0000000
--- a/etcd/src/test/resources/members.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "members": [
-        {
-            "id": "272e204152",
-            "name": "infra1",
-            "peerURLs": [
-                "http://10.0.0.10:2380"
-            ],
-            "clientURLs": [
-                "http://10.0.0.10:2379"
-            ]
-        },
-        {
-            "id": "2225373f43",
-            "name": "infra2",
-            "peerURLs": [
-                "http://10.0.0.11:2380"
-            ],
-            "clientURLs": [
-                "http://10.0.0.11:2379"
-            ]
-        },
-    ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/metrics.txt
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/metrics.txt b/etcd/src/test/resources/metrics.txt
deleted file mode 100644
index e59f2d6..0000000
--- a/etcd/src/test/resources/metrics.txt
+++ /dev/null
@@ -1,160 +0,0 @@
-# HELP etcd_rafthttp_message_sent_latency_microseconds message sent latency distributions.
-# TYPE etcd_rafthttp_message_sent_latency_microseconds summary
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.5"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.9"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.99"} NaN
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="message"} 84
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="message"} 1
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="msgappv2",quantile="0.5"} 50
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="msgappv2",quantile="0.9"} 78
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="msgappv2",quantile="0.99"} 98
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="msgappv2"} 2.045591e+06
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgApp",remoteID="96d5f4741cf7499e",sendingType="msgappv2"} 34607
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.5"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.9"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.99"} NaN
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="message"} 45
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="message"} 1
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="msgappv2",quantile="0.5"} 35
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="msgappv2",quantile="0.9"} 51
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="msgappv2",quantile="0.99"} 83
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="msgappv2"} 1.426621e+06
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgApp",remoteID="f992d9b00b6adf2f",sendingType="msgappv2"} 34664
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgHeartbeat",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.5"} 60
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgHeartbeat",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.9"} 91
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgHeartbeat",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.99"} 101
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgHeartbeat",remoteID="96d5f4741cf7499e",sendingType="message"} 548492
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgHeartbeat",remoteID="96d5f4741cf7499e",sendingType="message"} 7076
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgHeartbeat",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.5"} 39
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgHeartbeat",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.9"} 58
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgHeartbeat",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.99"} 93
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgHeartbeat",remoteID="f992d9b00b6adf2f",sendingType="message"} 335711
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgHeartbeat",remoteID="f992d9b00b6adf2f",sendingType="message"} 7076
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="message",quantile="0.5"} 53
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="message",quantile="0.9"} 65
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="message",quantile="0.99"} 71
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="message"} 455136
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="message"} 8578
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="msgappv2",quantile="0.5"} 54
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="msgappv2",quantile="0.9"} 69
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="msgappv2",quantile="0.99"} 93
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="msgappv2"} 482458
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgLinkHeartbeat",remoteID="0",sendingType="msgappv2"} 8578
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVote",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.5"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVote",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.9"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVote",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.99"} NaN
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgVote",remoteID="96d5f4741cf7499e",sendingType="message"} 162
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgVote",remoteID="96d5f4741cf7499e",sendingType="message"} 1
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVote",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.5"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVote",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.9"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVote",remoteID="f992d9b00b6adf2f",sendingType="message",quantile="0.99"} NaN
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgVote",remoteID="f992d9b00b6adf2f",sendingType="message"} 57
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgVote",remoteID="f992d9b00b6adf2f",sendingType="message"} 1
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVoteResp",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.5"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVoteResp",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.9"} NaN
-etcd_rafthttp_message_sent_latency_microseconds{msgType="MsgVoteResp",remoteID="96d5f4741cf7499e",sendingType="message",quantile="0.99"} NaN
-etcd_rafthttp_message_sent_latency_microseconds_sum{msgType="MsgVoteResp",remoteID="96d5f4741cf7499e",sendingType="message"} 54
-etcd_rafthttp_message_sent_latency_microseconds_count{msgType="MsgVoteResp",remoteID="96d5f4741cf7499e",sendingType="message"} 1
-# HELP etcd_server_file_descriptors_used_total The total number of file descriptors used.
-# TYPE etcd_server_file_descriptors_used_total gauge
-etcd_server_file_descriptors_used_total 18
-# HELP etcd_server_pending_proposal_total The total number of pending proposals.
-# TYPE etcd_server_pending_proposal_total gauge
-etcd_server_pending_proposal_total 0
-# HELP etcd_server_proposal_durations_milliseconds The latency distributions of committing proposal.
-# TYPE etcd_server_proposal_durations_milliseconds summary
-etcd_server_proposal_durations_milliseconds{quantile="0.5"} NaN
-etcd_server_proposal_durations_milliseconds{quantile="0.9"} NaN
-etcd_server_proposal_durations_milliseconds{quantile="0.99"} NaN
-etcd_server_proposal_durations_milliseconds_sum 3678
-etcd_server_proposal_durations_milliseconds_count 2
-# HELP etcd_server_proposal_failed_total The total number of failed proposals.
-# TYPE etcd_server_proposal_failed_total counter
-etcd_server_proposal_failed_total 1
-# HELP etcd_snapshot_save_total_durations_microseconds The total latency distributions of save called by snapshot.
-# TYPE etcd_snapshot_save_total_durations_microseconds summary
-etcd_snapshot_save_total_durations_microseconds{quantile="0.5"} NaN
-etcd_snapshot_save_total_durations_microseconds{quantile="0.9"} NaN
-etcd_snapshot_save_total_durations_microseconds{quantile="0.99"} NaN
-etcd_snapshot_save_total_durations_microseconds_sum 258
-etcd_snapshot_save_total_durations_microseconds_count 1
-# HELP etcd_store_expires_total Total number of expired keys.
-# TYPE etcd_store_expires_total counter
-etcd_store_expires_total 0
-# HELP etcd_store_reads_total Total number of reads action by (get/getRecursive), local to this member.
-# TYPE etcd_store_reads_total counter
-etcd_store_reads_total{action="getRecursive"} 5
-# HELP etcd_store_watch_requests_total Total number of incoming watch requests (new or reestablished).
-# TYPE etcd_store_watch_requests_total counter
-etcd_store_watch_requests_total 0
-# HELP etcd_store_watchers Count of currently active watchers.
-# TYPE etcd_store_watchers gauge
-etcd_store_watchers 0
-# HELP etcd_store_writes_total Total number of writes (e.g. set/compareAndDelete) seen by this member.
-# TYPE etcd_store_writes_total counter
-etcd_store_writes_total{action="create"} 3
-etcd_store_writes_total{action="set"} 4
-# HELP etcd_wal_fsync_durations_microseconds The latency distributions of fsync called by wal.
-# TYPE etcd_wal_fsync_durations_microseconds summary
-etcd_wal_fsync_durations_microseconds{quantile="0.5"} 41299
-etcd_wal_fsync_durations_microseconds{quantile="0.9"} 120044
-etcd_wal_fsync_durations_microseconds{quantile="0.99"} 563066
-etcd_wal_fsync_durations_microseconds_sum 1.862452899e+09
-etcd_wal_fsync_durations_microseconds_count 27906
-# HELP etcd_wal_last_index_saved The index of the last entry saved by wal.
-# TYPE etcd_wal_last_index_saved gauge
-etcd_wal_last_index_saved 13970
-# HELP go_gc_duration_seconds A summary of the GC invocation durations.
-# TYPE go_gc_duration_seconds summary
-go_gc_duration_seconds{quantile="0"} 0.000199168
-go_gc_duration_seconds{quantile="0.25"} 0.011117938
-go_gc_duration_seconds{quantile="0.5"} 0.013050367
-go_gc_duration_seconds{quantile="0.75"} 0.015054046000000001
-go_gc_duration_seconds{quantile="1"} 0.020298544
-go_gc_duration_seconds_sum 0.8452645520000001
-go_gc_duration_seconds_count 71
-# HELP go_goroutines Number of goroutines that currently exist.
-# TYPE go_goroutines gauge
-go_goroutines 69
-# HELP http_request_duration_microseconds The HTTP request latencies in microseconds.
-# TYPE http_request_duration_microseconds summary
-http_request_duration_microseconds{handler="prometheus",quantile="0.5"} NaN
-http_request_duration_microseconds{handler="prometheus",quantile="0.9"} NaN
-http_request_duration_microseconds{handler="prometheus",quantile="0.99"} NaN
-http_request_duration_microseconds_sum{handler="prometheus"} 11850.234
-http_request_duration_microseconds_count{handler="prometheus"} 2
-# HELP http_request_size_bytes The HTTP request sizes in bytes.
-# TYPE http_request_size_bytes summary
-http_request_size_bytes{handler="prometheus",quantile="0.5"} NaN
-http_request_size_bytes{handler="prometheus",quantile="0.9"} NaN
-http_request_size_bytes{handler="prometheus",quantile="0.99"} NaN
-http_request_size_bytes_sum{handler="prometheus"} 680
-http_request_size_bytes_count{handler="prometheus"} 2
-# HELP http_requests_total Total number of HTTP requests made.
-# TYPE http_requests_total counter
-http_requests_total{code="200",handler="prometheus",method="get"} 2
-# HELP http_response_size_bytes The HTTP response sizes in bytes.
-# TYPE http_response_size_bytes summary
-http_response_size_bytes{handler="prometheus",quantile="0.5"} NaN
-http_response_size_bytes{handler="prometheus",quantile="0.9"} NaN
-http_response_size_bytes{handler="prometheus",quantile="0.99"} NaN
-http_response_size_bytes_sum{handler="prometheus"} 3494
-http_response_size_bytes_count{handler="prometheus"} 2
-# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
-# TYPE process_cpu_seconds_total counter
-process_cpu_seconds_total 48.72
-# HELP process_max_fds Maximum number of open file descriptors.
-# TYPE process_max_fds gauge
-process_max_fds 1024
-# HELP process_open_fds Number of open file descriptors.
-# TYPE process_open_fds gauge
-process_open_fds 19
-# HELP process_resident_memory_bytes Resident memory size in bytes.
-# TYPE process_resident_memory_bytes gauge
-process_resident_memory_bytes 2.8459008e+07
-# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
-# TYPE process_start_time_seconds gauge
-process_start_time_seconds 1.43810894456e+09
-# HELP process_virtual_memory_bytes Virtual memory size in bytes.
-# TYPE process_virtual_memory_bytes gauge
-process_virtual_memory_bytes 3.749888e+07
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/self.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/self.json b/etcd/src/test/resources/self.json
deleted file mode 100644
index 72b15d5..0000000
--- a/etcd/src/test/resources/self.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "id": "924e2e83e93f2560",
-    "leaderInfo": {
-        "leader": "924e2e83e93f2560",
-        "startTime": "2015-02-09T11:38:30.177534688-08:00",
-        "uptime": "9m33.891343412s"
-    },
-    "name": "infra3",
-    "recvAppendRequestCnt": 0,
-    "sendAppendRequestCnt": 6535,
-    "sendBandwidthRate": 824.1758351191694,
-    "sendPkgRate": 11.111234716807138,
-    "startTime": "2015-02-09T11:38:28.972034204-08:00",
-    "state": "StateLeader"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/store.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/store.json b/etcd/src/test/resources/store.json
deleted file mode 100644
index 03e6e3d..0000000
--- a/etcd/src/test/resources/store.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "compareAndSwapFail": 0,
-    "compareAndSwapSuccess": 0,
-    "createFail": 0,
-    "createSuccess": 2,
-    "deleteFail": 0,
-    "deleteSuccess": 0,
-    "expireCount": 0,
-    "getsFail": 4,
-    "getsSuccess": 75,
-    "setsFail": 2,
-    "setsSuccess": 4,
-    "updateFail": 0,
-    "updateSuccess": 0,
-    "watchers": 0
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/resources/version.json
----------------------------------------------------------------------
diff --git a/etcd/src/test/resources/version.json b/etcd/src/test/resources/version.json
deleted file mode 100644
index f5c5e12..0000000
--- a/etcd/src/test/resources/version.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-	"etcdserver":"2.1.1",
-	"etcdcluster":"2.1.0"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 03cd02f..cb03655 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,6 @@
   <modules>
     <module>azurecompute-arm</module>
     <module>azurecompute</module>
-    <module>etcd</module>
     <module>docker</module>
     <module>cdmi</module>
     <module>cloudsigma2</module>


[2/2] jclouds-labs git commit: Remove project etcd. Project is now being hosted at https://github.com/cdancy/etcd-rest.

Posted by na...@apache.org.
Remove project etcd. Project is now being hosted at https://github.com/cdancy/etcd-rest.


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

Branch: refs/heads/master
Commit: 1f2153799190d06b64295f65607e2b0bb3600903
Parents: 247e9fd
Author: Christopher Dancy <da...@pega.com>
Authored: Fri May 6 11:21:27 2016 -0400
Committer: Ignasi Barrera <na...@apache.org>
Committed: Mon May 9 11:24:00 2016 +0200

----------------------------------------------------------------------
 etcd/pom.xml                                    | 123 --------------
 .../src/main/java/org/jclouds/etcd/EtcdApi.java |  41 -----
 .../java/org/jclouds/etcd/EtcdApiMetadata.java  |  82 ---------
 .../jclouds/etcd/config/EtcdHttpApiModule.java  |  43 -----
 .../java/org/jclouds/etcd/domain/keys/Key.java  |  42 -----
 .../java/org/jclouds/etcd/domain/keys/Node.java |  60 -------
 .../etcd/domain/members/CreateMember.java       |  47 ------
 .../org/jclouds/etcd/domain/members/Member.java |  49 ------
 .../etcd/domain/miscellaneous/Version.java      |  38 -----
 .../jclouds/etcd/domain/statistics/Counts.java  |  38 -----
 .../etcd/domain/statistics/Follower.java        |  38 -----
 .../jclouds/etcd/domain/statistics/Latency.java |  45 -----
 .../jclouds/etcd/domain/statistics/Leader.java  |  41 -----
 .../etcd/domain/statistics/LeaderInfo.java      |  40 -----
 .../jclouds/etcd/domain/statistics/Self.java    |  55 ------
 .../jclouds/etcd/domain/statistics/Store.java   |  68 --------
 .../jclouds/etcd/fallbacks/EtcdFallbacks.java   |  48 ------
 .../java/org/jclouds/etcd/features/KeysApi.java |  59 -------
 .../org/jclouds/etcd/features/MembersApi.java   |  74 --------
 .../jclouds/etcd/features/MiscellaneousApi.java |  52 ------
 .../jclouds/etcd/features/StatisticsApi.java    |  58 -------
 .../jclouds/etcd/handlers/EtcdErrorHandler.java |  83 ---------
 .../org/jclouds/etcd/BaseEtcdApiLiveTest.java   |  51 ------
 .../org/jclouds/etcd/EtcdApiMetadataTest.java   |  50 ------
 .../jclouds/etcd/features/KeysApiLiveTest.java  | 100 -----------
 .../jclouds/etcd/features/KeysApiMockTest.java  | 144 ----------------
 .../etcd/features/MembersApiLiveTest.java       | 103 ------------
 .../etcd/features/MembersApiMockTest.java       | 168 -------------------
 .../etcd/features/MiscellaneousApiLiveTest.java |  53 ------
 .../etcd/features/MiscellaneousApiMockTest.java | 105 ------------
 .../etcd/features/StatisticsApiLiveTest.java    |  77 ---------
 .../etcd/features/StatisticsApiMockTest.java    |  91 ----------
 .../jclouds/etcd/internal/BaseEtcdMockTest.java | 114 -------------
 etcd/src/test/resources/health-bad.json         |   1 -
 etcd/src/test/resources/health.json             |   1 -
 etcd/src/test/resources/keys-create-ttl.json    |  11 --
 etcd/src/test/resources/keys-create.json        |   9 -
 etcd/src/test/resources/keys-delete.json        |  14 --
 .../resources/keys-get-delete-nonexistent.json  |   6 -
 etcd/src/test/resources/keys-get.json           |   9 -
 etcd/src/test/resources/leader.json             |  31 ----
 .../test/resources/members-add-existent.json    |   1 -
 .../resources/members-add-illegal-format.json   |   1 -
 .../resources/members-add-malformed-url.json    |   1 -
 etcd/src/test/resources/members-added.json      |   9 -
 .../resources/members-delete-nonexistent.json   |   1 -
 etcd/src/test/resources/members.json            |  24 ---
 etcd/src/test/resources/metrics.txt             | 160 ------------------
 etcd/src/test/resources/self.json               |  15 --
 etcd/src/test/resources/store.json              |  16 --
 etcd/src/test/resources/version.json            |   4 -
 pom.xml                                         |   1 -
 52 files changed, 2595 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/pom.xml
----------------------------------------------------------------------
diff --git a/etcd/pom.xml b/etcd/pom.xml
deleted file mode 100644
index f83e72c..0000000
--- a/etcd/pom.xml
+++ /dev/null
@@ -1,123 +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.labs</groupId>
-        <artifactId>jclouds-labs</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-    </parent>
-  
-    <!-- TODO: when out of labs, switch to org.jclouds.api -->
-    <artifactId>etcd</artifactId>
-    <name>jclouds etcd api</name>
-    <description>jclouds components to access an implementation of etcd</description>
-    <packaging>bundle</packaging>
-
-    <properties>
-        <test.etcd.endpoint>http://127.0.0.1:2379</test.etcd.endpoint>
-        <test.etcd.identity>FIXME</test.etcd.identity>
-        <test.etcd.credential>FIXME</test.etcd.credential>
-        <test.etcd.api-version>v2</test.etcd.api-version>
-        <jclouds.osgi.export>org.jclouds.etcd*;version="${project.version}"</jclouds.osgi.export>
-        <jclouds.osgi.import>
-            org.jclouds*;version="${jclouds.version}",
-            *
-        </jclouds.osgi.import>
-    </properties>
-  
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.jclouds</groupId>
-            <artifactId>jclouds-core</artifactId>
-            <version>${jclouds.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.auto.service</groupId>
-            <artifactId>auto-service</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.google.auto.value</groupId>
-            <artifactId>auto-value</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <!-- Test dependencies -->
-        <dependency>
-            <groupId>org.apache.jclouds</groupId>
-            <artifactId>jclouds-core</artifactId>
-            <version>${jclouds.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.squareup.okhttp</groupId>
-            <artifactId>mockwebserver</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jclouds.driver</groupId>
-            <artifactId>jclouds-slf4j</artifactId>
-            <version>${jclouds.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-core</artifactId>
-            <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>
-                                    <systemPropertyVariables>
-                                        <test.etcd.endpoint>${test.etcd.endpoint}</test.etcd.endpoint>
-                                        <test.etcd.identity>${test.etcd.identity}</test.etcd.identity>
-                                        <test.etcd.credential>${test.etcd.credential}</test.etcd.credential>
-                                        <test.etcd.api-version>${test.etcd.api-version}</test.etcd.api-version>
-                                    </systemPropertyVariables>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/EtcdApi.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/EtcdApi.java b/etcd/src/main/java/org/jclouds/etcd/EtcdApi.java
deleted file mode 100644
index fb5f811..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/EtcdApi.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jclouds.etcd;
-
-import java.io.Closeable;
-
-import org.jclouds.etcd.features.KeysApi;
-import org.jclouds.etcd.features.MembersApi;
-import org.jclouds.etcd.features.MiscellaneousApi;
-import org.jclouds.etcd.features.StatisticsApi;
-import org.jclouds.rest.annotations.Delegate;
-
-public interface EtcdApi extends Closeable {
-
-   @Delegate
-   KeysApi keysApi();
-
-   @Delegate
-   MembersApi membersApi();
-
-   @Delegate
-   MiscellaneousApi miscellaneousApi();
-
-   @Delegate
-   StatisticsApi statisticsApi();
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/EtcdApiMetadata.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/EtcdApiMetadata.java b/etcd/src/main/java/org/jclouds/etcd/EtcdApiMetadata.java
deleted file mode 100644
index c44490f..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/EtcdApiMetadata.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.etcd;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.apis.ApiMetadata;
-import org.jclouds.etcd.config.EtcdHttpApiModule;
-import org.jclouds.rest.internal.BaseHttpApiMetadata;
-
-import com.google.auto.service.AutoService;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-@AutoService(ApiMetadata.class)
-public class EtcdApiMetadata extends BaseHttpApiMetadata<EtcdApi> {
-
-   public static final String API_VERSION = "v2";
-   public static final String BUILD_VERSION = "2.2.5";
-
-   @Override
-   public Builder toBuilder() {
-      return new Builder().fromApiMetadata(this);
-   }
-
-   public EtcdApiMetadata() {
-      this(new Builder());
-   }
-
-   protected EtcdApiMetadata(Builder builder) {
-      super(builder);
-   }
-
-   public static Properties defaultProperties() {
-      Properties properties = BaseHttpApiMetadata.defaultProperties();
-      return properties;
-   }
-
-   public static class Builder extends BaseHttpApiMetadata.Builder<EtcdApi, Builder> {
-
-      protected Builder() {
-         super(EtcdApi.class);
-         id("etcd").name("Etcd API").identityName("Optional Username").credentialName("Optional Password")
-               .defaultIdentity("N/A").defaultCredential("N/A")
-               .documentation(URI.create("https://github.com/coreos/etcd/blob/master/Documentation/api.md"))
-               .version(API_VERSION).buildVersion(BUILD_VERSION).defaultEndpoint("http://127.0.0.1:2379")
-               .defaultProperties(EtcdApiMetadata.defaultProperties())
-               .defaultModules(ImmutableSet.<Class<? extends Module>> of(EtcdHttpApiModule.class));
-      }
-
-      @Override
-      public EtcdApiMetadata build() {
-         return new EtcdApiMetadata(this);
-      }
-
-      @Override
-      protected Builder self() {
-         return this;
-      }
-
-      @Override
-      public Builder fromApiMetadata(ApiMetadata in) {
-         return this;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/config/EtcdHttpApiModule.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/config/EtcdHttpApiModule.java b/etcd/src/main/java/org/jclouds/etcd/config/EtcdHttpApiModule.java
deleted file mode 100644
index f635387..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/config/EtcdHttpApiModule.java
+++ /dev/null
@@ -1,43 +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.etcd.config;
-
-import org.jclouds.etcd.EtcdApi;
-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.rest.ConfiguresHttpApi;
-import org.jclouds.rest.config.HttpApiModule;
-
-import org.jclouds.etcd.handlers.EtcdErrorHandler;
-
-@ConfiguresHttpApi
-public class EtcdHttpApiModule extends HttpApiModule<EtcdApi> {
-
-   @Override
-   protected void bindErrorHandlers() {
-      bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(EtcdErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(EtcdErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(EtcdErrorHandler.class);
-   }
-
-   protected void configure() {
-      super.configure();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/keys/Key.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/keys/Key.java b/etcd/src/main/java/org/jclouds/etcd/domain/keys/Key.java
deleted file mode 100644
index 5c9b378..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/keys/Key.java
+++ /dev/null
@@ -1,42 +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.etcd.domain.keys;
-
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Key {
-
-   public abstract String action();
-
-   public abstract Node node();
-
-   @Nullable
-   public abstract Node prevNode();
-
-   Key() {
-   }
-
-   @SerializedNames({ "action", "node", "prevNode" })
-   public static Key create(String action, Node node, Node prevNode) {
-      return new AutoValue_Key(action, node, prevNode);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/keys/Node.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/keys/Node.java b/etcd/src/main/java/org/jclouds/etcd/domain/keys/Node.java
deleted file mode 100644
index 6ccdac9..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/keys/Node.java
+++ /dev/null
@@ -1,60 +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.etcd.domain.keys;
-
-import java.util.List;
-
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableList;
-
-@AutoValue
-public abstract class Node {
-
-   public abstract int createdIndex();
-
-   public abstract boolean dir();
-
-   public abstract List<Node> nodes();
-
-   @Nullable
-   public abstract String expiration();
-
-   @Nullable
-   public abstract String key();
-
-   public abstract int modifiedIndex();
-
-   public abstract int ttl();
-
-   @Nullable
-   public abstract String value();
-
-   Node() {
-   }
-
-   @SerializedNames({ "createdIndex", "dir", "nodes", "expiration", "key", "modifiedIndex", "ttl", "value" })
-   public static Node create(int createdIndex, boolean dir, List<Node> nodes, String expiration, String key,
-         int modifiedIndex, int ttl, String value) {
-      return new AutoValue_Node(createdIndex, dir,
-            nodes != null ? ImmutableList.copyOf(nodes) : ImmutableList.<Node> of(), expiration, key, modifiedIndex,
-            ttl, value);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/members/CreateMember.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/members/CreateMember.java b/etcd/src/main/java/org/jclouds/etcd/domain/members/CreateMember.java
deleted file mode 100644
index 025e8bd..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/members/CreateMember.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.etcd.domain.members;
-
-import java.util.List;
-
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableList;
-
-@AutoValue
-public abstract class CreateMember {
-
-   @Nullable
-   public abstract String name();
-
-   public abstract List<String> peerURLs();
-
-   public abstract List<String> clientURLs();
-
-   CreateMember() {
-   }
-
-   @SerializedNames({ "name", "peerURLs", "clientURLs" })
-   public static CreateMember create(String name, List<String> peerURLs, List<String> clientURLs) {
-      if (clientURLs == null)
-         clientURLs = ImmutableList.of();
-      return new AutoValue_CreateMember(name, ImmutableList.copyOf(peerURLs), ImmutableList.copyOf(clientURLs));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/members/Member.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/members/Member.java b/etcd/src/main/java/org/jclouds/etcd/domain/members/Member.java
deleted file mode 100644
index cfeae6c..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/members/Member.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.etcd.domain.members;
-
-import java.util.List;
-
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableList;
-
-@AutoValue
-public abstract class Member {
-
-   public abstract String id();
-
-   @Nullable
-   public abstract String name();
-
-   public abstract List<String> peerURLs();
-
-   public abstract List<String> clientURLs();
-
-   Member() {
-   }
-
-   @SerializedNames({ "id", "name", "peerURLs", "clientURLs" })
-   private static Member create(String id, String name, List<String> peerURLs, List<String> clientURLs) {
-      if (clientURLs == null)
-         clientURLs = ImmutableList.of();
-      return new AutoValue_Member(id, name, ImmutableList.copyOf(peerURLs), ImmutableList.copyOf(clientURLs));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/miscellaneous/Version.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/miscellaneous/Version.java b/etcd/src/main/java/org/jclouds/etcd/domain/miscellaneous/Version.java
deleted file mode 100644
index 60d05ed..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/miscellaneous/Version.java
+++ /dev/null
@@ -1,38 +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.etcd.domain.miscellaneous;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Version {
-
-   public abstract String etcdServer();
-
-   public abstract String etcdCluster();
-
-   Version() {
-   }
-
-   @SerializedNames({ "etcdserver", "etcdcluster" })
-   public static Version create(String etcdserver, String etcdcluster) {
-      return new AutoValue_Version(etcdserver, etcdcluster);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Counts.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Counts.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Counts.java
deleted file mode 100644
index eabc6a9..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Counts.java
+++ /dev/null
@@ -1,38 +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.etcd.domain.statistics;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Counts {
-
-   public abstract int fail();
-
-   public abstract int success();
-
-   Counts() {
-   }
-
-   @SerializedNames({ "fail", "success" })
-   private static Counts create(int fail, int success) {
-      return new AutoValue_Counts(fail, success);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Follower.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Follower.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Follower.java
deleted file mode 100644
index 05c333e..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Follower.java
+++ /dev/null
@@ -1,38 +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.etcd.domain.statistics;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Follower {
-
-   public abstract Counts counts();
-
-   public abstract Latency latency();
-
-   Follower() {
-   }
-
-   @SerializedNames({ "counts", "latency" })
-   private static Follower create(Counts counts, Latency latency) {
-      return new AutoValue_Follower(counts, latency);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Latency.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Latency.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Latency.java
deleted file mode 100644
index 1002170..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Latency.java
+++ /dev/null
@@ -1,45 +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.etcd.domain.statistics;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Latency {
-
-   public abstract double average();
-
-   public abstract double current();
-
-   public abstract double maximum();
-
-   public abstract double minimum();
-
-   public abstract double standardDeviation();
-
-   Latency() {
-   }
-
-   @SerializedNames({ "average", "current", "maximum", "minimum", "standardDeviation" })
-   private static Latency create(double average, double current, double maximum, double minimum,
-         double standardDeviation) {
-      return new AutoValue_Latency(average, current, maximum, minimum, standardDeviation);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Leader.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Leader.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Leader.java
deleted file mode 100644
index e3af2b0..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Leader.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jclouds.etcd.domain.statistics;
-
-import java.util.Map;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableMap;
-
-@AutoValue
-public abstract class Leader {
-
-   public abstract String leader();
-
-   public abstract Map<String, Follower> followers();
-
-   Leader() {
-   }
-
-   @SerializedNames({ "leader", "followers" })
-   private static Leader create(String leader, Map<String, Follower> followers) {
-      return new AutoValue_Leader(leader, ImmutableMap.copyOf(followers));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/LeaderInfo.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/LeaderInfo.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/LeaderInfo.java
deleted file mode 100644
index ec0aa67..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/LeaderInfo.java
+++ /dev/null
@@ -1,40 +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.etcd.domain.statistics;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class LeaderInfo {
-
-   public abstract String leader();
-
-   public abstract String startTime();
-
-   public abstract String uptime();
-
-   LeaderInfo() {
-   }
-
-   @SerializedNames({ "leader", "startTime", "uptime" })
-   private static LeaderInfo create(String leader, String startTime, String uptime) {
-      return new AutoValue_LeaderInfo(leader, startTime, uptime);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Self.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Self.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Self.java
deleted file mode 100644
index a9d7e22..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Self.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.etcd.domain.statistics;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Self {
-
-   public abstract String id();
-
-   public abstract LeaderInfo leaderInfo();
-
-   public abstract String name();
-
-   public abstract double recvAppendRequestCnt();
-
-   public abstract double sendAppendRequestCnt();
-
-   public abstract double sendBandwidthRate();
-
-   public abstract double sendPkgRate();
-
-   public abstract String startTime();
-
-   public abstract String state();
-
-   Self() {
-   }
-
-   @SerializedNames({ "id", "leaderInfo", "name", "recvAppendRequestCnt", "sendAppendRequestCnt", "sendBandwidthRate",
-         "sendPkgRate", "startTime", "state" })
-   private static Self create(String id, LeaderInfo leaderInfo, String name, double recvAppendRequestCnt,
-         double sendAppendRequestCnt, double sendBandwidthRate, double sendPkgRate, String startTime, String state) {
-      return new AutoValue_Self(id, leaderInfo, name, recvAppendRequestCnt, sendAppendRequestCnt, sendBandwidthRate,
-            sendPkgRate, startTime, state);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Store.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Store.java b/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Store.java
deleted file mode 100644
index 7c468d1..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/domain/statistics/Store.java
+++ /dev/null
@@ -1,68 +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.etcd.domain.statistics;
-
-import org.jclouds.json.SerializedNames;
-
-import com.google.auto.value.AutoValue;
-
-@AutoValue
-public abstract class Store {
-
-   public abstract int compareAndSwapFail();
-
-   public abstract int compareAndSwapSuccess();
-
-   public abstract int createFail();
-
-   public abstract int createSuccess();
-
-   public abstract int deleteFail();
-
-   public abstract int deleteSuccess();
-
-   public abstract int expireCount();
-
-   public abstract int getsFail();
-
-   public abstract int getsSuccess();
-
-   public abstract int setsFail();
-
-   public abstract int setsSuccess();
-
-   public abstract int updateFail();
-
-   public abstract int updateSuccess();
-
-   public abstract int watchers();
-
-   Store() {
-   }
-
-   @SerializedNames({ "compareAndSwapFail", "compareAndSwapSuccess", "createFail", "createSuccess", "deleteFail",
-         "deleteSuccess", "expireCount", "getsFail", "getsSuccess", "setsFail", "setsSuccess", "updateFail",
-         "updateSuccess", "watchers" })
-   private static Store create(int compareAndSwapFail, int compareAndSwapSuccess, int createFail, int createSuccess,
-         int deleteFail, int deleteSuccess, int expireCount, int getsFail, int getsSuccess, int setsFail,
-         int setsSuccess, int updateFail, int updateSuccess, int watchers) {
-      return new AutoValue_Store(compareAndSwapFail, compareAndSwapSuccess, createFail, createSuccess, deleteFail,
-            deleteSuccess, expireCount, getsFail, getsSuccess, setsFail, setsSuccess, updateFail, updateSuccess,
-            watchers);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/fallbacks/EtcdFallbacks.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/fallbacks/EtcdFallbacks.java b/etcd/src/main/java/org/jclouds/etcd/fallbacks/EtcdFallbacks.java
deleted file mode 100644
index de8cec9..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/fallbacks/EtcdFallbacks.java
+++ /dev/null
@@ -1,48 +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.etcd.fallbacks;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.equalTo;
-import static com.google.common.base.Throwables.propagate;
-import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
-
-import org.jclouds.Fallback;
-import org.jclouds.http.HttpUtils;
-
-public final class EtcdFallbacks {
-
-   public static final class FalseOn503 implements Fallback<Boolean> {
-      public Boolean createOrPropagate(Throwable t) throws Exception {
-         if (checkNotNull(t, "throwable") != null && t.getMessage().contains("{\"health\": \"false\"}")
-               && returnValueOnCodeOrNull(t, true, equalTo(503)) != null) {
-            return Boolean.FALSE;
-         }
-         throw propagate(t);
-      }
-   }
-
-   public static final class NullOnKeyNonFoundAnd404 implements Fallback<Object> {
-      public Object createOrPropagate(Throwable t) throws Exception {
-         if (checkNotNull(t, "throwable") != null && t.getMessage().contains("Key not found")
-               && HttpUtils.contains404(t)) {
-            return null;
-         }
-         throw propagate(t);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/features/KeysApi.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/features/KeysApi.java b/etcd/src/main/java/org/jclouds/etcd/features/KeysApi.java
deleted file mode 100644
index f2ef5d6..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/features/KeysApi.java
+++ /dev/null
@@ -1,59 +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.etcd.features;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.etcd.domain.keys.Key;
-import org.jclouds.etcd.fallbacks.EtcdFallbacks.NullOnKeyNonFoundAnd404;
-import org.jclouds.rest.annotations.Fallback;
-
-@Consumes(MediaType.APPLICATION_JSON)
-@Path("/{jclouds.api-version}/keys")
-public interface KeysApi {
-
-   @Named("keys:create")
-   @PUT
-   @Path("/{key}")
-   Key createKey(@PathParam("key") String key, @FormParam("value") String value);
-
-   @Named("keys:create")
-   @PUT
-   @Path("/{key}")
-   Key createKey(@PathParam("key") String key, @FormParam("value") String value, @FormParam("ttl") int seconds);
-
-   @Named("keys:get")
-   @GET
-   @Path("/{key}")
-   @Fallback(NullOnKeyNonFoundAnd404.class)
-   Key getKey(@PathParam("key") String key);
-
-   @Named("keys:delete")
-   @DELETE
-   @Path("/{key}")
-   @Fallback(NullOnKeyNonFoundAnd404.class)
-   Key deleteKey(@PathParam("key") String key);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/features/MembersApi.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/features/MembersApi.java b/etcd/src/main/java/org/jclouds/etcd/features/MembersApi.java
deleted file mode 100644
index 655b748..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/features/MembersApi.java
+++ /dev/null
@@ -1,74 +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.etcd.features;
-
-import java.util.List;
-
-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.FalseOnNotFoundOr404;
-import org.jclouds.etcd.domain.members.CreateMember;
-import org.jclouds.etcd.domain.members.Member;
-import org.jclouds.rest.ResourceAlreadyExistsException;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-@Consumes(MediaType.APPLICATION_JSON)
-@Path("/{jclouds.api-version}/members")
-public interface MembersApi {
-
-   /**
-    * @return list of members within cluster
-    */
-   @Named("members:list")
-   @SelectJson("members")
-   @GET
-   List<Member> list();
-
-   /**
-    * @param member
-    *           non-existing member to add to cluster
-    * @return newly created member
-    * @throws ResourceAlreadyExistsException
-    *            if member with peerURLs was already present
-    */
-   @Named("members:add")
-   @POST
-   Member add(@BinderParam(BindToJsonPayload.class) CreateMember memberToCreate);
-
-   /**
-    * @param memberID
-    *           id of previously existing member
-    * @return true if member was deleted or false if id did not match an
-    *         existing member
-    */
-   @Named("members:delete")
-   @Path("/{id}")
-   @Fallback(FalseOnNotFoundOr404.class)
-   @DELETE
-   boolean delete(@PathParam("id") String memberID);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/features/MiscellaneousApi.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/features/MiscellaneousApi.java b/etcd/src/main/java/org/jclouds/etcd/features/MiscellaneousApi.java
deleted file mode 100644
index 73d61ea..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/features/MiscellaneousApi.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jclouds.etcd.features;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.etcd.domain.miscellaneous.Version;
-import org.jclouds.etcd.fallbacks.EtcdFallbacks.FalseOn503;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.SelectJson;
-
-public interface MiscellaneousApi {
-
-   @Named("miscellaneous:version")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/version")
-   @GET
-   Version version();
-
-   @Named("miscellaneous:health")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/health")
-   @SelectJson("health")
-   @Fallback(FalseOn503.class)
-   @GET
-   boolean health();
-
-   @Named("miscellaneous:metrics")
-   @Consumes(MediaType.TEXT_PLAIN)
-   @Path("/metrics")
-   @GET
-   String metrics();
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/features/StatisticsApi.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/features/StatisticsApi.java b/etcd/src/main/java/org/jclouds/etcd/features/StatisticsApi.java
deleted file mode 100644
index d469cf6..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/features/StatisticsApi.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.etcd.features;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.etcd.domain.statistics.Leader;
-import org.jclouds.etcd.domain.statistics.Self;
-import org.jclouds.etcd.domain.statistics.Store;
-
-@Consumes(MediaType.APPLICATION_JSON)
-@Path("/{jclouds.api-version}/stats")
-public interface StatisticsApi {
-
-   /**
-    * @return information on leader and entire cluster but only if WE are the
-    *         leader
-    */
-   @Named("statistics:leader")
-   @Path("/leader")
-   @GET
-   Leader leader();
-
-   /**
-    * @return information on node we are currently pointing at
-    */
-   @Named("statistics:self")
-   @Path("/self")
-   @GET
-   Self self();
-
-   /**
-    * @return information about operations this node has handled
-    */
-   @Named("statistics:store")
-   @Path("/store")
-   @GET
-   Store store();
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/main/java/org/jclouds/etcd/handlers/EtcdErrorHandler.java
----------------------------------------------------------------------
diff --git a/etcd/src/main/java/org/jclouds/etcd/handlers/EtcdErrorHandler.java b/etcd/src/main/java/org/jclouds/etcd/handlers/EtcdErrorHandler.java
deleted file mode 100644
index e3e2261..0000000
--- a/etcd/src/main/java/org/jclouds/etcd/handlers/EtcdErrorHandler.java
+++ /dev/null
@@ -1,83 +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.etcd.handlers;
-
-import static org.jclouds.util.Closeables2.closeQuietly;
-
-import java.io.IOException;
-
-import javax.annotation.Resource;
-
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.logging.Logger;
-import org.jclouds.rest.ResourceAlreadyExistsException;
-import org.jclouds.util.Strings2;
-
-import com.google.common.base.Throwables;
-
-/**
- * Handle errors and propagate exception
- */
-public class EtcdErrorHandler implements HttpErrorHandler {
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   public void handleError(HttpCommand command, HttpResponse response) {
-
-      String message = parseMessage(response);
-      Exception exception = null;
-      try {
-
-         message = message != null ? message
-               : String.format("%s -> %s", command.getCurrentRequest().getRequestLine(), response.getStatusLine());
-
-         switch (response.getStatusCode()) {
-            case 400:
-               exception = new IllegalArgumentException(message);
-               break;
-            case 409:
-               exception = new ResourceAlreadyExistsException(message);
-               break;
-            default:
-               exception = new HttpResponseException(message, command, response);
-               break;
-         }
-      } catch (Exception e) {
-         exception = new HttpResponseException(command, response, e);
-      } finally {
-         if (exception == null) {
-            exception = message != null ? new HttpResponseException(command, response, message)
-                  : new HttpResponseException(command, response);
-         }
-         closeQuietly(response.getPayload());
-         command.setException(exception);
-      }
-   }
-
-   private String parseMessage(HttpResponse response) {
-      if (response.getPayload() == null)
-         return null;
-      try {
-         return Strings2.toStringAndClose(response.getPayload().openStream());
-      } catch (IOException e) {
-         throw Throwables.propagate(e);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/BaseEtcdApiLiveTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/BaseEtcdApiLiveTest.java b/etcd/src/test/java/org/jclouds/etcd/BaseEtcdApiLiveTest.java
deleted file mode 100644
index 88cfb61..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/BaseEtcdApiLiveTest.java
+++ /dev/null
@@ -1,51 +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.etcd;
-
-import java.util.Properties;
-import java.util.UUID;
-
-import org.jclouds.Constants;
-import org.jclouds.apis.BaseApiLiveTest;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-@Test(groups = "live")
-public class BaseEtcdApiLiveTest extends BaseApiLiveTest<EtcdApi> {
-
-   public BaseEtcdApiLiveTest() {
-      provider = "etcd";
-   }
-
-   @Override
-   protected Iterable<Module> setupModules() {
-      return ImmutableSet.<Module> of(getLoggingModule());
-   }
-
-   @Override
-   protected Properties setupProperties() {
-      Properties overrides = super.setupProperties();
-      overrides.setProperty(Constants.PROPERTY_MAX_RETRIES, "0");
-      return overrides;
-   }
-
-   protected String randomString() {
-      return UUID.randomUUID().toString().replaceAll("-", "");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/EtcdApiMetadataTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/EtcdApiMetadataTest.java b/etcd/src/test/java/org/jclouds/etcd/EtcdApiMetadataTest.java
deleted file mode 100644
index 475a5b5..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/EtcdApiMetadataTest.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.etcd;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.HashSet;
-import org.jclouds.View;
-import org.jclouds.apis.ApiMetadata;
-import org.jclouds.apis.Apis;
-import org.jclouds.apis.internal.BaseApiMetadataTest;
-import org.testng.annotations.Test;
-
-import com.google.common.reflect.TypeToken;
-
-/**
- * Unit tests for the {@link EtcdApiMetadata} class.
- */
-@Test(groups = "unit", testName = "EtcdApiMetadataTest")
-public class EtcdApiMetadataTest extends BaseApiMetadataTest {
-
-   public EtcdApiMetadataTest() {
-      super(new EtcdApiMetadata(), new HashSet<TypeToken<? extends View>>());
-   }
-
-   public void testEtcdApiRegistered() {
-      ApiMetadata api = Apis.withId("etcd");
-
-      assertNotNull(api);
-      assertTrue(api instanceof EtcdApiMetadata);
-      assertEquals(api.getId(), "etcd");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/KeysApiLiveTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/KeysApiLiveTest.java b/etcd/src/test/java/org/jclouds/etcd/features/KeysApiLiveTest.java
deleted file mode 100644
index 2b31917..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/KeysApiLiveTest.java
+++ /dev/null
@@ -1,100 +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.etcd.features;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.etcd.BaseEtcdApiLiveTest;
-import org.jclouds.etcd.domain.keys.Key;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Throwables;
-
-@Test(groups = "live", testName = "KeysApiLiveTest")
-public class KeysApiLiveTest extends BaseEtcdApiLiveTest {
-
-   private String key;
-   private String value;
-
-   @BeforeClass
-   protected void init() {
-      key = randomString();
-      value = randomString();
-   }
-
-   @Test
-   public void testCreateKeyWithTTL() {
-      String localKey = randomString();
-      String localValue = randomString();
-      Key createdKey = api().createKey(localKey, localValue, 1);
-      assertNotNull(createdKey);
-      assertNotNull(createdKey.node().expiration());
-      assertTrue(createdKey.node().ttl() == 1);
-
-      try {
-         Thread.sleep(3000);
-      } catch (InterruptedException e) {
-         Throwables.propagate(e);
-      }
-
-      createdKey = api().getKey(localKey);
-      assertNull(createdKey);
-   }
-
-   @Test
-   public void testCreateKey() {
-      Key createdKey = api().createKey(key, value);
-      assertNotNull(createdKey);
-      assertTrue(createdKey.action().equals("set"));
-      assertTrue(createdKey.node().value().equals(value));
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testGetKey() {
-      Key getKey = api().getKey(key);
-      assertNotNull(getKey);
-      assertTrue(getKey.action().equals("get"));
-      assertTrue(getKey.node().value().equals(value));
-   }
-
-   @Test(dependsOnMethods = "testGetKey", alwaysRun = true)
-   public void testDeleteKey() {
-      Key deletedKey = api().deleteKey(key);
-      assertNotNull(deletedKey);
-      assertTrue(deletedKey.action().equals("delete"));
-      assertTrue(deletedKey.prevNode().value().equals(value));
-   }
-
-   @Test
-   public void testGetNonExistentKey() {
-      Key deletedKey = api().getKey(randomString());
-      assertNull(deletedKey);
-   }
-
-   @Test
-   public void testDeleteNonExistentKey() {
-      Key deletedKey = api().deleteKey(randomString());
-      assertNull(deletedKey);
-   }
-
-   private KeysApi api() {
-      return api.keysApi();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/KeysApiMockTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/KeysApiMockTest.java b/etcd/src/test/java/org/jclouds/etcd/features/KeysApiMockTest.java
deleted file mode 100644
index 7f650a0..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/KeysApiMockTest.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.etcd.features;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.etcd.EtcdApi;
-import org.jclouds.etcd.EtcdApiMetadata;
-import org.jclouds.etcd.domain.keys.Key;
-import org.jclouds.etcd.internal.BaseEtcdMockTest;
-import org.testng.annotations.Test;
-
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-
-/**
- * Mock tests for the {@link org.jclouds.etcd.features.KeysApi} class.
- */
-@Test(groups = "unit", testName = "KeysApiMockTest")
-public class KeysApiMockTest extends BaseEtcdMockTest {
-
-   public void testCreateKey() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/keys-create.json")).setResponseCode(201));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      KeysApi api = etcdApi.keysApi();
-      try {
-         Key createdKey = api.createKey("hello", "world");
-         assertNotNull(createdKey);
-         assertTrue(createdKey.node().key().equals("/hello"));
-         assertTrue(createdKey.node().value().equals("world"));
-         assertSentWithFormData(server, "PUT", "/" + EtcdApiMetadata.API_VERSION + "/keys/hello", "value=world");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testCreateKeyWithTTL() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/keys-create-ttl.json")).setResponseCode(201));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      KeysApi api = etcdApi.keysApi();
-      try {
-         Key createdKey = api.createKey("hello", "world", 5);
-         assertNotNull(createdKey);
-         assertNotNull(createdKey.node().expiration());
-         assertTrue(createdKey.node().ttl() == 5);
-         assertTrue(createdKey.node().key().equals("/hello"));
-         assertTrue(createdKey.node().value().equals("world"));
-         assertSentWithFormData(server, "PUT", "/" + EtcdApiMetadata.API_VERSION + "/keys/hello", "value=world&ttl=5");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetKey() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/keys-get.json")).setResponseCode(200));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      KeysApi api = etcdApi.keysApi();
-      try {
-         Key foundKey = api.getKey("hello");
-         assertNotNull(foundKey);
-         assertTrue(foundKey.node().key().equals("/hello"));
-         assertTrue(foundKey.node().value().equals("world"));
-         assertSent(server, "GET", "/" + EtcdApiMetadata.API_VERSION + "/keys/hello");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testGetNonExistentKey() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(
-            new MockResponse().setBody(payloadFromResource("/keys-get-delete-nonexistent.json")).setResponseCode(404));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      KeysApi api = etcdApi.keysApi();
-      try {
-         Key nonExistentKey = api.getKey("NonExistentKeyToGet");
-         assertNull(nonExistentKey);
-         assertSent(server, "GET", "/" + EtcdApiMetadata.API_VERSION + "/keys/NonExistentKeyToGet");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteKey() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/keys-delete.json")).setResponseCode(200));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      KeysApi api = etcdApi.keysApi();
-      try {
-         Key deletedKey = api.deleteKey("hello");
-         assertTrue(deletedKey.prevNode().key().equals("/hello"));
-         assertTrue(deletedKey.prevNode().value().equals("world"));
-         assertSent(server, "DELETE", "/" + EtcdApiMetadata.API_VERSION + "/keys/hello");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteNonExistentKey() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(
-            new MockResponse().setBody(payloadFromResource("/keys-get-delete-nonexistent.json")).setResponseCode(404));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      KeysApi api = etcdApi.keysApi();
-      try {
-         Key nonExistentKey = api.deleteKey("NonExistentKeyToDelete");
-         assertNull(nonExistentKey);
-         assertSent(server, "DELETE", "/" + EtcdApiMetadata.API_VERSION + "/keys/NonExistentKeyToDelete");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/MembersApiLiveTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/MembersApiLiveTest.java b/etcd/src/test/java/org/jclouds/etcd/features/MembersApiLiveTest.java
deleted file mode 100644
index df8d58e..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/MembersApiLiveTest.java
+++ /dev/null
@@ -1,103 +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.etcd.features;
-
-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.List;
-
-import org.jclouds.etcd.BaseEtcdApiLiveTest;
-import org.jclouds.etcd.domain.members.CreateMember;
-import org.jclouds.etcd.domain.members.Member;
-import org.jclouds.rest.ResourceAlreadyExistsException;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-
-@Test(groups = "live", testName = "MembersApiLiveTest", singleThreaded = true)
-public class MembersApiLiveTest extends BaseEtcdApiLiveTest {
-
-   private String selfID;
-   private Member nonSelfMember;
-   private Member addedMember;
-
-   @BeforeClass
-   protected void init() {
-      selfID = api.statisticsApi().self().id();
-      assertNotNull(selfID);
-   }
-
-   public void testListMembers() {
-      List<Member> members = api().list();
-      assertNotNull(members);
-      assertTrue(members.size() > 0);
-      for (Member member : members) {
-         if (!member.id().equals(selfID)) {
-            this.nonSelfMember = member;
-            return;
-         }
-      }
-      throw new RuntimeException("Could not find another member in cluster with different id");
-   }
-
-   @Test(dependsOnMethods = "testListMembers")
-   public void testDeleteMember() {
-      boolean successful = api().delete(nonSelfMember.id());
-      assertTrue(successful);
-   }
-
-   @Test(dependsOnMethods = "testDeleteMember")
-   public void testAddMember() {
-      assertNotNull(nonSelfMember);
-
-      addedMember = api().add(CreateMember.create(null, nonSelfMember.peerURLs(), null));
-      assertNotNull(addedMember);
-      assertTrue(addedMember.peerURLs().containsAll(nonSelfMember.peerURLs()));
-   }
-
-   @Test(dependsOnMethods = "testAddMember", expectedExceptions = ResourceAlreadyExistsException.class)
-   public void testAddExistingMember() {
-      assertNotNull(addedMember);
-
-      Member existingMember = api().add(CreateMember.create(null, addedMember.peerURLs(), addedMember.clientURLs()));
-      assertNull(existingMember);
-   }
-
-   @Test(dependsOnMethods = "testAddExistingMember", expectedExceptions = IllegalArgumentException.class)
-   public void testAddMemberWithMalformedURL() {
-      api().add(CreateMember.create(null, ImmutableList.of("htp:/hello/world:11bye"), null));
-   }
-
-   @Test(dependsOnMethods = "testAddMemberWithMalformedURL", expectedExceptions = IllegalArgumentException.class)
-   public void testAddMemberWithIllegalFormat() {
-      api().add(CreateMember.create(null, ImmutableList.of("http://www.google.com"), null));
-   }
-
-   @Test(dependsOnMethods = "testAddMemberWithIllegalFormat")
-   public void testDeleteMemberNonExistentMember() {
-      boolean successful = api().delete(randomString());
-      assertFalse(successful);
-   }
-
-   private MembersApi api() {
-      return api.membersApi();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/MembersApiMockTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/MembersApiMockTest.java b/etcd/src/test/java/org/jclouds/etcd/features/MembersApiMockTest.java
deleted file mode 100644
index 863e131..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/MembersApiMockTest.java
+++ /dev/null
@@ -1,168 +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.etcd.features;
-
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertFalse;
-
-import java.util.List;
-
-import org.jclouds.etcd.EtcdApi;
-import org.jclouds.etcd.EtcdApiMetadata;
-import org.jclouds.etcd.domain.members.CreateMember;
-import org.jclouds.etcd.domain.members.Member;
-import org.jclouds.etcd.internal.BaseEtcdMockTest;
-import org.jclouds.rest.ResourceAlreadyExistsException;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-
-/**
- * Mock tests for the {@link org.jclouds.etcd.features.MembersApi} class.
- */
-@Test(groups = "unit", testName = "MembersApiMockTest")
-public class MembersApiMockTest extends BaseEtcdMockTest {
-
-   public void testListMembers() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/members.json")).setResponseCode(200));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         List<Member> members = api.list();
-         assertNotNull(members);
-         assertTrue(members.size() == 2);
-         assertSent(server, "GET", "/" + EtcdApiMetadata.API_VERSION + "/members");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testAddMember() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/members-added.json")).setResponseCode(201));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         String peerURL = "http://10.0.0.10:2380";
-         String clientURL = "http://10.0.0.10:2381";
-         Member member = api.add(CreateMember.create(null, ImmutableList.of(peerURL), ImmutableList.of(clientURL)));
-         assertNotNull(member);
-         assertTrue(member.peerURLs().contains(peerURL));
-         assertTrue(member.clientURLs().contains(clientURL));
-         assertSent(server, "POST", "/" + EtcdApiMetadata.API_VERSION + "/members");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   @Test(expectedExceptions = IllegalArgumentException.class)
-   public void testAddMemberWithMalformedURL() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(
-            new MockResponse().setBody(payloadFromResource("/members-add-malformed-url.json")).setResponseCode(400));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         String peerURL = "htp:/hello/world:11bye";
-         api.add(CreateMember.create(null, ImmutableList.of(peerURL), null));
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   @Test(expectedExceptions = IllegalArgumentException.class)
-   public void testAddMemberWithIllegalFormat() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(
-            new MockResponse().setBody(payloadFromResource("/members-add-illegal-format.json")).setResponseCode(400));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         String peerURL = "http://www.google.com";
-         api.add(CreateMember.create(null, ImmutableList.of(peerURL), null));
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   @Test(expectedExceptions = ResourceAlreadyExistsException.class)
-   public void testAddExistingMember() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(
-            new MockResponse().setBody(payloadFromResource("/members-add-existent.json")).setResponseCode(409));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         String peerURL = "http://10.0.0.10:2380";
-         Member member = api.add(CreateMember.create(null, ImmutableList.of(peerURL), null));
-         assertNull(member);
-         assertSent(server, "POST", "/" + EtcdApiMetadata.API_VERSION + "/members");
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteMember() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(new MockResponse().setBody("").setResponseCode(204));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         String memberID = "123456789";
-         boolean deleted = api.delete(memberID);
-         assertTrue(deleted);
-         assertSent(server, "DELETE", "/" + EtcdApiMetadata.API_VERSION + "/members/" + memberID);
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteNonExistentMember() throws Exception {
-      MockWebServer server = mockEtcdJavaWebServer();
-
-      server.enqueue(
-            new MockResponse().setBody(payloadFromResource("/members-delete-nonexistent.json")).setResponseCode(404));
-      EtcdApi etcdApi = api(server.getUrl("/"));
-      MembersApi api = etcdApi.membersApi();
-      try {
-         String memberID = "1234567890";
-         boolean deleted = api.delete(memberID);
-         assertFalse(deleted);
-         assertSent(server, "DELETE", "/" + EtcdApiMetadata.API_VERSION + "/members/" + memberID);
-      } finally {
-         etcdApi.close();
-         server.shutdown();
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f215379/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiLiveTest.java
----------------------------------------------------------------------
diff --git a/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiLiveTest.java b/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiLiveTest.java
deleted file mode 100644
index ec955c3..0000000
--- a/etcd/src/test/java/org/jclouds/etcd/features/MiscellaneousApiLiveTest.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.etcd.features;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import org.jclouds.etcd.BaseEtcdApiLiveTest;
-import org.jclouds.etcd.domain.miscellaneous.Version;
-import org.testng.annotations.Test;
-
-@Test(groups = "live", testName = "MiscellaneousApiLiveTest")
-public class MiscellaneousApiLiveTest extends BaseEtcdApiLiveTest {
-
-   private final String versionRegex = "^\\d+\\.\\d+\\.\\d+$";
-
-   @Test
-   public void testGetVersion() {
-      Version version = api().version();
-      assertNotNull(version);
-      assertTrue(version.etcdServer().matches(versionRegex));
-      assertTrue(version.etcdCluster().matches(versionRegex));
-   }
-
-   @Test
-   public void testGetHealth() {
-      boolean health = api().health();
-      assertTrue(health);
-   }
-
-   @Test
-   public void testGetMetrics() {
-      String metrics = api().metrics();
-      assertNotNull(metrics);
-   }
-
-   private MiscellaneousApi api() {
-      return api.miscellaneousApi();
-   }
-}