/** * Licensed to jclouds, Inc. (jclouds) under one or more * contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. jclouds 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.savvis.vpdc.xml; import static org.testng.Assert.assertEquals; import java.io.InputStream; import java.net.URI; import org.jclouds.cim.ResourceAllocationSettingData; import org.jclouds.cim.VirtualSystemSettingData; import org.jclouds.cim.ResourceAllocationSettingData.ResourceType; import org.jclouds.http.functions.ParseSax; import org.jclouds.http.functions.ParseSax.Factory; import org.jclouds.http.functions.config.SaxParserModule; import org.jclouds.ovf.OperatingSystemSection; import org.jclouds.ovf.ProductSection; import org.jclouds.ovf.Property; import org.jclouds.ovf.VirtualHardwareSection; import org.jclouds.savvis.vpdc.domain.NetworkConfigSection; import org.jclouds.savvis.vpdc.domain.NetworkConnectionSection; import org.jclouds.savvis.vpdc.domain.VM; import org.testng.annotations.Test; import com.google.inject.Guice; import com.google.inject.Injector; /** * Tests behavior of {@code VMHandler} * * @author Adrian Cole */ @Test(groups = "unit") public class VMHandlerTest { public void testVCloud1_0() { InputStream is = getClass().getResourceAsStream("/vm.xml"); Injector injector = Guice.createInjector(new SaxParserModule()); Factory factory = injector.getInstance(ParseSax.Factory.class); VM result = factory.create(injector.getInstance(VMHandler.class)).parse(is); VM expected = VM .builder() .id("1001") .status(VM.Status.ON) .name("znHost2") .type("application/vnd.vmware.vcloud.vApp+xml") .href( URI .create("https://api.sandbox.symphonyVPDC.savvis.net/rest/api/v0.8/org/100000.0/vdc/2736/vApp/1001")) .networkConfigSection( NetworkConfigSection.builder().network("VM Tier01").gateway("0.0.0.0").netmask("0.0.0.0").info( "MAC=00:00:00:00:00:00").fenceMode("allowInOut").dhcp(true).internalToExternalNATRule( "10.76.2.4", "206.24.124.1").build()) .networkConnectionSection( NetworkConnectionSection.builder().network("VM Tier01").info( "Read only description of a network connection to a deployed vApp").ipAddress( "10.76.0.5").build()) .operatingSystemSection( OperatingSystemSection.builder().id(80).info("Specifies the operating system installed") .description("Red Hat Enterprise Linux 5.x 64bit").build()) .productSection( ProductSection .builder() .info("vCenter Information") .property( Property.builder().value("false").key("vmwareToolsEnabled").label( "VMWare Tools Enabled status").description( "VMWare Tools Enabled status").build()) .property( Property.builder().value("10.12.46.171").key("vmwareESXHost").label( "VMWare ESXHost Ipaddress").description("VMWare ESXHost Ipaddress") .build()) .property( Property.builder().value("cussl01s01c01alun088bal,cussl01s01c01alun089bal") .key("datastores").label("Datastore Name").description( "Datastore Name").build()) .property( Property .builder() .value("[Totalcapacity=1335915184128,UsedCapacity=549755813888]") .key("cussl01s01c01alun088bal") .label("Datastore Capacity") .description( "Datastore cussl01s01c01alun088bal Total Capacity, Used Capacity in comma separated") .build()) .property( Property .builder() .value("[Totalcapacity=1335915184129,UsedCapacity=549755813889]") .key("cussl01s01c01alun089bal") .label("Datastore Capacity") .description( "Datastore cussl01s01c01alun089bal Total Capacity, Used Capacity in comma separated") .build()).property( Property.builder().value( "[name=3282176-1949-bal-tier01,ip=0.0.0.0,mac=00:50:56:8c:3f:3c]") .key("customerPortprofile").label("customerPortprofile") .description("customerPortprofile").build()).property( Property.builder().value( "[name=vm-server-mgmt,ip=0.0.0.0,mac=00:50:56:8c:39:75]").key( "savvisPortprofile").label("savvisPortprofile").description( "savvisPortprofile").build()).build()).virtualHardwareSection( VirtualHardwareSection.builder().info("UUID=52254cd2-d848-4e7d-b8f3-3d257fed7666").system( VirtualSystemSettingData.builder().description("Virtual Hardware Family").elementName( "znHost2").instanceID("1").virtualSystemIdentifier("znHost2").build()).item( ResourceAllocationSettingData.builder().allocationUnits("3 GHz").description( "Number of Virtual CPUs").elementName("1 CPU").instanceID("2").resourceType( ResourceType.PROCESSOR).virtualQuantity(1l).build()).item( ResourceAllocationSettingData.builder().allocationUnits("Gigabytes").description( "Memory Size").elementName("Memory").instanceID("3").resourceType( ResourceType.MEMORY).virtualQuantity(2l).build()).item( ResourceAllocationSettingData.builder().connection("VM Tier01").elementName("Network") .instanceID("4").resourceType(ResourceType.ETHERNET_ADAPTER).virtualQuantity( 1l).build()).item( ResourceAllocationSettingData.builder().allocationUnits("Gigabytes") .caption("1234567").description("Hard Disk").elementName("C:\\") .hostResource("boot").instanceID("5").resourceType( ResourceType.BASE_PARTITIONABLE_UNIT).virtualQuantity(25l).build()) .item( ResourceAllocationSettingData.builder().allocationUnits("Gigabytes").caption( "1234568").description("Hard Disk").elementName("D:\\") .hostResource("data").instanceID("6").resourceType( ResourceType.PARTITIONABLE_UNIT).virtualQuantity(50l) .build()).build()) .build(); assertEquals(result, expected); } }