You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by za...@apache.org on 2015/04/03 21:57:13 UTC

jclouds-labs-openstack git commit: Allows manually deleting (purging) cached CDN assets

Repository: jclouds-labs-openstack
Updated Branches:
  refs/heads/master 9c58638ef -> 60a627460


Allows manually deleting (purging) cached CDN assets


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

Branch: refs/heads/master
Commit: 60a6274600ad2ec523b1736a021c11b418112421
Parents: 9c58638
Author: Zack Shoylev <za...@rackspace.com>
Authored: Wed Mar 18 15:55:50 2015 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Fri Apr 3 14:53:33 2015 -0500

----------------------------------------------------------------------
 .../openstack/poppy/v1/features/ServiceApi.java |  30 +++-
 .../poppy/v1/features/ServiceApiLiveTest.java   |   2 +
 .../poppy/v1/features/ServiceApiMockTest.java   | 137 +++++++++++++++++++
 3 files changed, 168 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/60a62746/openstack-poppy/src/main/java/org/jclouds/openstack/poppy/v1/features/ServiceApi.java
----------------------------------------------------------------------
diff --git a/openstack-poppy/src/main/java/org/jclouds/openstack/poppy/v1/features/ServiceApi.java b/openstack-poppy/src/main/java/org/jclouds/openstack/poppy/v1/features/ServiceApi.java
index d1b7575..6ed062a 100644
--- a/openstack-poppy/src/main/java/org/jclouds/openstack/poppy/v1/features/ServiceApi.java
+++ b/openstack-poppy/src/main/java/org/jclouds/openstack/poppy/v1/features/ServiceApi.java
@@ -26,6 +26,7 @@ import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks;
@@ -51,6 +52,7 @@ import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PATCH;
 import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.QueryParams;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.Transform;
@@ -121,7 +123,7 @@ public interface ServiceApi {
     * @param id the id of the {@code Service} to delete.
     * @return true if delete was successful, false if not.
     */
-   @Named("network:delete")
+   @Named("service:delete")
    @DELETE
    @Path("/{id}")
    @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
@@ -144,4 +146,30 @@ public interface ServiceApi {
    @MapBinder(JSONPatchUpdate.class)
    @Nullable
    URI update(@PathParam("id") String id, @PayloadParam("service") Service service, @PayloadParam("updateService") UpdateService updateService);
+
+   /**
+    * Delete a cached service asset.
+    *
+    * @param id the id of the {@code Service} to delete.
+    * @return true if delete was successful, false if not.
+    */
+   @Named("service:deleteAsset")
+   @DELETE
+   //@Path("/{id}/assets?url={url : .+}")
+   @Path("/{id}/assets")
+   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   boolean deleteAsset(@PathParam("id") String id, @QueryParam("url") String url);
+
+   /**
+    * Delete all cached service assets.
+    *
+    * @param id the id of the {@code Service} to delete.
+    * @return true if delete was successful, false if not.
+    */
+   @Named("service:deleteAssets")
+   @DELETE
+   @Path("/{id}/assets")
+   @QueryParams(keys = "all", values = "true")
+   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   boolean deleteAssets(@PathParam("id") String id);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/60a62746/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiLiveTest.java
----------------------------------------------------------------------
diff --git a/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiLiveTest.java b/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiLiveTest.java
index 63ba806..5746b07 100644
--- a/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiLiveTest.java
+++ b/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiLiveTest.java
@@ -80,6 +80,8 @@ public class ServiceApiLiveTest extends BasePoppyApiLiveTest {
          assertNotNull(serviceList);
          Service serviceGet = api.getServiceApi().get(serviceId);
          assertEquals(serviceList, serviceGet);
+         assertTrue(serviceApi.deleteAsset(serviceId, "image/1.jpg"));
+         assertTrue(serviceApi.deleteAssets(serviceId));
       }
       finally {
          if (serviceId != null) {

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/60a62746/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiMockTest.java
----------------------------------------------------------------------
diff --git a/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiMockTest.java b/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiMockTest.java
index 4700f61..f634386 100644
--- a/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiMockTest.java
+++ b/openstack-poppy/src/test/java/org/jclouds/openstack/poppy/v1/features/ServiceApiMockTest.java
@@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
 
 import java.io.IOException;
 import java.net.URI;
@@ -282,4 +283,140 @@ public class ServiceApiMockTest extends BasePoppyApiMockTest {
          server.shutdown();
       }
    }
+
+   public void testDeleteService() throws Exception {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(200)));
+
+      try {
+         PoppyApi poppyApi = api(server.getUrl("/").toString(), "openstack-poppy", overrides);
+         ServiceApi api = poppyApi.getServiceApi();
+
+         boolean result = api.delete("96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0");
+
+         assertThat(server.getRequestCount()).isEqualTo(2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE", BASE_URI + "/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0");
+
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteServiceFail() throws Exception {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(404)));
+
+      try {
+         PoppyApi poppyApi = api(server.getUrl("/").toString(), "openstack-poppy", overrides);
+         ServiceApi api = poppyApi.getServiceApi();
+
+         boolean result = api.delete("96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0");
+
+         assertThat(server.getRequestCount()).isEqualTo(2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE", BASE_URI + "/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0");
+
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteServiceAsset() throws Exception {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(200)));
+
+      try {
+         PoppyApi poppyApi = api(server.getUrl("/").toString(), "openstack-poppy", overrides);
+         ServiceApi api = poppyApi.getServiceApi();
+
+         boolean result = api.deleteAsset("96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", "/images/1.jpg");
+
+         assertThat(server.getRequestCount()).isEqualTo(2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE",
+               BASE_URI + "/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0/assets?url=/images/1.jpg");
+
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteServiceAssetFail() throws Exception {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(404)));
+
+      try {
+         PoppyApi poppyApi = api(server.getUrl("/").toString(), "openstack-poppy", overrides);
+         ServiceApi api = poppyApi.getServiceApi();
+
+         boolean result = api.deleteAsset("96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", "/images/1.jpg");
+
+         assertThat(server.getRequestCount()).isEqualTo(2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE",
+               BASE_URI + "/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0/assets?url=/images/1.jpg");
+
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteAllServiceAssets() throws Exception {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(200)));
+
+      try {
+         PoppyApi poppyApi = api(server.getUrl("/").toString(), "openstack-poppy", overrides);
+         ServiceApi api = poppyApi.getServiceApi();
+
+         boolean result = api.deleteAssets("96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0");
+
+         assertThat(server.getRequestCount()).isEqualTo(2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE",
+               BASE_URI + "/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0/assets?all=true");
+
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteAllServiceAssetsFail() throws Exception {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(404)));
+
+      try {
+         PoppyApi poppyApi = api(server.getUrl("/").toString(), "openstack-poppy", overrides);
+         ServiceApi api = poppyApi.getServiceApi();
+
+         boolean result = api.deleteAssets("96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0");
+
+         assertThat(server.getRequestCount()).isEqualTo(2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE",
+               BASE_URI + "/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0/assets?all=true");
+
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
 }