JCLOUDS-1052: Fix DigitalOcean2 deleteImage

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

Branch: refs/heads/master
Commit: 1ac6fa8426d645d74409801464101d85bff03625
Parents: 575d39e
Author: Ignasi Barrera <[email protected]>
Authored: Tue Dec 22 23:05:29 2015 +0100
Committer: Ignasi Barrera <[email protected]>
Committed: Tue Dec 22 23:12:59 2015 +0100

----------------------------------------------------------------------
 .../extensions/DigitalOcean2ImageExtension.java | 24 ++++++++++++--------
 1 file changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/1ac6fa84/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/extensions/DigitalOcean2ImageExtension.java
----------------------------------------------------------------------
diff --git 
a/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/extensions/DigitalOcean2ImageExtension.java
 
b/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/extensions/DigitalOcean2ImageExtension.java
index 524e4d1..56e67de 100644
--- 
a/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/extensions/DigitalOcean2ImageExtension.java
+++ 
b/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/extensions/DigitalOcean2ImageExtension.java
@@ -118,17 +118,21 @@ public class DigitalOcean2ImageExtension implements 
ImageExtension {
 
    @Override
    public boolean deleteImage(String id) {
-      try {
-         // The id of the image can be an id or a slug. Use the corresponding 
method of the API depending on what is
-         // provided. If it can be parsed as a number, use the method to 
destroy by ID. Otherwise, destroy by slug.
-         Integer imageId = Ints.tryParse(id);
-         if (imageId != null) {
-            logger.debug(">> image does not have a slug. Using the id to 
delete the image...");
-            api.imageApi().delete(imageId);
+      String imageId = ImageInRegion.extractImageId(id);
+      Integer numericId = Ints.tryParse(imageId); // User images don't have a 
slug, so we expect a numeric id here
+
+      if (numericId != null) {
+         try {
+            logger.debug(">> deleting image %s...", id);
+            api.imageApi().delete(numericId);
+            return true;
+         } catch (Exception ex) {
+            logger.error(ex, ">> error deleting image %s", id);
          }
-         return true;
-      } catch (Exception ex) {
-         return false;
+      } else {
+         logger.warn(">> image %s is not a user image and cannot be deleted", 
id);
       }
+
+      return false;
    }
 }

Reply via email to