http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiLiveTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..becfccd
--- /dev/null
+++ 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiLiveTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.azurecompute.arm.features;
+
+import java.net.URI;
+import java.util.List;
+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.Provisionable;
+import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Supplier;
+import com.google.common.collect.Iterables;
+
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+@Test(groups = "live", singleThreaded = true)
+public class DiskApiLiveTest extends BaseAzureComputeApiLiveTest {
+
+   public static final String JCLOUDS_IMAGE_PREFIX = "jclouds-";
+   private String diskName;
+
+   @BeforeClass
+   @Override
+   public void setup() {
+      super.setup();
+      createTestResourceGroup();
+      diskName = JCLOUDS_IMAGE_PREFIX + RAND;
+   }
+
+   @Test
+   public void deleteDiskResourceDoesNotExist() {
+      assertNull(api().delete(JCLOUDS_IMAGE_PREFIX + UUID.randomUUID()));
+   }
+
+   @Test
+   public void createDisk() {
+      DiskProperties properties = 
DiskProperties.builder().creationData(CreationData.create(CreationData.CreateOptions.EMPTY)).diskSizeGB(2).build();
+      Disk dataDisk = api().createOrUpdate(diskName, LOCATION, properties);
+      assertTrue(waitUntilAvailable(diskName), "creation operation did not 
complete in the configured timeout");
+      assertTrue(dataDisk.properties().diskSizeGB() == 2);
+   }
+
+   @Test(dependsOnMethods = "createDisk")
+   public void getDisk() {
+      Disk dataDisk = api().get(diskName);
+      assertNotNull(dataDisk.name());
+      assertTrue(dataDisk.properties().diskSizeGB() == 2);
+   }
+
+   @Test(dependsOnMethods = "createDisk")
+   public void listDisks() {
+      List<Disk> dataDisks = api().list();
+      assertTrue(dataDisks.size() > 0);
+      final Disk dataDisk = api().get(diskName);
+
+      assertTrue(Iterables.any(dataDisks, new Predicate<Disk>() {
+         @Override
+         public boolean apply(Disk input) {
+            return dataDisk.equals(input);
+         }
+      }));
+   }
+
+   @Test(dependsOnMethods = {"listDisks", "getDisk"}, alwaysRun = true)
+   public void deleteDisk() {
+      URI uri = api().delete(diskName);
+      assertNotNull(uri);
+   }
+
+   private DiskApi api() {
+      return api.getDiskApi(resourceGroupName);
+   }
+
+   private boolean waitUntilAvailable(final String name) {
+      return resourceAvailable.apply(new Supplier<Provisionable>() {
+         @Override public Provisionable get() {
+            Disk disk = api().get(name);
+            return disk == null ? null : disk.properties();
+         }
+      });
+   }
+   
+}
+

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiMockTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..4c8ba2e
--- /dev/null
+++ 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DiskApiMockTest.java
@@ -0,0 +1,141 @@
+/*
+ * 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.azurecompute.arm.features;
+
+import java.net.URI;
+import java.util.List;
+
+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.internal.BaseAzureComputeApiMockTest;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import static com.google.common.collect.Iterables.isEmpty;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+
+@Test(groups = "unit", testName = "DiskApiMockTest", singleThreaded = true)
+public class DiskApiMockTest extends BaseAzureComputeApiMockTest {
+
+   private final String subscriptionid = "SUBSCRIPTIONID";
+   private final String resourcegroup = "myresourcegroup";
+   private final String diskName = "myDisk";
+   private final String apiVersion = "api-version=2017-03-30";
+
+   public void createDisk() throws InterruptedException {
+
+      
server.enqueue(jsonResponse("/creatediskresponse.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", properties);
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks/%s?%s",
 subscriptionid, resourcegroup, diskName, apiVersion);
+      String json = 
"{\"location\":\"westus\",\"properties\":{\"diskSizeGB\":2,\"creationData\":{\"createOption\":\"Empty\"}}}";
+      assertSent(server, "PUT", path, json);
+
+      assertEquals(dataDisk.properties().provisioningState(), "Updating");
+      assertTrue(dataDisk.properties().diskSizeGB() == 2);
+   }
+
+   public void getDisk() throws InterruptedException {
+
+      server.enqueue(jsonResponse("/getdisk.json").setResponseCode(200));
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      Disk dataDisk = diskApi.get(diskName);
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks/%s?%s",
 subscriptionid, resourcegroup, diskName, apiVersion);
+      assertSent(server, "GET", path);
+
+      assertEquals(dataDisk.name(), diskName);
+      assertTrue(dataDisk.properties().diskSizeGB() == 2);
+   }
+
+   public void getDiskReturns404() throws InterruptedException {
+      server.enqueue(response404());
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      Disk dataDisk = diskApi.get(diskName);
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks/%s?%s",
 subscriptionid, resourcegroup, diskName, apiVersion);
+      assertSent(server, "GET", path);
+
+      assertNull(dataDisk);
+   }
+
+   public void listDisks() throws InterruptedException {
+
+      server.enqueue(jsonResponse("/listdisks.json").setResponseCode(200));
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      List<Disk> dataDisks = diskApi.list();
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks?%s",
 subscriptionid, resourcegroup, apiVersion);
+      assertSent(server, "GET", path);
+
+      assertTrue(dataDisks.size() > 0);
+   }
+
+   public void listDisksReturns404() throws InterruptedException {
+      server.enqueue(response404());
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      List<Disk> dataDisks = diskApi.list();
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks?%s",
 subscriptionid, resourcegroup, apiVersion);
+      assertSent(server, "GET", path);
+
+      assertTrue(isEmpty(dataDisks));
+   }
+
+   public void deleteDisk() throws InterruptedException {
+
+      server.enqueue(response202WithHeader());
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      URI uri = diskApi.delete(diskName);
+      Assert.assertNotNull(uri);
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks/%s?%s",
 subscriptionid, resourcegroup, diskName, apiVersion);
+      assertSent(server, "DELETE", path);
+   }
+
+   public void deleteDiskResourceDoesNotExist() throws InterruptedException {
+
+      server.enqueue(response204());
+
+      final DiskApi diskApi = api.getDiskApi(resourcegroup);
+
+      URI uri = diskApi.delete(diskName);
+      assertNull(uri);
+
+      String path = 
String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/disks/%s?%s",
 subscriptionid, resourcegroup, diskName, apiVersion);
+      assertSent(server, "DELETE", path);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/ImageApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/ImageApiLiveTest.java
 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/ImageApiLiveTest.java
new file mode 100644
index 0000000..038fc31
--- /dev/null
+++ 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/ImageApiLiveTest.java
@@ -0,0 +1,105 @@
+/*
+ * 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.azurecompute.arm.features;
+
+import java.net.URI;
+import java.util.Collections;
+import java.util.List;
+import java.util.UUID;
+
+import org.jclouds.azurecompute.arm.domain.Image;
+import org.jclouds.azurecompute.arm.domain.ImageProperties;
+import org.jclouds.azurecompute.arm.domain.Provisionable;
+import org.jclouds.azurecompute.arm.domain.VirtualMachine;
+import org.jclouds.azurecompute.arm.domain.VirtualMachineProperties;
+import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Supplier;
+
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+@Test(groups = "live", singleThreaded = true)
+public class ImageApiLiveTest extends BaseAzureComputeApiLiveTest {
+
+   public static final String JCLOUDS_VM_IMAGE_PREFIX = "jclouds-vm-image-";
+   private String imageName;
+   private VirtualMachine virtualMachine;
+
+   @BeforeClass
+   @Override
+   public void setup() {
+      super.setup();
+      createTestResourceGroup();
+      imageName = JCLOUDS_VM_IMAGE_PREFIX + RAND;
+      String vmName = "jclouds-vm-" + RAND;
+
+      virtualMachine = 
api.getVirtualMachineApi(resourceGroupName).createOrUpdate(vmName, LOCATION, 
VirtualMachineProperties.builder().build(),
+              Collections.<String, String> emptyMap(), null);
+   }
+
+   @Test
+   public void deleteImageResourceDoesNotExist() {
+      assertNull(api().delete(JCLOUDS_VM_IMAGE_PREFIX + UUID.randomUUID()));
+   }
+
+   @Test
+   public void CreateVirtualMachineImageFromExistingVM() {
+      String id = 
String.format("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachines/myVM",
 getSubscriptionId(), resourceGroupName);
+      ImageProperties properties = ImageProperties.builder()
+              
.sourceVirtualMachine(ImageProperties.SourceVirtualMachine.create(id))
+              .build();
+      Image image = api().createOrUpdate(imageName, LOCATION, properties);
+      assertTrue(waitUntilAvailable(imageName), "creation operation did not 
complete in the configured timeout");
+      assertTrue(id.equals(image.properties().sourceVirtualMachine().id()));
+   }
+
+   @Test(dependsOnMethods = "CreateVirtualMachineImageFromExistingVM")
+   public void getImage() {
+      Image image = api().get(imageName);
+      assertNotNull(image);
+   }
+
+   @Test(dependsOnMethods = "CreateVirtualMachineImageFromExistingVM")
+   public void listImages() {
+      List<Image> images = api().list();
+      assertTrue(images.size() > 0);
+   }
+
+   @Test(dependsOnMethods = {"listImages", "getImage"}, alwaysRun = true)
+   public void deleteImage() {
+      URI uri = api().delete(imageName);
+      assertNotNull(uri);
+   }
+
+   private ImageApi api() {
+      return api.getVirtualMachineImageApi(resourceGroupName);
+   }
+   
+   private boolean waitUntilAvailable(final String name) {
+      return resourceAvailable.apply(new Supplier<Provisionable>() {
+         @Override public Provisionable get() {
+            Image image = api().get(name);
+            return image == null ? null : image.properties();
+         }
+      });
+   }
+}
+

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java
 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java
index 6fe65e3..ccf1e70 100644
--- 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java
+++ 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java
@@ -30,6 +30,7 @@ import org.jclouds.azurecompute.arm.domain.IdReference;
 import org.jclouds.azurecompute.arm.domain.ImageReference;
 import org.jclouds.azurecompute.arm.domain.IpConfiguration;
 import org.jclouds.azurecompute.arm.domain.IpConfigurationProperties;
+import org.jclouds.azurecompute.arm.domain.ManagedDiskParameters;
 import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard;
 import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCardProperties;
 import org.jclouds.azurecompute.arm.domain.NetworkProfile;
@@ -149,7 +150,13 @@ public class VirtualMachineApiLiveTest extends 
BaseAzureComputeApiLiveTest {
 
       String blob = 
storageService.storageServiceProperties().primaryEndpoints().get("blob");
       VHD vhd = VHD.create(blob + "vhds/" + vmName + "new-data-disk.vhd");
-      DataDisk newDataDisk = DataDisk.create(vmName + "new-data-disk", "1", 1, 
vhd, "Empty");
+      DataDisk newDataDisk = DataDisk.builder()
+              .name(vmName + "new-data-disk")
+              .diskSizeGB("1")
+              .lun(1)
+              .createOption(DataDisk.DiskCreateOptionTypes.EMPTY)
+              .vhd(vhd)
+              .build();
       List<DataDisk> oldDataDisks = oldStorageProfile.dataDisks();
       assertEquals(oldDataDisks.size(), 1);
 
@@ -236,14 +243,18 @@ public class VirtualMachineApiLiveTest extends 
BaseAzureComputeApiLiveTest {
    private VirtualMachineProperties getProperties(String blob, String nic) {
 
       HardwareProfile hwProf = HardwareProfile.create("Standard_D1");
-      ImageReference imgRef = 
ImageReference.create("MicrosoftWindowsServerEssentials",
-              "WindowsServerEssentials", "WindowsServerEssentials", "latest");
-      VHD vhd = VHD.create(blob + "vhds/" + vmName + ".vhd");
-      VHD vhd2 = VHD.create(blob + "vhds/" + vmName + "data.vhd");
-      DataDisk dataDisk = DataDisk.create(vmName + "data", "100", 0, vhd2, 
"Empty");
+      ImageReference imgRef = 
ImageReference.builder().publisher("MicrosoftWindowsServerEssentials")
+              
.offer("WindowsServerEssentials").sku("WindowsServerEssentials").version("latest").build();
+      DataDisk dataDisk = 
DataDisk.builder().name("data").diskSizeGB("100").lun(0).createOption(DataDisk.DiskCreateOptionTypes.EMPTY).build();
       List<DataDisk> dataDisks = new ArrayList<DataDisk>();
       dataDisks.add(dataDisk);
-      OSDisk osDisk = OSDisk.create(null, vmName, vhd, "ReadWrite", 
"FromImage", null);
+
+      OSDisk osDisk = OSDisk.builder()
+              .osType("Windows")
+              .caching(DataDisk.CachingTypes.READ_WRITE.toString())
+              .createOption("FromImage")
+              .managedDiskParameters(ManagedDiskParameters.create(null, 
ManagedDiskParameters.StorageAccountTypes.STANDARD_LRS.toString()))
+              .build();
       StorageProfile storageProfile = StorageProfile.create(imgRef, osDisk, 
dataDisks);
       OSProfile.WindowsConfiguration windowsConfig = 
OSProfile.WindowsConfiguration.create(false, null, null, true,
               null);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java
 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java
index 0c03fb1..34b59c3 100644
--- 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java
+++ 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java
@@ -16,12 +16,6 @@
  */
 package org.jclouds.azurecompute.arm.features;
 
-import static com.google.common.collect.Iterables.isEmpty;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
 import java.net.URI;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -38,12 +32,12 @@ import org.jclouds.azurecompute.arm.domain.NetworkProfile;
 import org.jclouds.azurecompute.arm.domain.OSDisk;
 import org.jclouds.azurecompute.arm.domain.OSProfile;
 import org.jclouds.azurecompute.arm.domain.Plan;
+import org.jclouds.azurecompute.arm.domain.Status;
 import org.jclouds.azurecompute.arm.domain.StorageProfile;
 import org.jclouds.azurecompute.arm.domain.VHD;
 import org.jclouds.azurecompute.arm.domain.VirtualMachine;
 import org.jclouds.azurecompute.arm.domain.VirtualMachineInstance;
 import org.jclouds.azurecompute.arm.domain.VirtualMachineProperties;
-import org.jclouds.azurecompute.arm.domain.Status;
 import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiMockTest;
 import org.testng.annotations.Test;
 
@@ -51,6 +45,12 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.squareup.okhttp.mockwebserver.MockResponse;
 
+import static com.google.common.collect.Iterables.isEmpty;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
 @Test(groups = "unit", testName = "VirtualMachineApiMockTest", singleThreaded 
= true)
 public class VirtualMachineApiMockTest extends BaseAzureComputeApiMockTest {
 
@@ -60,7 +60,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       assertEquals(vmAPI.get("windowsmachine"),
             getVM(Plan.create("thinkboxsoftware", "deadline-slave-7-2", 
"deadline7-2")));
       assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/windowsmachine?api-version=2016-03-30");
+            + 
"/virtualMachines/windowsmachine?api-version=2016-04-30-preview");
    }
 
    public void testGetEmpty() throws Exception {
@@ -68,7 +68,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname");
       assertNull(vmAPI.get("windowsmachine"));
       assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/windowsmachine?api-version=2016-03-30");
+            + 
"/virtualMachines/windowsmachine?api-version=2016-04-30-preview");
    }
 
    public void testGetInstanceDetails() throws Exception {
@@ -83,7 +83,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       // assertEquals(actual.statuses().get(0).time().toString(),
       // expected.statuses().get(0).time().toString());
       assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + 
"/virtualMachines/windowsmachine/instanceView?api-version=2016-03-30");
+            + 
"/virtualMachines/windowsmachine/instanceView?api-version=2016-04-30-preview");
    }
 
    public void testGetInstanceDetailsEmpty() throws Exception {
@@ -91,7 +91,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname");
       assertNull(vmAPI.getInstanceDetails("windowsmachine"));
       assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + 
"/virtualMachines/windowsmachine/instanceView?api-version=2016-03-30");
+            + 
"/virtualMachines/windowsmachine/instanceView?api-version=2016-04-30-preview");
    }
 
    public void testList() throws Exception {
@@ -99,7 +99,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname");
       assertEquals(vmAPI.list(), getVMList());
       assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines?api-version=2015-06-15");
+            + "/virtualMachines?api-version=2016-04-30-preview");
    }
 
    public void testListEmpty() throws Exception {
@@ -107,7 +107,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname");
       assertTrue(isEmpty(vmAPI.list()));
       assertSent(server, "GET", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines?api-version=2015-06-15");
+            + "/virtualMachines?api-version=2016-04-30-preview");
    }
 
    public void testCreateWithPlan() throws Exception {
@@ -121,7 +121,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
             server,
             "PUT",
             
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-                  + 
"/virtualMachines/windowsmachine?validating=false&api-version=2016-03-30",
+                  + 
"/virtualMachines/windowsmachine?validating=false&api-version=2016-04-30-preview",
             
"{\"location\":\"westus\",\"tags\":{\"foo\":\"bar\"},\"properties\":"
                   + "{\"vmId\":\"27ee085b-d707-xxxx-yyyy-2370e2eb1cc1\","
                   + "\"hardwareProfile\":{\"vmSize\":\"Standard_D1\"},"
@@ -144,7 +144,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
             server,
             "PUT",
             
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-                  + 
"/virtualMachines/windowsmachine?validating=false&api-version=2016-03-30",
+                  + 
"/virtualMachines/windowsmachine?validating=false&api-version=2016-04-30-preview",
             
"{\"location\":\"westus\",\"tags\":{\"foo\":\"bar\"},\"properties\":"
                   + "{\"vmId\":\"27ee085b-d707-xxxx-yyyy-2370e2eb1cc1\","
                   + "\"hardwareProfile\":{\"vmSize\":\"Standard_D1\"},"
@@ -167,7 +167,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       assertNull(uri);
 
       assertSent(server, "DELETE", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/windowsmachine?api-version=2016-03-30");
+            + 
"/virtualMachines/windowsmachine?api-version=2016-04-30-preview");
    }
 
    public void testDelete() throws Exception {
@@ -181,7 +181,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       assertNotNull(uri);
 
       assertSent(server, "DELETE", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/windowsmachine?api-version=2016-03-30");
+            + 
"/virtualMachines/windowsmachine?api-version=2016-04-30-preview");
    }
 
    public void testStart() throws Exception {
@@ -192,7 +192,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       vmAPI.start("windowsmachine");
 
       assertSent(server, "POST", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/windowsmachine/start?api-version=2015-06-15");
+            + 
"/virtualMachines/windowsmachine/start?api-version=2016-04-30-preview");
    }
 
    public void testRestart() throws Exception {
@@ -203,7 +203,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       vmAPI.restart("windowsmachine");
 
       assertSent(server, "POST", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + 
"/virtualMachines/windowsmachine/restart?api-version=2015-06-15");
+            + 
"/virtualMachines/windowsmachine/restart?api-version=2016-04-30-preview");
    }
 
    public void testStop() throws Exception {
@@ -214,7 +214,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       vmAPI.stop("windowsmachine");
 
       assertSent(server, "POST", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + 
"/virtualMachines/windowsmachine/powerOff?api-version=2015-06-15");
+            + 
"/virtualMachines/windowsmachine/powerOff?api-version=2016-04-30-preview");
    }
 
    public void testGeneralize() throws Exception {
@@ -222,7 +222,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname");
       vmAPI.generalize("vm"); // IllegalStateException if failed
       assertSent(server, "POST", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/vm/generalize?api-version=2015-06-15");
+            + "/virtualMachines/vm/generalize?api-version=2016-04-30-preview");
    }
 
    public void testCapture() throws Exception {
@@ -232,7 +232,7 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       URI uri = vmAPI.capture("vm", "prefix", "container");
       assertNotNull(uri);
       assertSent(server, "POST", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/vm/capture?api-version=2015-06-15",
+            + "/virtualMachines/vm/capture?api-version=2016-04-30-preview",
             
"{\"vhdPrefix\":\"prefix\",\"destinationContainerName\":\"container\"}");
    }
 
@@ -243,16 +243,16 @@ public class VirtualMachineApiMockTest extends 
BaseAzureComputeApiMockTest {
       URI uri = vmAPI.capture("vm", "prefix", "container");
       assertNull(uri);
       assertSent(server, "POST", 
"/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute"
-            + "/virtualMachines/vm/capture?api-version=2015-06-15",
+            + "/virtualMachines/vm/capture?api-version=2016-04-30-preview",
             
"{\"vhdPrefix\":\"prefix\",\"destinationContainerName\":\"container\"}");
    }
 
    private VirtualMachineProperties getProperties() {
       HardwareProfile hwProf = HardwareProfile.create("Standard_D1");
-      ImageReference imgRef = ImageReference.create("publisher", "offer", 
"sku", "ver");
+      ImageReference imgRef = 
ImageReference.builder().publisher("publisher").offer("offer").sku("sku").version("ver").build();
       VHD vhd = 
VHD.create("https://groupname2760.blob.core.windows.net/vhds/windowsmachine201624102936.vhd";);
       List<DataDisk> dataDisks = new ArrayList<DataDisk>();
-      OSDisk osDisk = OSDisk.create("Windows", "windowsmachine", vhd, 
"ReadWrite", "FromImage", null);
+      OSDisk osDisk = OSDisk.create("Windows", "windowsmachine", vhd, 
"ReadWrite", "FromImage", null, null);
       StorageProfile storageProfile = StorageProfile.create(imgRef, osDisk, 
dataDisks);
       OSProfile.WindowsConfiguration windowsConfig = 
OSProfile.WindowsConfiguration.create(false, null, null, true,
             null);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java
----------------------------------------------------------------------
diff --git 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java
 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java
index 8cd662a..6006392 100644
--- 
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java
+++ 
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java
@@ -16,6 +16,9 @@
  */
 package org.jclouds.azurecompute.arm.internal;
 
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
 import static 
org.jclouds.azurecompute.arm.config.AzureComputeProperties.IMAGE_PUBLISHERS;
 import static 
org.jclouds.compute.config.ComputeServiceProperties.RESOURCENAME_PREFIX;
 import static 
org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING;
@@ -27,15 +30,12 @@ import static 
org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
 import static 
org.jclouds.oauth.v2.config.CredentialType.CLIENT_CREDENTIALS_SECRET;
 import static org.jclouds.oauth.v2.config.OAuthProperties.CREDENTIAL_TYPE;
 
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
 public class AzureLiveTestUtils {
 
     public static Properties defaultProperties(Properties properties) {
        properties = properties == null ? new Properties() : properties;
        properties.put(CREDENTIAL_TYPE, CLIENT_CREDENTIALS_SECRET.toString());
-       properties.put(PROPERTY_REGIONS, "eastus");
+       properties.put(PROPERTY_REGIONS, "westeurope");
        properties.put(IMAGE_PUBLISHERS, "Canonical");
        properties.put(RESOURCENAME_PREFIX, "jcloudstest");
        

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/resources/creatediskresponse.json
----------------------------------------------------------------------
diff --git 
a/providers/azurecompute-arm/src/test/resources/creatediskresponse.json 
b/providers/azurecompute-arm/src/test/resources/creatediskresponse.json
new file mode 100644
index 0000000..1fcc2bb
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/creatediskresponse.json
@@ -0,0 +1,11 @@
+{
+  "properties": {
+    "creationData": {
+      "createOption": "Empty"
+    },
+    "diskSizeGB": 2,
+    "provisioningState": "Updating",
+    "isArmResource": true
+  },
+  "location": "westeurope"
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/resources/getdisk.json
----------------------------------------------------------------------
diff --git a/providers/azurecompute-arm/src/test/resources/getdisk.json 
b/providers/azurecompute-arm/src/test/resources/getdisk.json
new file mode 100644
index 0000000..db09d8d
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/getdisk.json
@@ -0,0 +1,19 @@
+{
+  "sku": {
+    "name": "Standard_LRS",
+    "tier": "Standard"
+  },
+  "properties": {
+    "creationData": {
+      "createOption": "Empty"
+    },
+    "diskSizeGB": 2,
+    "timeCreated": "2017-03-01T09:38:18.5808215+00:00",
+    "provisioningState": "Succeeded",
+    "diskState": "Unattached"
+  },
+  "type": "Microsoft.Compute/disks",
+  "location": "westeurope",
+  "id": 
"/subscriptions/610bba05-d7a7-4567-96af-48ecbd09453b/resourceGroups/rg-diskapilivetest-andrea/providers/Microsoft.Compute/disks/myDisk",
+  "name": "myDisk"
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/resources/image.json
----------------------------------------------------------------------
diff --git a/providers/azurecompute-arm/src/test/resources/image.json 
b/providers/azurecompute-arm/src/test/resources/image.json
new file mode 100644
index 0000000..3dbdf11
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/image.json
@@ -0,0 +1,43 @@
+{
+  "location": "West US",
+  "tags": {
+    "key": "value"
+  },
+  "properties": {
+    "sourceVirtualMachine": {
+      "id": 
"/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM"
+    },
+    "storageProfile": {
+      "osDisk": {
+        "osType": "Windows",
+        "blobUri": 
"https://mystorageaccount.blob.core.windows.net/osimages/osimage.vhd";,
+        "snapshot": {
+          "id": 
"subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/snapshots/mySnapshot1"
+        },
+        "managedDisk": {
+          "id": 
"subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myManagedDisk1"
+        },
+        "osState": "generalized",
+        "hostCaching": "readwrite",
+        "storageAccountType": "Standard_LRS",
+        "diskSizeGB": 20
+      },
+      "dataDisks": [
+        {
+          "lun": "1",
+          "blobUri": 
"https://mystorageaccount.blob.core.windows.net/dataimages/dataimage.vhd";,
+          "snapshot": {
+            "id": 
"subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/snapshots/mySnapshot2"
+          },
+          "managedDisk": {
+            "id": 
"subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myManagedDisk2"
+          },
+          "hostCaching": "readwrite",
+          "storageAccountType": "Standard_LRS",
+          "diskSizeInGB": 20
+        }
+      ]
+    },
+    "provisioningState": "creating"
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/37dcb87d/providers/azurecompute-arm/src/test/resources/listdisks.json
----------------------------------------------------------------------
diff --git a/providers/azurecompute-arm/src/test/resources/listdisks.json 
b/providers/azurecompute-arm/src/test/resources/listdisks.json
new file mode 100644
index 0000000..c84c561
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/listdisks.json
@@ -0,0 +1,23 @@
+{
+  "value": [
+    {
+      "sku": {
+        "name": "Standard_LRS",
+        "tier": "Standard"
+      },
+      "properties": {
+        "creationData": {
+          "createOption": "Empty"
+        },
+        "diskSizeGB": 2,
+        "timeCreated": "2017-03-01T09:48:27.4526118+00:00",
+        "provisioningState": "Succeeded",
+        "diskState": "Unattached"
+      },
+      "type": "Microsoft.Compute/disks",
+      "location": "westeurope",
+      "id": 
"/subscriptions/610bba05-d7a7-4567-96af-48ecbd09453b/resourceGroups/rg-diskapilivetest-andrea/providers/Microsoft.Compute/disks/jclouds-646",
+      "name": "jclouds-646"
+    }
+  ]
+}

Reply via email to