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 2019/08/09 10:27:59 UTC

[jclouds] branch 2.1.x updated: Add tag support to azure disks

This is an automated email from the ASF dual-hosted git repository.

nacx pushed a commit to branch 2.1.x
in repository https://gitbox.apache.org/repos/asf/jclouds.git


The following commit(s) were added to refs/heads/2.1.x by this push:
     new bd59263  Add tag support to azure disks
bd59263 is described below

commit bd59263d470f4307fe1a70a064e11c1ebeea064a
Author: Simone Locci <si...@cloudesire.com>
AuthorDate: Tue Aug 6 17:34:19 2019 +0200

    Add tag support to azure disks
---
 .../jclouds/azurecompute/arm/features/DiskApi.java   | 11 +++++++++++
 .../azurecompute/arm/features/DiskApiLiveTest.java   |  4 +++-
 .../azurecompute/arm/features/DiskApiMockTest.java   | 20 ++++++++++++++++++++
 .../test/resources/creatediskwithtagsresponse.json   | 14 ++++++++++++++
 4 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/DiskApi.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/DiskApi.java
index 10e9ac6..e8b6cf2 100644
--- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/DiskApi.java
+++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/DiskApi.java
@@ -18,6 +18,7 @@ package org.jclouds.azurecompute.arm.features;
 
 import java.net.URI;
 import java.util.List;
+import java.util.Map;
 
 import javax.inject.Named;
 import javax.ws.rs.Consumes;
@@ -34,6 +35,7 @@ import org.jclouds.azurecompute.arm.domain.Disk;
 import org.jclouds.azurecompute.arm.domain.DiskProperties;
 import org.jclouds.azurecompute.arm.filters.ApiVersionFilter;
 import org.jclouds.azurecompute.arm.functions.URIParser;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.filters.OAuthFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -62,6 +64,15 @@ public interface DiskApi {
                        @PayloadParam("location") String location,
                        @PayloadParam("properties") DiskProperties properties);
 
+   @Named("disk:create_or_update")
+   @PUT
+   @MapBinder(BindToJsonPayload.class)
+   @Path("/{diskName}")
+   Disk createOrUpdate(@PathParam("diskName") String diskName,
+                       @PayloadParam("location") String location,
+                       @Nullable @PayloadParam("tags") Map<String, String> tags,
+                       @PayloadParam("properties") DiskProperties properties);
+
    @Named("disk:get")
    @Path("/{diskName}")
    @GET
diff --git a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiLiveTest.java b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiLiveTest.java
index f5af885..7975522 100644
--- a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiLiveTest.java
+++ b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiLiveTest.java
@@ -30,6 +30,7 @@ import org.testng.annotations.Test;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 
 import static org.testng.Assert.assertNotNull;
@@ -58,9 +59,10 @@ public class DiskApiLiveTest extends BaseAzureComputeApiLiveTest {
    @Test
    public void createDisk() {
       DiskProperties properties = DiskProperties.builder().creationData(CreationData.create(CreationData.CreateOptions.EMPTY)).diskSizeGB(2).build();
-      Disk dataDisk = api().createOrUpdate(diskName, LOCATION, properties);
+      Disk dataDisk = api().createOrUpdate(diskName, LOCATION, ImmutableMap.of("exampleTag", "jclouds-test-tag"), properties);
       assertTrue(waitUntilAvailable(diskName), "creation operation did not complete in the configured timeout");
       assertTrue(dataDisk.properties().diskSizeGB() == 2);
+      assertTrue(dataDisk.tags().containsValue("jclouds-test-tag"));
    }
 
    @Test(dependsOnMethods = "createDisk")
diff --git a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiMockTest.java b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiMockTest.java
index 4c8ba2e..d3a0ca0 100644
--- a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiMockTest.java
+++ b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiMockTest.java
@@ -19,6 +19,7 @@ package org.jclouds.azurecompute.arm.features;
 import java.net.URI;
 import java.util.List;
 
+import com.google.common.collect.ImmutableMap;
 import org.jclouds.azurecompute.arm.domain.CreationData;
 import org.jclouds.azurecompute.arm.domain.Disk;
 import org.jclouds.azurecompute.arm.domain.DiskProperties;
@@ -58,6 +59,25 @@ public class DiskApiMockTest extends BaseAzureComputeApiMockTest {
       assertTrue(dataDisk.properties().diskSizeGB() == 2);
    }
 
+   public void createDiskWithTags() throws InterruptedException {
+
+      server.enqueue(jsonResponse("/creatediskwithtagsresponse.json").setResponseCode(200));
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      DiskProperties properties = DiskProperties.builder().diskSizeGB(2).creationData(CreationData.create(CreationData.CreateOptions.EMPTY)).build();
+
+      Disk dataDisk = diskApi.createOrUpdate(diskName, "westus", ImmutableMap.of("exampleTag", "jclouds-test-tag"), properties);
+
+      String path = String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks/%s?%s", subscriptionid, resourcegroup, diskName, apiVersion);
+      String json = "{\"location\":\"westus\",\"tags\":{\"exampleTag\":\"jclouds-test-tag\"},\"properties\":{\"diskSizeGB\":2,\"creationData\":{\"createOption\":\"Empty\"}}}";
+      assertSent(server, "PUT", path, json);
+
+      assertEquals(dataDisk.properties().provisioningState(), "Updating");
+      assertTrue(dataDisk.properties().diskSizeGB() == 2);
+      assertTrue(dataDisk.tags().containsValue("jclouds-test-tag"));
+   }
+
    public void getDisk() throws InterruptedException {
 
       server.enqueue(jsonResponse("/getdisk.json").setResponseCode(200));
diff --git a/providers/azurecompute-arm/src/test/resources/creatediskwithtagsresponse.json b/providers/azurecompute-arm/src/test/resources/creatediskwithtagsresponse.json
new file mode 100644
index 0000000..ff9d625
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/creatediskwithtagsresponse.json
@@ -0,0 +1,14 @@
+{
+  "properties": {
+    "creationData": {
+      "createOption": "Empty"
+    },
+    "diskSizeGB": 2,
+    "provisioningState": "Updating",
+    "isArmResource": true
+  },
+  "tags": {
+    "exampleTag": "jclouds-test-tag"
+  },
+  "location": "westeurope"
+}