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 2016/07/17 21:46:16 UTC

[2/4] jclouds-labs git commit: [JCLOUDS-1141] azurecompute - fix XML generated by updateRole REST call

[JCLOUDS-1141] azurecompute - fix XML generated by updateRole REST call


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

Branch: refs/heads/master
Commit: 4e37f701f6864439ff7c5a5480012903a0c97f73
Parents: 913e4be
Author: Josef Cacek <jc...@redhat.com>
Authored: Sat Jul 16 12:50:42 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Sun Jul 17 23:30:03 2016 +0200

----------------------------------------------------------------------
 .../jclouds/azurecompute/binders/RoleToXML.java | 17 +++++----
 .../features/VirtualMachineApiMockTest.java     | 14 +++++++-
 .../src/test/resources/role-update-body.xml     | 36 ++++++++++++++++++++
 3 files changed, 59 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/4e37f701/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
index e5f1b26..7c8d529 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
@@ -24,6 +24,9 @@ import org.jclouds.rest.Binder;
 
 import com.jamesmurty.utils.XMLBuilder;
 
+/**
+ * Generates XML request body for the <a href="https://msdn.microsoft.com/en-us/library/azure/jj157187.aspx">UpdateRole REST request</a>.
+ */
 public class RoleToXML implements Binder {
 
    @Override
@@ -32,14 +35,13 @@ public class RoleToXML implements Binder {
       Role role = Role.class.cast(input);
 
       try {
-         XMLBuilder builder = XMLBuilder.create("PersistentVMRole", "http://schemas.microsoft.com/windowsazure")
-                 .e("RoleName").t(role.roleName()).up()
-                 .e("RoleType").t(role.roleType()).up()
-                 .e("ConfigurationSets");
-
+         XMLBuilder builder = XMLBuilder.create("PersistentVMRole", "http://schemas.microsoft.com/windowsazure");
+         builder.e("RoleName").t(role.roleName()).up()
+                 .e("RoleType").t(role.roleType()).up();
+         XMLBuilder configSetsBuilder = builder.e("ConfigurationSets");
          if (!role.configurationSets().isEmpty()) {
             for (Role.ConfigurationSet configurationSet : role.configurationSets()) {
-               XMLBuilder configBuilder = builder.e("ConfigurationSet"); // Network
+               XMLBuilder configBuilder = configSetsBuilder.e("ConfigurationSet"); // Network
                configBuilder.e("ConfigurationSetType").t(configurationSet.configurationSetType()).up();
 
                XMLBuilder inputEndpoints = configBuilder.e("InputEndpoints");
@@ -63,6 +65,7 @@ public class RoleToXML implements Binder {
                }
             }
          }
+         
          builder.e("DataVirtualHardDisks").up()
                  .e("OSVirtualHardDisk")
                  .e("HostCaching").t(role.osVirtualHardDisk().hostCaching()).up()
@@ -70,7 +73,7 @@ public class RoleToXML implements Binder {
                  .e("MediaLink").t(role.osVirtualHardDisk().mediaLink().toString()).up()
                  .e("SourceImageName").t(role.osVirtualHardDisk().sourceImageName()).up()
                  .e("OS").t(role.osVirtualHardDisk().os().toString()).up()
-                 .up() // DataVirtualHardDisks
+                 .up() // OSVirtualHardDisk
                  .e("RoleSize").t(role.roleSize().getText());
          return (R) request.toBuilder().payload(builder.asString()).build();
       } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/4e37f701/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
index 5bdd3a8..2272c70 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
@@ -18,12 +18,17 @@ package org.jclouds.azurecompute.features;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
 import org.jclouds.azurecompute.domain.Role;
 import org.jclouds.azurecompute.internal.BaseAzureComputeApiMockTest;
 import org.jclouds.azurecompute.xml.RoleHandlerTest;
 import org.testng.annotations.Test;
 
+import com.google.common.io.ByteStreams;
 import com.squareup.okhttp.mockwebserver.MockWebServer;
+import com.squareup.okhttp.mockwebserver.RecordedRequest;
 
 /*
  * Note: Mock test for CaptureVMImage method is in VMImageApiMockTest class
@@ -109,7 +114,14 @@ public class VirtualMachineApiMockTest extends BaseAzureComputeApiMockTest {
          Role role = RoleHandlerTest.expected();
          assertThat(api.updateRole("testvnetsg02", role)).isEqualTo("request-1");
 
-         assertSent(server, "PUT", "/services/hostedservices/my-service/deployments/mydeployment/roles/testvnetsg02");
+         RecordedRequest request = assertSent(server, "PUT", "/services/hostedservices/my-service/deployments/mydeployment/roles/testvnetsg02");
+         
+         final InputStream is = getClass().getResourceAsStream("/role-update-body.xml");
+         try {
+            assertThat(request.getUtf8Body()).isXmlEqualTo(new String(ByteStreams.toByteArray(is), Charset.forName("UTF-8")));
+         } finally {
+            is.close();
+         }
       } finally {
          server.shutdown();
       }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/4e37f701/azurecompute/src/test/resources/role-update-body.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/role-update-body.xml b/azurecompute/src/test/resources/role-update-body.xml
new file mode 100644
index 0000000..c095352
--- /dev/null
+++ b/azurecompute/src/test/resources/role-update-body.xml
@@ -0,0 +1,36 @@
+<PersistentVMRole xmlns="http://schemas.microsoft.com/windowsazure">
+  <RoleName>testvnetsg02</RoleName>
+  <RoleType>PersistentVMRole</RoleType>
+  <ConfigurationSets>
+    <ConfigurationSet>
+      <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
+      <InputEndpoints>
+        <InputEndpoint>
+          <LocalPort>5986</LocalPort>
+          <Name>PowerShell</Name>
+          <Port>5986</Port>
+          <Protocol>tcp</Protocol>
+        </InputEndpoint>
+        <InputEndpoint>
+          <LocalPort>3389</LocalPort>
+          <Name>Remote Desktop</Name>
+          <Port>59440</Port>
+          <Protocol>tcp</Protocol>
+        </InputEndpoint>
+      </InputEndpoints>
+      <SubnetNames>
+        <SubnetName>Subnet-1</SubnetName>
+      </SubnetNames>
+      <NetworkSecurityGroup>vnetnsgsg01</NetworkSecurityGroup>
+    </ConfigurationSet>
+  </ConfigurationSets>
+  <DataVirtualHardDisks />
+  <OSVirtualHardDisk>
+    <HostCaching>ReadWrite</HostCaching>
+    <DiskName>testvnetsg02-testvnetsg02-0-201502180825130518</DiskName>
+    <MediaLink>https://portalvhdsxz8nc6chc32j1.blob.core.windows.net/vhds/testvnetsg02-testvnetsg02-2015-02-18.vhd</MediaLink>
+    <SourceImageName>a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201412.01-en.us-127GB.vhd</SourceImageName>
+    <OS>WINDOWS</OS>
+  </OSVirtualHardDisk>
+  <RoleSize>Small</RoleSize>
+</PersistentVMRole>