You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/05 19:50:17 UTC

[09/20] JCLOUDS-664 Updating Azure compute provider

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListHostedServicesTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListHostedServicesTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListHostedServicesTest.java
new file mode 100644
index 0000000..3eaf136
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListHostedServicesTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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.parse;
+
+import com.google.common.collect.ImmutableList;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.List;
+import org.jclouds.azurecompute.domain.DetailedHostedServiceProperties;
+import org.jclouds.azurecompute.domain.HostedService.Status;
+import org.jclouds.azurecompute.domain.HostedServiceWithDetailedProperties;
+import org.jclouds.azurecompute.xml.ListHostedServicesHandler;
+import org.jclouds.date.DateService;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.assertEquals;
+
+@Test(groups = "unit", testName = "ListHostedServicesTest")
+public class ListHostedServicesTest extends BaseHandlerTest {
+
+   public void test() {
+      InputStream is = getClass().getResourceAsStream("/hostedservices.xml");
+
+      List<HostedServiceWithDetailedProperties> expected = expected();
+
+      ListHostedServicesHandler handler = injector.getInstance(ListHostedServicesHandler.class);
+      List<HostedServiceWithDetailedProperties> result = factory.create(handler).parse(is);
+
+      assertEquals(result.toString(), expected.toString());
+
+   }
+
+   private static final DateService dateService = new SimpleDateFormatDateService();
+
+   public static List<HostedServiceWithDetailedProperties> expected() {
+      return ImmutableList.<HostedServiceWithDetailedProperties>builder()
+                         .add(HostedServiceWithDetailedProperties.builder()
+                                      .url(URI.create("https://management.core.windows.net/eb0347c3-68d4-4550-9b39-5e7e0f92f7db/services/hostedservices/neotys"))
+                                      .name("neotys")
+                                      .properties(DetailedHostedServiceProperties.builder()
+                                               .description("Implicitly created hosted service2012-08-06  14:55")
+                                               .location("West Europe")
+                                               .label("neotys")
+                                               .rawStatus("Created")
+                                               .status(Status.CREATED)
+                                               .created(dateService.iso8601SecondsDateParse("2012-08-06T14:55:17Z"))
+                                               .lastModified(dateService.iso8601SecondsDateParse("2012-08-06T15:50:34Z"))
+                                               .build())
+                                      .build())
+                         .add(HostedServiceWithDetailedProperties.builder()
+                                      .url(URI.create("https://management.core.windows.net/eb0347c3-68d4-4550-9b39-5e7e0f92f7db/services/hostedservices/neotys3"))
+                                      .name("neotys3")
+                                      .properties(DetailedHostedServiceProperties.builder()
+                                               .location("West Europe")
+                                               .label("neotys3")
+                                               .rawStatus("Created")
+                                               .status(Status.CREATED)
+                                               .created(dateService.iso8601SecondsDateParse("2012-08-07T09:00:02Z"))
+                                               .lastModified(dateService.iso8601SecondsDateParse("2012-08-07T09:00:02Z"))
+                                               .build())
+                                      .build()).build();
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListImagesTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListImagesTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListImagesTest.java
new file mode 100644
index 0000000..d9e19b3
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListImagesTest.java
@@ -0,0 +1,117 @@
+/*
+ * 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.parse;
+
+import com.google.common.collect.ImmutableList;
+import java.io.InputStream;
+import java.util.List;
+import org.jclouds.azurecompute.domain.Image;
+import org.jclouds.azurecompute.domain.OSType;
+import org.jclouds.azurecompute.xml.ListImagesHandler;
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.testng.annotations.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@Test(groups = "unit", testName = "ListOSImagesTest")
+public class ListImagesTest extends BaseHandlerTest {
+
+   public void test() {
+      InputStream is = getClass().getResourceAsStream("/images.xml");
+
+      ListImagesHandler handler = injector.getInstance(ListImagesHandler.class);
+      List<Image> result = factory.create(handler).parse(is);
+
+      assertThat(result).usingFieldByFieldElementComparator().containsExactlyElementsOf(expected());
+   }
+
+   public static List<Image> expected() {
+      return ImmutableList.<Image>builder()
+         .add(Image.builder()
+                   .category("Canonical")
+                   .label("Ubuntu Server 12.04 LTS")
+                   .logicalSizeInGB(30)
+                   .name("CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd")
+                   .os(OSType.LINUX)
+                   .eula("http://www.ubuntu.com/project/about-ubuntu/licensing")
+                   .description("Ubuntu Server 12.04 LTS amd64 20120528 Cloud Image").build())
+         .add(Image.builder()
+                   .category("Microsoft")
+                   .label("Windows Server 2008 R2 SP1, June 2012")
+                   .logicalSizeInGB(30)
+                   .name("MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd")
+                   .os(OSType.WINDOWS)
+                   .description("Windows Server 2008 R2 is a multi-purpose server.").build())
+         .add(Image.builder()
+                   .category("Microsoft")
+                   .label("Microsoft SQL Server 2012 Evaluation Edition")
+                   .logicalSizeInGB(30)
+                   .name("MSFT__Sql-Server-11EVAL-11.0.2215.0-05152012-en-us-30GB.vhd")
+                   .os(OSType.WINDOWS)
+                   .eula("http://go.microsoft.com/fwlink/?LinkID=251820") // NOTE multiple eula.
+                   .eula("http://go.microsoft.com/fwlink/?LinkID=131004")
+                   .description("SQL Server 2012 Evaluation Edition (64-bit).").build())
+         .add(Image.builder()
+                   .category("Microsoft")
+                   .label("Windows Server 2012 Release Candidate, July 2012")
+                   .logicalSizeInGB(30)
+                   .name("MSFT__Win2K12RC-Datacenter-201207.02-en.us-30GB.vhd")
+                   .os(OSType.WINDOWS)
+                   .description("Windows Server 2012 incorporates Microsoft's experience building.").build())
+         .add(Image.builder()
+                   .category("Microsoft")
+                   .label("Windows Server 2008 R2 SP1, July 2012")
+                   .logicalSizeInGB(30)
+                   .name("MSFT__Win2K8R2SP1-Datacenter-201207.01-en.us-30GB.vhd")
+                   .os(OSType.WINDOWS)
+                   .description("Windows Server 2008 R2 is a multi-purpose server.")
+                   .build())
+         .add(Image.builder()
+                   .category("OpenLogic")
+                   .label("OpenLogic CentOS 6.2")
+                   .logicalSizeInGB(30)
+                   .name("OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd")
+                   .os(OSType.LINUX)
+                   .eula("http://www.openlogic.com/azure/service-agreement/")
+                   .description("This distribution of Linux is based on CentOS.").build())
+         .add(Image.builder()
+                   .category("SUSE")
+                   .label("openSUSE 12.1")
+                   .logicalSizeInGB(30)
+                   .name("SUSE__openSUSE-12-1-20120603-en-us-30GB.vhd")
+                   .os(OSType.LINUX)
+                   .eula("http://opensuse.org/")
+                   .description("openSUSE is a free and Linux-based operating system!")
+                   .build())
+         .add(Image.builder()
+                   .category("SUSE")
+                   .label("SUSE Linux Enterprise Server")
+                   .logicalSizeInGB(30)
+                   .name("SUSE__SUSE-Linux-Enterprise-Server-11SP2-20120601-en-us-30GB.vhd")
+                   .os(OSType.LINUX)
+                   .eula("http://www.novell.com/licensing/eula/")
+                   .description("SUSE Linux Enterprise Server is a highly reliable value.").build())
+         .add(Image.builder()
+                   .category("RightScale with Linux")
+                   .label("RightImage-CentOS-6.4-x64-v13.4")
+                   .logicalSizeInGB(10)
+                   .name("0b11de9248dd4d87b18621318e037d37__RightImage-CentOS-6.4-x64-v13.4")
+                   .os(OSType.LINUX) // No EULA, as RightScale stuffed ';' into the field.
+                   .build()).build();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListLocationsTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListLocationsTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListLocationsTest.java
new file mode 100644
index 0000000..5ec96b1
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/parse/ListLocationsTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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.parse;
+
+import com.google.common.collect.ImmutableList;
+import java.io.InputStream;
+import java.util.List;
+import org.jclouds.azurecompute.domain.Location;
+import org.jclouds.azurecompute.xml.ListLocationsHandler;
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.assertEquals;
+
+@Test(groups = "unit", testName = "LocationsTest")
+public class ListLocationsTest extends BaseHandlerTest {
+
+   public void test() {
+      InputStream is = getClass().getResourceAsStream("/locations.xml");
+
+      List<Location> expected = expected();
+
+      ListLocationsHandler handler = injector.getInstance(ListLocationsHandler.class);
+      List<Location> result = factory.create(handler).parse(is);
+
+      assertEquals(result.toString(), expected.toString());
+
+   }
+
+   public static List<Location> expected() {
+      List<String> availableServices = ImmutableList.of("Compute", "Storage", "PersistentVMRole");
+      return ImmutableList.<Location>builder()
+                         .add(Location.builder()
+                                      .name("West US")
+                                      .displayName("West US")
+                                      .availableServices(availableServices)
+                                      .build())
+                         .add(Location.builder()
+                                      .name("East US")
+                                      .displayName("East US")
+                                      .availableServices(availableServices)
+                                      .build())
+                         .add(Location.builder()
+                                      .name("East Asia")
+                                      .displayName("East Asia")
+                                      .availableServices(availableServices)
+                                      .build())
+                         .add(Location.builder()
+                                      .name("Southeast Asia")
+                                      .displayName("Southeast Asia")
+                                      .availableServices(availableServices)
+                                      .build())
+                         .add(Location.builder()
+                                      .name("North Europe")
+                                      .displayName("North Europe")
+                                      .availableServices(availableServices)
+                                      .build())
+                         .add(Location.builder()
+                                      .name("West Europe")
+                                      .displayName("West Europe")
+                                      .availableServices(availableServices)
+                                      .build()).build();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/azure-test.p12
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/azure-test.p12 b/azurecompute/src/test/resources/azure-test.p12
new file mode 100644
index 0000000..5250dd6
Binary files /dev/null and b/azurecompute/src/test/resources/azure-test.p12 differ

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/capturerolepayload.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/capturerolepayload.xml b/azurecompute/src/test/resources/capturerolepayload.xml
new file mode 100644
index 0000000..9414c52
--- /dev/null
+++ b/azurecompute/src/test/resources/capturerolepayload.xml
@@ -0,0 +1 @@
+<CaptureRoleOperation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><OperationType>CaptureRoleOperation</OperationType><PostCaptureAction>Delete</PostCaptureAction><TargetImageLabel>myImageLabel</TargetImageLabel><TargetImageName>myImageName</TargetImageName></CaptureRoleOperation>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/create_hostedservice_location.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/create_hostedservice_location.xml b/azurecompute/src/test/resources/create_hostedservice_location.xml
new file mode 100644
index 0000000..076f562
--- /dev/null
+++ b/azurecompute/src/test/resources/create_hostedservice_location.xml
@@ -0,0 +1 @@
+<CreateHostedService xmlns="http://schemas.microsoft.com/windowsazure"><ServiceName>myservice</ServiceName><Label>c2VydmljZSBtaW5l</Label><Location>West US</Location></CreateHostedService>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/create_hostedservice_location_options.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/create_hostedservice_location_options.xml b/azurecompute/src/test/resources/create_hostedservice_location_options.xml
new file mode 100644
index 0000000..9f7f8f0
--- /dev/null
+++ b/azurecompute/src/test/resources/create_hostedservice_location_options.xml
@@ -0,0 +1 @@
+<CreateHostedService xmlns="http://schemas.microsoft.com/windowsazure"><ServiceName>myservice</ServiceName><Label>c2VydmljZSBtaW5l</Label><Description>my description</Description><Location>West US</Location><ExtendedProperties><ExtendedProperty><Name>Role</Name><Value>Production</Value></ExtendedProperty></ExtendedProperties></CreateHostedService>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/deployment.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/deployment.xml b/azurecompute/src/test/resources/deployment.xml
new file mode 100644
index 0000000..c44fc7a
--- /dev/null
+++ b/azurecompute/src/test/resources/deployment.xml
@@ -0,0 +1,70 @@
+<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
+    <Name>neotysss</Name>
+    <DeploymentSlot>Production</DeploymentSlot>
+    <PrivateID>05aa8ec5d8ee4215894431c7db401b31</PrivateID>
+    <Status>Running</Status>
+    <Label>bmVvdHlzc3M=</Label>
+    <Url>http://neotysss.cloudapp.net/</Url>
+    <Configuration>PFNlcnZpY2VDb25maWd1cmF0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlcnZpY2VIb3N0aW5nLzIwMDgvMTAvU2VydmljZUNvbmZpZ3VyYXRpb24iPg0KICA8Um9sZSBuYW1lPSJuZW90eXNzcyI+DQogICAgPEluc3RhbmNlcyBjb3VudD0iMSIgLz4NCiAgPC9Sb2xlPg0KPC9TZXJ2aWNlQ29uZmlndXJhdGlvbj4=</Configuration>
+    <RoleInstanceList>
+        <RoleInstance>
+        <RoleName>neotysss</RoleName>
+        <InstanceName>neotysss</InstanceName>
+        <InstanceStatus>ReadyRole</InstanceStatus>
+        <InstanceUpgradeDomain>0</InstanceUpgradeDomain>
+        <InstanceFaultDomain>0</InstanceFaultDomain>
+        <InstanceSize>Medium</InstanceSize>
+        <InstanceStateDetails/>
+        <IpAddress>10.59.244.162</IpAddress>
+        <InstanceEndpoints>
+        <InstanceEndpoint>
+            <Name>SSH</Name>
+            <Vip>168.63.27.148</Vip>
+            <PublicPort>22</PublicPort>
+            <LocalPort>22</LocalPort>
+            <Protocol>tcp</Protocol>
+        </InstanceEndpoint>
+        </InstanceEndpoints>
+        <PowerState>Started</PowerState>
+        <HostName>neotys</HostName>
+    </RoleInstance>
+    </RoleInstanceList>
+    <UpgradeDomainCount>1</UpgradeDomainCount>
+    <RoleList>
+        <Role i:type="PersistentVMRole">
+        <RoleName>neotysss</RoleName>
+        <OsVersion/>
+        <RoleType>PersistentVMRole</RoleType>
+        <ConfigurationSets>
+        <ConfigurationSet i:type="NetworkConfigurationSet">
+            <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
+            <InputEndpoints>
+            <InputEndpoint>
+                <LocalPort>22</LocalPort>
+                <Name>SSH</Name>
+                <Port>22</Port>
+                <Protocol>tcp</Protocol>
+                <Vip>168.63.27.148</Vip>
+            </InputEndpoint>
+            </InputEndpoints>
+            <SubnetNames/>
+        </ConfigurationSet>
+        </ConfigurationSets>
+        <DataVirtualHardDisks/>
+        <OSVirtualHardDisk>
+            <HostCaching>ReadWrite</HostCaching>
+            <DiskName>neotysss-neotysss-0-20120824091357</DiskName>
+            <MediaLink>http://portalvhds0g7xhnq2x7t21.blob.core.windows.net/disks/neotysss/MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</MediaLink>
+            <SourceImageName>MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</SourceImageName>
+            <OS>Windows</OS>
+        </OSVirtualHardDisk>
+        <RoleSize>Medium</RoleSize>
+    </Role>
+    </RoleList>
+    <SdkVersion/>
+    <Locked>false</Locked>
+    <RollbackAllowed>false</RollbackAllowed>
+    <CreatedTime>2012-08-24T09:13:53Z</CreatedTime>
+    <LastModifiedTime>2012-08-27T08:55:13Z</LastModifiedTime>
+    <ExtendedProperties/>
+</Deployment>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/deploymentparams.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/deploymentparams.xml b/azurecompute/src/test/resources/deploymentparams.xml
new file mode 100644
index 0000000..fadaff1
--- /dev/null
+++ b/azurecompute/src/test/resources/deploymentparams.xml
@@ -0,0 +1 @@
+<Deployment xmlns="http://schemas.microsoft.com/windowsazure"><Name>mydeployment</Name><DeploymentSlot>Production</DeploymentSlot><Label>mydeployment</Label><RoleList><Role><RoleName>mydeployment</RoleName><RoleType>PersistentVMRole</RoleType><ConfigurationSets><ConfigurationSet><ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType><HostName>mydeployment</HostName><UserName>username</UserName><UserPassword>testpwd</UserPassword><DisableSshPasswordAuthentication>false</DisableSshPasswordAuthentication><SSH/></ConfigurationSet><ConfigurationSet><ConfigurationSetType>NetworkConfiguration</ConfigurationSetType><InputEndpoints/><SubnetNames/></ConfigurationSet></ConfigurationSets><DataVirtualHardDisks/><OSVirtualHardDisk><HostCaching>ReadWrite</HostCaching><MediaLink>http://portalvhds0g7xhnq2x7t21.blob.core.windows.net/disks/mydeployment/OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd</MediaLink><SourceImageName>OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30
 GB.vhd</SourceImageName><OS>Linux</OS></OSVirtualHardDisk><RoleSize>Medium</RoleSize></Role></RoleList></Deployment>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/disks.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/disks.xml b/azurecompute/src/test/resources/disks.xml
new file mode 100644
index 0000000..afae399
--- /dev/null
+++ b/azurecompute/src/test/resources/disks.xml
@@ -0,0 +1,23 @@
+<Disks xmlns="http://schemas.microsoft.com/windowsazure">
+    <Disk>
+        <OS>Linux</OS>
+        <Location>West Europe</Location>
+        <LogicalDiskSizeInGB>30</LogicalDiskSizeInGB>
+        <MediaLink>http://neotysbucket1.blob.core.windows.net/vhds/testimage2-testimage2-2012-08-17.vhd</MediaLink>
+        <Name>testimage2-testimage2-0-20120817095145</Name>
+        <SourceImageName>OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd</SourceImageName>
+    </Disk>
+    <Disk>
+        <AttachedTo>
+            <DeploymentName>neotysss</DeploymentName>
+            <HostedServiceName>neotysss</HostedServiceName>
+            <RoleName>neotysss</RoleName>
+        </AttachedTo>
+        <OS>Windows</OS>
+        <Location>West Europe</Location>
+        <LogicalDiskSizeInGB>30</LogicalDiskSizeInGB>
+        <MediaLink>http://portalvhds0g7xhnq2x7t21.blob.core.windows.net/disks/neotysss/MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</MediaLink>
+        <Name>neotysss-neotysss-0-20120824091357</Name>
+        <SourceImageName>MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</SourceImageName>
+    </Disk>
+</Disks>

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/error.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/error.xml b/azurecompute/src/test/resources/error.xml
new file mode 100644
index 0000000..a9f9b2f
--- /dev/null
+++ b/azurecompute/src/test/resources/error.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Error>
+  <Code>MissingOrInvalidRequiredQueryParameter</Code>
+  <Message>A required query parameter was not specified for this request or was specified incorrectly.</Message>
+</Error>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/hostedservice.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/hostedservice.xml b/azurecompute/src/test/resources/hostedservice.xml
new file mode 100644
index 0000000..625aeb3
--- /dev/null
+++ b/azurecompute/src/test/resources/hostedservice.xml
@@ -0,0 +1,10 @@
+<HostedService xmlns="http://schemas.microsoft.com/windowsazure">
+    <Url>https://management.core.windows.net/eb0347c3-68d4-4550-9b39-5e7e0f92f7db/services/hostedservices/neotys</Url>
+    <ServiceName>neotys</ServiceName>
+    <HostedServiceProperties>
+        <Description>Implicitly created hosted service2012-08-06 14:55
+        </Description>
+        <Location>West Europe</Location>
+        <Label>bmVvdHlz</Label>
+    </HostedServiceProperties>
+</HostedService>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/hostedservice_details.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/hostedservice_details.xml b/azurecompute/src/test/resources/hostedservice_details.xml
new file mode 100644
index 0000000..d730cc7
--- /dev/null
+++ b/azurecompute/src/test/resources/hostedservice_details.xml
@@ -0,0 +1,13 @@
+<HostedService xmlns="http://schemas.microsoft.com/windowsazure">
+    <Url>https://management.core.windows.net/eb0347c3-68d4-4550-9b39-5e7e0f92f7db/services/hostedservices/neotys</Url>
+    <ServiceName>neotys</ServiceName>
+    <HostedServiceProperties>
+        <Description>Implicitly created hosted service2012-08-06 14:55</Description>
+        <Location>West Europe</Location>
+        <Label>bmVvdHlz</Label>
+        <Status>Created</Status>
+        <DateCreated>2012-08-06T14:55:17Z</DateCreated>
+        <DateLastModified>2012-08-06T15:50:34Z</DateLastModified>
+        <ExtendedProperties />
+    </HostedServiceProperties>
+</HostedService>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/hostedservices.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/hostedservices.xml b/azurecompute/src/test/resources/hostedservices.xml
new file mode 100644
index 0000000..66b7589
--- /dev/null
+++ b/azurecompute/src/test/resources/hostedservices.xml
@@ -0,0 +1,29 @@
+<HostedServices xmlns="http://schemas.microsoft.com/windowsazure"
+    xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
+    <HostedService>
+        <Url>https://management.core.windows.net/eb0347c3-68d4-4550-9b39-5e7e0f92f7db/services/hostedservices/neotys</Url>
+        <ServiceName>neotys</ServiceName>
+        <HostedServiceProperties>
+            <Description>Implicitly created hosted service2012-08-06  14:55</Description>
+            <Location>West Europe</Location>
+            <Label>bmVvdHlz</Label>
+            <Status>Created</Status>
+            <DateCreated>2012-08-06T14:55:17Z</DateCreated>
+            <DateLastModified>2012-08-06T15:50:34Z</DateLastModified>
+            <ExtendedProperties />
+        </HostedServiceProperties>
+    </HostedService>
+    <HostedService>
+        <Url>https://management.core.windows.net/eb0347c3-68d4-4550-9b39-5e7e0f92f7db/services/hostedservices/neotys3</Url>
+        <ServiceName>neotys3</ServiceName>
+        <HostedServiceProperties>
+            <Description i:nil="true" />
+            <Location>West Europe</Location>
+            <Label>bmVvdHlzMw==</Label>
+            <Status>Created</Status>
+            <DateCreated>2012-08-07T09:00:02Z</DateCreated>
+            <DateLastModified>2012-08-07T09:00:02Z</DateLastModified>
+            <ExtendedProperties />
+        </HostedServiceProperties>
+    </HostedService>
+</HostedServices>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/imageparams.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/imageparams.xml b/azurecompute/src/test/resources/imageparams.xml
new file mode 100644
index 0000000..d3279ba
--- /dev/null
+++ b/azurecompute/src/test/resources/imageparams.xml
@@ -0,0 +1 @@
+<OSImage xmlns="http://schemas.microsoft.com/windowsazure"><Label>foo</Label><MediaLink>http://example.blob.core.windows.net/disks/mydisk.vhd</MediaLink><Name>myimage</Name><OS>Linux</OS></OSImage>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/images.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/images.xml b/azurecompute/src/test/resources/images.xml
new file mode 100644
index 0000000..e7b37d6
--- /dev/null
+++ b/azurecompute/src/test/resources/images.xml
@@ -0,0 +1,84 @@
+<Images xmlns="http://schemas.microsoft.com/windowsazure"
+    >
+    <OSImage>
+        <Category>Canonical</Category>
+        <Label>Ubuntu Server 12.04 LTS</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd</Name>
+        <OS>Linux</OS>
+        <Eula>http://www.ubuntu.com/project/about-ubuntu/licensing</Eula>
+        <Description>Ubuntu Server 12.04 LTS amd64 20120528 Cloud Image</Description>
+    </OSImage>
+    <OSImage>
+        <Category>Microsoft</Category>
+        <Label>Windows Server 2008 R2 SP1, June 2012</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</Name>
+        <OS>Windows</OS>
+        <Eula />
+        <Description>Windows Server 2008 R2 is a multi-purpose server.</Description>
+    </OSImage>
+    <OSImage>
+        <Category>Microsoft</Category>
+        <Label>Microsoft SQL Server 2012 Evaluation Edition</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>MSFT__Sql-Server-11EVAL-11.0.2215.0-05152012-en-us-30GB.vhd</Name>
+        <OS>Windows</OS>
+        <Eula>http://go.microsoft.com/fwlink/?LinkID=251820;http://go.microsoft.com/fwlink/?LinkID=131004</Eula>
+        <Description>SQL Server 2012 Evaluation Edition (64-bit).</Description>
+    </OSImage>
+    <OSImage>
+        <Category>Microsoft</Category>
+        <Label>Windows Server 2012 Release Candidate, July 2012</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>MSFT__Win2K12RC-Datacenter-201207.02-en.us-30GB.vhd</Name>
+        <OS>Windows</OS>
+        <Eula />
+        <Description>Windows Server 2012 incorporates Microsoft's experience building.</Description>
+    </OSImage>
+    <OSImage>
+        <Category>Microsoft</Category>
+        <Label>Windows Server 2008 R2 SP1, July 2012</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>MSFT__Win2K8R2SP1-Datacenter-201207.01-en.us-30GB.vhd</Name>
+        <OS>Windows</OS>
+        <Eula />
+        <Description>Windows Server 2008 R2 is a multi-purpose server.</Description>
+    </OSImage>
+    <OSImage>
+        <Category>OpenLogic</Category>
+        <Label>OpenLogic CentOS 6.2</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd</Name>
+        <OS>Linux</OS>
+        <Eula>http://www.openlogic.com/azure/service-agreement/</Eula>
+        <Description>This distribution of Linux is based on CentOS.</Description>
+    </OSImage>
+    <OSImage>
+        <Category>SUSE</Category>
+        <Label>openSUSE 12.1</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>SUSE__openSUSE-12-1-20120603-en-us-30GB.vhd</Name>
+        <OS>Linux</OS>
+        <Eula>http://opensuse.org/</Eula>
+        <Description>openSUSE is a free and Linux-based operating system!</Description>
+    </OSImage>
+    <OSImage>
+        <Category>SUSE</Category>
+        <Label>SUSE Linux Enterprise Server</Label>
+        <LogicalSizeInGB>30</LogicalSizeInGB>
+        <Name>SUSE__SUSE-Linux-Enterprise-Server-11SP2-20120601-en-us-30GB.vhd</Name>
+        <OS>Linux</OS>
+        <Eula>http://www.novell.com/licensing/eula/</Eula>
+        <Description>SUSE Linux Enterprise Server is a highly reliable value.</Description>
+    </OSImage>
+    <OSImage>
+        <Category>RightScale with Linux</Category>
+        <Label>RightImage-CentOS-6.4-x64-v13.4</Label>
+        <LogicalSizeInGB>10</LogicalSizeInGB>
+        <Name>0b11de9248dd4d87b18621318e037d37__RightImage-CentOS-6.4-x64-v13.4</Name>
+        <OS>Linux</OS>
+        <Eula>;</Eula>
+        <Description/>
+    </OSImage>
+</Images>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/locations.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/locations.xml b/azurecompute/src/test/resources/locations.xml
new file mode 100644
index 0000000..5937871
--- /dev/null
+++ b/azurecompute/src/test/resources/locations.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<Locations xmlns="http://schemas.microsoft.com/windowsazure">
+  <Location>
+    <Name>West US</Name>
+    <DisplayName>West US</DisplayName>
+    <AvailableServices>
+      <AvailableService>Compute</AvailableService>
+      <AvailableService>Storage</AvailableService>
+      <AvailableService>PersistentVMRole</AvailableService>
+    </AvailableServices>
+  </Location>
+  <Location>
+    <Name>East US</Name>
+    <DisplayName>East US</DisplayName>
+    <AvailableServices>
+      <AvailableService>Compute</AvailableService>
+      <AvailableService>Storage</AvailableService>
+      <AvailableService>PersistentVMRole</AvailableService>
+    </AvailableServices>
+  </Location>
+  <Location>
+    <Name>East Asia</Name>
+    <DisplayName>East Asia</DisplayName>
+    <AvailableServices>
+      <AvailableService>Compute</AvailableService>
+      <AvailableService>Storage</AvailableService>
+      <AvailableService>PersistentVMRole</AvailableService>
+    </AvailableServices>
+  </Location>
+  <Location>
+    <Name>Southeast Asia</Name>
+    <DisplayName>Southeast Asia</DisplayName>
+    <AvailableServices>
+      <AvailableService>Compute</AvailableService>
+      <AvailableService>Storage</AvailableService>
+      <AvailableService>PersistentVMRole</AvailableService>
+    </AvailableServices>
+  </Location>
+  <Location>
+    <Name>North Europe</Name>
+    <DisplayName>North Europe</DisplayName>
+    <AvailableServices>
+      <AvailableService>Compute</AvailableService>
+      <AvailableService>Storage</AvailableService>
+      <AvailableService>PersistentVMRole</AvailableService>
+    </AvailableServices>
+  </Location>
+  <Location>
+    <Name>West Europe</Name>
+    <DisplayName>West Europe</DisplayName>
+    <AvailableServices>
+      <AvailableService>Compute</AvailableService>
+      <AvailableService>Storage</AvailableService>
+      <AvailableService>PersistentVMRole</AvailableService>
+    </AvailableServices>
+  </Location>
+</Locations>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/operation.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/operation.xml b/azurecompute/src/test/resources/operation.xml
new file mode 100644
index 0000000..498d1f0
--- /dev/null
+++ b/azurecompute/src/test/resources/operation.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Operation xmlns="http://schemas.microsoft.com/windowsazure">
+    <ID>request-id</ID>
+    <Status>Failed</Status>
+    <HttpStatusCode>400</HttpStatusCode>
+    <Error>
+        <Code>MissingOrInvalidRequiredQueryParameter</Code>
+        <Message>A required query parameter was not specified for this request or was specified incorrectly.</Message>
+    </Error>
+</Operation>

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/restartrolepayload.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/restartrolepayload.xml b/azurecompute/src/test/resources/restartrolepayload.xml
new file mode 100644
index 0000000..4eca508
--- /dev/null
+++ b/azurecompute/src/test/resources/restartrolepayload.xml
@@ -0,0 +1 @@
+<RestartRoleOperation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><OperationType>RestartRoleOperation</OperationType></RestartRoleOperation>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/shutdownrolepayload.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/shutdownrolepayload.xml b/azurecompute/src/test/resources/shutdownrolepayload.xml
new file mode 100644
index 0000000..27beee8
--- /dev/null
+++ b/azurecompute/src/test/resources/shutdownrolepayload.xml
@@ -0,0 +1 @@
+<ShutdownRoleOperation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><OperationType>ShutdownRoleOperation</OperationType></ShutdownRoleOperation>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/azurecompute/src/test/resources/startrolepayload.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/startrolepayload.xml b/azurecompute/src/test/resources/startrolepayload.xml
new file mode 100644
index 0000000..4e82022
--- /dev/null
+++ b/azurecompute/src/test/resources/startrolepayload.xml
@@ -0,0 +1 @@
+<StartRoleOperation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><OperationType>StartRoleOperation</OperationType></StartRoleOperation>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/45ef2a18/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bc0d761..c74982a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,7 @@
   </repositories>
 
   <modules>
+    <module>azurecompute</module>
     <module>docker</module>
     <module>virtualbox</module>
     <module>vcloud-director</module>