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/09/17 16:48:41 UTC
[jclouds] branch 2.1.x updated: Add azure disk sku (#45)
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 789ac7c Add azure disk sku (#45)
789ac7c is described below
commit 789ac7cec9fda5b11b77d5f2c5fdbc8ca3786110
Author: Simone Locci <si...@cloudesire.com>
AuthorDate: Tue Sep 17 17:48:32 2019 +0200
Add azure disk sku (#45)
* Add azure disk SKU
* Add tests
* Fix review adding a disk type enum
* Fix review using storage account type enum
---
.../{StorageAccountType.java => DiskSku.java} | 46 +++++++++++-----------
.../arm/domain/StorageAccountType.java | 12 ++++--
.../jclouds/azurecompute/arm/features/DiskApi.java | 11 ++++++
.../azurecompute/arm/features/DiskApiLiveTest.java | 5 ++-
.../azurecompute/arm/features/DiskApiMockTest.java | 23 +++++++++++
.../creatediskwithtagsandskuresponse.json | 17 ++++++++
6 files changed, 87 insertions(+), 27 deletions(-)
diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/DiskSku.java
similarity index 52%
copy from providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java
copy to providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/DiskSku.java
index 33e1109..3fb86f4 100644
--- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java
+++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/DiskSku.java
@@ -16,32 +16,32 @@
*/
package org.jclouds.azurecompute.arm.domain;
-public enum StorageAccountType {
- /** Enum value Standard_LRS. */
- STANDARD_LRS("Standard_LRS"),
+import com.google.auto.value.AutoValue;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
- /** Enum value Premium_LRS. */
- PREMIUM_LRS("Premium_LRS");
+@AutoValue
+public abstract class DiskSku
+{
+ @Nullable
+ public abstract StorageAccountType name();
- /** The actual serialized value for a StorageAccountTypes instance. */
- private String value;
+ @SerializedNames({"name"})
+ public static DiskSku create(final StorageAccountType storageAccountType) {
+ return builder()
+ .name(storageAccountType)
+ .build();
+ }
- StorageAccountType(String value) {
- this.value = value;
- }
+ public abstract Builder toBuilder();
- public static StorageAccountType fromString(String value) {
- StorageAccountType[] items = StorageAccountType.values();
- for (StorageAccountType item : items) {
- if (item.toString().equalsIgnoreCase(value)) {
- return item;
- }
- }
- return null;
- }
+ public static Builder builder() {
+ return new AutoValue_DiskSku.Builder();
+ }
- @Override
- public String toString() {
- return this.value;
- }
+ @AutoValue.Builder
+ public abstract static class Builder {
+ public abstract Builder name(StorageAccountType storageAccountType);
+ public abstract DiskSku build();
+ }
}
diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java
index 33e1109..c556ae9 100644
--- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java
+++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageAccountType.java
@@ -17,11 +17,17 @@
package org.jclouds.azurecompute.arm.domain;
public enum StorageAccountType {
- /** Enum value Standard_LRS. */
+ /** Enum value Standard HDD. */
STANDARD_LRS("Standard_LRS"),
- /** Enum value Premium_LRS. */
- PREMIUM_LRS("Premium_LRS");
+ /** Enum value Standard SSD. */
+ STANDARD_SSD_LRS("StandardSSD_LRS"),
+
+ /** Enum value Premium SSD. */
+ PREMIUM_LRS("Premium_LRS"),
+
+ /** Enum value Ultra SSD (Available only if your subscription is enabled for ultra disks). */
+ ULTRA_SSD_LRS("UltraSSD_LRS");
/** The actual serialized value for a StorageAccountTypes instance. */
private String value;
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 e8b6cf2..407b8df 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
@@ -33,6 +33,7 @@ import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.azurecompute.arm.domain.Disk;
import org.jclouds.azurecompute.arm.domain.DiskProperties;
+import org.jclouds.azurecompute.arm.domain.DiskSku;
import org.jclouds.azurecompute.arm.filters.ApiVersionFilter;
import org.jclouds.azurecompute.arm.functions.URIParser;
import org.jclouds.javax.annotation.Nullable;
@@ -73,6 +74,16 @@ public interface DiskApi {
@Nullable @PayloadParam("tags") Map<String, String> tags,
@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,
+ @Nullable @PayloadParam("sku") DiskSku sku);
+
@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 7975522..9ceb6db 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
@@ -23,6 +23,7 @@ import java.util.UUID;
import org.jclouds.azurecompute.arm.domain.CreationData;
import org.jclouds.azurecompute.arm.domain.Disk;
import org.jclouds.azurecompute.arm.domain.DiskProperties;
+import org.jclouds.azurecompute.arm.domain.DiskSku;
import org.jclouds.azurecompute.arm.domain.Provisionable;
import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
import org.testng.annotations.BeforeClass;
@@ -33,6 +34,7 @@ import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+import static org.jclouds.azurecompute.arm.domain.StorageAccountType.PREMIUM_LRS;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
@@ -59,7 +61,8 @@ 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, ImmutableMap.of("exampleTag", "jclouds-test-tag"), properties);
+ DiskSku sku = DiskSku.builder().name(PREMIUM_LRS).build();
+ Disk dataDisk = api().createOrUpdate(diskName, LOCATION, ImmutableMap.of("exampleTag", "jclouds-test-tag"), properties, sku);
assertTrue(waitUntilAvailable(diskName), "creation operation did not complete in the configured timeout");
assertTrue(dataDisk.properties().diskSizeGB() == 2);
assertTrue(dataDisk.tags().containsValue("jclouds-test-tag"));
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 d3a0ca0..47aeb16 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
@@ -23,11 +23,13 @@ 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;
+import org.jclouds.azurecompute.arm.domain.DiskSku;
import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiMockTest;
import org.testng.Assert;
import org.testng.annotations.Test;
import static com.google.common.collect.Iterables.isEmpty;
+import static org.jclouds.azurecompute.arm.domain.StorageAccountType.PREMIUM_LRS;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
@@ -78,6 +80,27 @@ public class DiskApiMockTest extends BaseAzureComputeApiMockTest {
assertTrue(dataDisk.tags().containsValue("jclouds-test-tag"));
}
+ public void createDiskWithTagsAndSku() throws InterruptedException {
+
+ server.enqueue(jsonResponse("/creatediskwithtagsandskuresponse.json").setResponseCode(200));
+
+ final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+ DiskProperties properties = DiskProperties.builder().diskSizeGB(2).creationData(CreationData.create(CreationData.CreateOptions.EMPTY)).build();
+
+ DiskSku sku = DiskSku.builder().name(PREMIUM_LRS).build();
+
+ Disk dataDisk = diskApi.createOrUpdate(diskName, "westus", ImmutableMap.of("exampleTag", "jclouds-test-tag"), properties, sku);
+
+ 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\"}},\"sku\":{\"name\":\"Premium_LRS\"}}";
+ 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/creatediskwithtagsandskuresponse.json b/providers/azurecompute-arm/src/test/resources/creatediskwithtagsandskuresponse.json
new file mode 100644
index 0000000..8c3a3d4
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/creatediskwithtagsandskuresponse.json
@@ -0,0 +1,17 @@
+{
+ "properties": {
+ "creationData": {
+ "createOption": "Empty"
+ },
+ "diskSizeGB": 2,
+ "provisioningState": "Updating",
+ "isArmResource": true
+ },
+ "tags": {
+ "exampleTag": "jclouds-test-tag"
+ },
+ "sku": {
+ "name": "Premium_LRS"
+ },
+ "location": "westeurope"
+}