mirror of https://github.com/apache/jclouds.git
Issue 247: loosened terremark constraints and tested vapp configuration
This commit is contained in:
parent
d034a737b1
commit
7363ae6e87
|
@ -18,12 +18,19 @@
|
|||
*/
|
||||
package org.jclouds.compute.predicates;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.util.Utils.checkNotEmpty;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.jclouds.compute.domain.ComputeMetadata;
|
||||
import org.jclouds.compute.domain.NodeMetadata;
|
||||
import org.jclouds.compute.domain.NodeState;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import static org.jclouds.util.Utils.checkNotEmpty;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* Container for node filters (predicates).
|
||||
|
@ -36,10 +43,33 @@ import static org.jclouds.util.Utils.checkNotEmpty;
|
|||
public class NodePredicates {
|
||||
|
||||
/**
|
||||
* Return nodes with specified tag.
|
||||
* Note: returns all nodes, regardless of the state.
|
||||
* Return nodes with the specific ids Note: returns all nodes, regardless of the state.
|
||||
*
|
||||
* @param tag tag to match the items
|
||||
* @param ids
|
||||
* ids of the resources
|
||||
* @return predicate
|
||||
*/
|
||||
public static Predicate<ComputeMetadata> withIds(String... ids) {
|
||||
checkNotNull(ids, "ids must be defined");
|
||||
final Set<String> search = Sets.newHashSet(ids);
|
||||
return new Predicate<ComputeMetadata>() {
|
||||
@Override
|
||||
public boolean apply(@Nullable ComputeMetadata nodeMetadata) {
|
||||
return search.contains(nodeMetadata.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "withIds(" + search + ")";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Return nodes with specified tag. Note: returns all nodes, regardless of the state.
|
||||
*
|
||||
* @param tag
|
||||
* tag to match the items
|
||||
* @return predicate
|
||||
*/
|
||||
public static Predicate<NodeMetadata> withTag(final String tag) {
|
||||
|
@ -49,12 +79,19 @@ public class NodePredicates {
|
|||
public boolean apply(@Nullable NodeMetadata nodeMetadata) {
|
||||
return tag.equals(nodeMetadata.getTag());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "withTag(" + tag + ")";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Return nodes with specified tag that are in the RUNNING state.
|
||||
* @param tag tag to match the items
|
||||
*
|
||||
* @param tag
|
||||
* tag to match the items
|
||||
* @return predicate
|
||||
*/
|
||||
public static Predicate<NodeMetadata> activeWithTag(final String tag) {
|
||||
|
@ -62,7 +99,13 @@ public class NodePredicates {
|
|||
return new Predicate<NodeMetadata>() {
|
||||
@Override
|
||||
public boolean apply(@Nullable NodeMetadata nodeMetadata) {
|
||||
return tag.equals(nodeMetadata.getTag()) && nodeMetadata.getState() == NodeState.RUNNING;
|
||||
return tag.equals(nodeMetadata.getTag())
|
||||
&& nodeMetadata.getState() == NodeState.RUNNING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "activeWithTag(" + tag + ")";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -75,6 +118,11 @@ public class NodePredicates {
|
|||
public boolean apply(@Nullable NodeMetadata nodeMetadata) {
|
||||
return nodeMetadata.getState() == NodeState.RUNNING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ACTIVE";
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -85,6 +133,11 @@ public class NodePredicates {
|
|||
public boolean apply(@Nullable NodeMetadata nodeMetadata) {
|
||||
return nodeMetadata.getState() == NodeState.TERMINATED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TERMINATED";
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ public class InstantiateVAppTemplateOptions {
|
|||
}
|
||||
|
||||
public InstantiateVAppTemplateOptions memory(long megabytes) {
|
||||
checkArgument(megabytes % 512 == 0, "megabytes must be in an increment of 512");
|
||||
checkArgument(megabytes >= 1, "megabytes must be positive");
|
||||
this.memorySizeMegabytes = megabytes + "";
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -85,11 +85,6 @@ public class InstantiateVAppTemplateOptionsTest {
|
|||
assertEquals(options.getMemorySizeMegabytes(), "512");
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void testRamStaticWrong() {
|
||||
memory(511);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisk() {
|
||||
InstantiateVAppTemplateOptions options = new InstantiateVAppTemplateOptions();
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
package org.jclouds.vcloud.terremark.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static org.jclouds.util.Utils.checkNotEmpty;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
|
@ -37,62 +37,41 @@ public class VAppConfiguration {
|
|||
private List<Long> disks = Lists.newArrayList();
|
||||
private List<Integer> disksToDelete = Lists.newArrayList();
|
||||
|
||||
public static final Pattern NAME_PATTERN = Pattern.compile("^[a-zA-Z][-a-zA-Z0-9]+");
|
||||
|
||||
/**
|
||||
* The vApp name has the following requirements: Name can use uppercase and/or lowercase letters.
|
||||
* Name can contain numbers or hyphens (-). Name may only begin with a letter. A maximum of 15
|
||||
* characters are allowed
|
||||
* The vApp name
|
||||
*
|
||||
*/
|
||||
public VAppConfiguration changeNameTo(String name) {
|
||||
checkArgument(
|
||||
NAME_PATTERN.matcher(name).matches(),
|
||||
"Name can use uppercase and/or lowercase letters, numbers or hyphens (-). Name may only begin with a letter.");
|
||||
checkArgument(name.length() <= 15, "A maximum of 15 characters are allowed.");
|
||||
checkNotEmpty(name, "name must be specified");
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* the number of virtual CPUs. You can set this to “1,” “2,” “4,” or “8.”
|
||||
* the number of virtual CPUs.
|
||||
*/
|
||||
public VAppConfiguration changeProcessorCountTo(int cpus) {
|
||||
checkArgument(cpus == 1 || cpus == 2 || cpus == 4 || cpus == 8,
|
||||
"cpu count must be in 1,2,4,8");
|
||||
checkArgument(cpus >= 1, "cpu count must be positive");
|
||||
this.processorCount = cpus;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* number of MB of memory. This should be either 512 or a multiple of 1024 (1 GB).
|
||||
* number of MB of memory.
|
||||
*/
|
||||
public VAppConfiguration changeMemoryTo(long megabytes) {
|
||||
checkArgument(megabytes == 512 || megabytes % 1024 == 0,
|
||||
"memory must be 512 or an interval of 1024");
|
||||
checkArgument(megabytes <= 16384, "memory must be no more than 16GB");
|
||||
checkArgument(megabytes >= 1, "megabytes must be positive");
|
||||
this.memory = megabytes;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* To define a new disk, all you need to define is the size of the disk. The allowed values are a
|
||||
* multiple of 1048576. <br/>
|
||||
* For example: <br/>
|
||||
* 1048576 (1 GB) <br/>
|
||||
* 2097152 (2 GB) <br/>
|
||||
* 3145728 (3 GB) <br/>
|
||||
* 4194304 (4 GB) <br/>
|
||||
* 5242880 (5 GB) <br/>
|
||||
* ... <br/>
|
||||
* 524288000 (500 GB) <br/>
|
||||
* You can have a total of 15 disks. Each disk can contain up to 500 GB of storage.
|
||||
* multiple of 1048576.
|
||||
*/
|
||||
public VAppConfiguration addDisk(long kilobytes) {
|
||||
checkArgument(kilobytes > 0, "kilobytes must be positive");
|
||||
checkArgument(kilobytes % 1048576 == 0, "disk must be an interval of 1048576");
|
||||
checkArgument(kilobytes >= 25 *1048576, "disk must be at least 25GB");
|
||||
checkArgument(kilobytes <= 524288000, "disk must be no more than 500GB");
|
||||
checkArgument(disks.size() < 14, "you can only add up to 14 disks for a total of 15");
|
||||
this.disks.add(kilobytes);
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@ public class TerremarkVCloudAsyncClientTest extends RestClientTest<TerremarkVClo
|
|||
InstantiateVAppTemplateOptions.class, 0).getClass());
|
||||
GeneratedHttpRequest<TerremarkVCloudAsyncClient> httpMethod = processor.createRequest(method,
|
||||
"1", "name", 3 + "", TerremarkInstantiateVAppTemplateOptions.Builder.processorCount(
|
||||
1).memory(512).inRow("row").inGroup("group").withPassword("password")
|
||||
2).memory(512).inRow("row").inGroup("group").withPassword("password")
|
||||
.inNetwork(URI.create("http://network")));
|
||||
|
||||
assertRequestLineEquals(httpMethod,
|
||||
|
|
|
@ -71,6 +71,7 @@ import org.testng.annotations.AfterTest;
|
|||
import org.testng.annotations.BeforeGroups;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.inject.Injector;
|
||||
|
@ -176,7 +177,15 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
|
||||
// determine the cheapest configuration size
|
||||
SortedSet<ComputeOptions> sizeOptions = tmClient.getComputeOptionsOfCatalogItem(itemId);
|
||||
ComputeOptions cheapestOption = sizeOptions.first();
|
||||
|
||||
ComputeOptions cheapestOption = Iterables.find(sizeOptions, new Predicate<ComputeOptions>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(ComputeOptions arg0) {
|
||||
return arg0.getProcessorCount() == 2;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// create an options object to collect the configuration we want.
|
||||
TerremarkInstantiateVAppTemplateOptions instantiateOptions = processorCount(
|
||||
|
@ -363,8 +372,8 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
|
||||
vApp = tmClient.getVApp(vApp.getId());
|
||||
|
||||
Task task = tmClient.configureVApp(vApp, changeNameTo("eduardo").changeMemoryTo(1024)
|
||||
.changeProcessorCountTo(2).addDisk(25 * 1048576).addDisk(25 * 1048576));
|
||||
Task task = tmClient.configureVApp(vApp, changeNameTo("eduardo").changeMemoryTo(1536)
|
||||
.changeProcessorCountTo(1).addDisk(25 * 1048576).addDisk(25 * 1048576));
|
||||
|
||||
assert successTester.apply(task.getId());
|
||||
|
||||
|
@ -373,10 +382,10 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
assertEquals(
|
||||
Iterables.getOnlyElement(
|
||||
vApp.getResourceAllocationByType().get(ResourceType.PROCESSOR))
|
||||
.getVirtualQuantity(), 2);
|
||||
.getVirtualQuantity(), 1);
|
||||
assertEquals(Iterables.getOnlyElement(
|
||||
vApp.getResourceAllocationByType().get(ResourceType.MEMORY)).getVirtualQuantity(),
|
||||
1024);
|
||||
1536);
|
||||
assertEquals(vApp.getResourceAllocationByType().get(ResourceType.DISK_DRIVE).size(), 3);
|
||||
|
||||
assert successTester.apply(tmClient.powerOnVApp(vApp.getId()).getId());
|
||||
|
@ -473,8 +482,8 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
account = checkNotNull(System.getProperty("jclouds.test.user"), "jclouds.test.user");
|
||||
String key = checkNotNull(System.getProperty("jclouds.test.key"), "jclouds.test.key");
|
||||
Injector injector = new TerremarkVCloudContextBuilder("terremark",
|
||||
new TerremarkVCloudPropertiesBuilder( account, key).build()).withModules(new Log4JLoggingModule(),
|
||||
new JschSshClientModule()).buildInjector();
|
||||
new TerremarkVCloudPropertiesBuilder(account, key).build()).withModules(
|
||||
new Log4JLoggingModule(), new JschSshClientModule()).buildInjector();
|
||||
|
||||
connection = tmClient = injector.getInstance(TerremarkVCloudClient.class);
|
||||
|
||||
|
|
|
@ -69,9 +69,8 @@ public class BindVAppConfigurationToXmlPayloadTest {
|
|||
});
|
||||
|
||||
public void testChangeName() throws IOException {
|
||||
VAppImpl vApp = new VAppImpl("4213", "MyAppServer6",
|
||||
URI
|
||||
.create("https://services.vcloudexpress/terremark.com/api/v0.8/vapp/4213"),
|
||||
VAppImpl vApp = new VAppImpl("4213", "MyAppServer6", URI
|
||||
.create("https://services.vcloudexpress/terremark.com/api/v0.8/vapp/4213"),
|
||||
VAppStatus.OFF, 4194304l, null, ImmutableListMultimap.<String, InetAddress> of(),
|
||||
null, null, ImmutableSortedSet.of(new ResourceAllocation(1, "n/a", null,
|
||||
ResourceType.PROCESSOR, null, null, null, null, null, null, 2, null),
|
||||
|
@ -85,7 +84,9 @@ public class BindVAppConfigurationToXmlPayloadTest {
|
|||
"roberto");
|
||||
Multimap<String, String> headers = Multimaps.synchronizedMultimap(HashMultimap
|
||||
.<String, String> create());
|
||||
|
||||
VAppConfiguration config = new VAppConfiguration().changeNameTo("roberto");
|
||||
|
||||
GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
|
||||
expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
|
||||
expect(request.getArgs()).andReturn(new Object[] { vApp, config }).atLeastOnce();
|
||||
|
@ -103,25 +104,26 @@ public class BindVAppConfigurationToXmlPayloadTest {
|
|||
}
|
||||
|
||||
public void testRemoveDisk() throws IOException {
|
||||
VAppImpl vApp = new VAppImpl("4213", "MyAppServer6",
|
||||
URI
|
||||
.create("https://services.vcloudexpress/terremark.com/api/v0.8/vapp/4213"),
|
||||
VAppImpl vApp = new VAppImpl("4213", "MyAppServer6", URI
|
||||
.create("https://services.vcloudexpress/terremark.com/api/v0.8/vapp/4213"),
|
||||
VAppStatus.OFF, 4194304l, null, ImmutableListMultimap.<String, InetAddress> of(),
|
||||
null, null, ImmutableSortedSet.of(new ResourceAllocation(1, "n/a", null,
|
||||
ResourceType.PROCESSOR, null, null, null, null, null, null, 2, null),
|
||||
new ResourceAllocation(2, "n/a", null, ResourceType.MEMORY, null, null,
|
||||
null, null, null, null, 1024, null), new ResourceAllocation(9,
|
||||
"n/a", null, ResourceType.DISK_DRIVE, null, "1048576", null, 0,
|
||||
null, null, 209152, null),new ResourceAllocation(9,
|
||||
"n/a", null, ResourceType.DISK_DRIVE, null, "1048576", null, 1,
|
||||
null, null, 209152, null)));
|
||||
null, null, 209152, null), new ResourceAllocation(9, "n/a", null,
|
||||
ResourceType.DISK_DRIVE, null, "1048576", null, 1, null, null,
|
||||
209152, null)));
|
||||
|
||||
String expected = Utils.toStringAndClose(
|
||||
getClass().getResourceAsStream("/terremark/configureVApp.xml")).replace("eduardo",
|
||||
"MyAppServer6");
|
||||
Multimap<String, String> headers = Multimaps.synchronizedMultimap(HashMultimap
|
||||
.<String, String> create());
|
||||
|
||||
VAppConfiguration config = new VAppConfiguration().deleteDiskWithAddressOnParent(1);
|
||||
|
||||
GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
|
||||
expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
|
||||
expect(request.getArgs()).andReturn(new Object[] { vApp, config }).atLeastOnce();
|
||||
|
@ -138,4 +140,71 @@ public class BindVAppConfigurationToXmlPayloadTest {
|
|||
verify(request);
|
||||
}
|
||||
|
||||
public void testChangeCPUCountTo4() throws IOException {
|
||||
VAppImpl vApp = new VAppImpl("4213", "eduardo", URI
|
||||
.create("https://services.vcloudexpress/terremark.com/api/v0.8/vapp/4213"),
|
||||
VAppStatus.OFF, 4194304l, null, ImmutableListMultimap.<String, InetAddress> of(),
|
||||
null, null, ImmutableSortedSet.of(new ResourceAllocation(1, "n/a", null,
|
||||
ResourceType.PROCESSOR, null, null, null, null, null, null, 4, null),
|
||||
new ResourceAllocation(2, "n/a", null, ResourceType.MEMORY, null, null,
|
||||
null, null, null, null, 1024, null), new ResourceAllocation(9,
|
||||
"n/a", null, ResourceType.DISK_DRIVE, null, "1048576", null, 0,
|
||||
null, null, 209152, null)));
|
||||
String expected = Utils.toStringAndClose(getClass().getResourceAsStream(
|
||||
"/terremark/configureVApp4.xml"));
|
||||
Multimap<String, String> headers = Multimaps.synchronizedMultimap(HashMultimap
|
||||
.<String, String> create());
|
||||
|
||||
VAppConfiguration config = new VAppConfiguration().changeProcessorCountTo(4);
|
||||
|
||||
GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
|
||||
expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
|
||||
expect(request.getArgs()).andReturn(new Object[] { vApp, config }).atLeastOnce();
|
||||
expect(request.getFirstHeaderOrNull("Content-Type")).andReturn(null).atLeastOnce();
|
||||
expect(request.getHeaders()).andReturn(headers).atLeastOnce();
|
||||
request.setPayload(expected);
|
||||
replay(request);
|
||||
|
||||
BindVAppConfigurationToXmlPayload binder = injector
|
||||
.getInstance(BindVAppConfigurationToXmlPayload.class);
|
||||
|
||||
Map<String, String> map = Maps.newHashMap();
|
||||
binder.bindToRequest(request, map);
|
||||
verify(request);
|
||||
}
|
||||
|
||||
public void testChangeMemoryTo1536() throws IOException {
|
||||
VAppImpl vApp = new VAppImpl("4213", "MyAppServer6", URI
|
||||
.create("https://services.vcloudexpress/terremark.com/api/v0.8/vapp/4213"),
|
||||
VAppStatus.OFF, 4194304l, null, ImmutableListMultimap.<String, InetAddress> of(),
|
||||
null, null, ImmutableSortedSet.of(new ResourceAllocation(1, "n/a", null,
|
||||
ResourceType.PROCESSOR, null, null, null, null, null, null, 2, null),
|
||||
new ResourceAllocation(2, "n/a", null, ResourceType.MEMORY, null, null,
|
||||
null, null, null, null, 1536, null), new ResourceAllocation(9,
|
||||
"n/a", null, ResourceType.DISK_DRIVE, null, "1048576", null, 0,
|
||||
null, null, 209152, null)));
|
||||
|
||||
String expected = Utils.toStringAndClose(
|
||||
getClass().getResourceAsStream("/terremark/configureVApp.xml")).replace("eduardo",
|
||||
"MyAppServer6").replace("1024", "1536");
|
||||
Multimap<String, String> headers = Multimaps.synchronizedMultimap(HashMultimap
|
||||
.<String, String> create());
|
||||
|
||||
VAppConfiguration config = new VAppConfiguration().changeMemoryTo(1536);
|
||||
|
||||
GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
|
||||
expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
|
||||
expect(request.getArgs()).andReturn(new Object[] { vApp, config }).atLeastOnce();
|
||||
expect(request.getFirstHeaderOrNull("Content-Type")).andReturn(null).atLeastOnce();
|
||||
expect(request.getHeaders()).andReturn(headers).atLeastOnce();
|
||||
request.setPayload(expected);
|
||||
replay(request);
|
||||
|
||||
BindVAppConfigurationToXmlPayload binder = injector
|
||||
.getInstance(BindVAppConfigurationToXmlPayload.class);
|
||||
|
||||
Map<String, String> map = Maps.newHashMap();
|
||||
binder.bindToRequest(request, map);
|
||||
verify(request);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ public class TerremarkBindInstantiateVAppTemplateParamsToXmlPayloadTest {
|
|||
GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
|
||||
expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
|
||||
expect(request.getArgs()).andReturn(
|
||||
new Object[] { TerremarkInstantiateVAppTemplateOptions.Builder.processorCount(1)
|
||||
new Object[] { TerremarkInstantiateVAppTemplateOptions.Builder.processorCount(2)
|
||||
.memory(512).inRow("row").inGroup("group").withPassword(
|
||||
"password").inNetwork(URI.create("http://network")) })
|
||||
.atLeastOnce();
|
||||
|
|
|
@ -122,11 +122,6 @@ public class TerremarkInstantiateVAppTemplateOptionsTest {
|
|||
assertEquals(options.getMemorySizeMegabytes(), "512");
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void testMegabytesStaticWrong() {
|
||||
memory(511);
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void testDiskSizeKilobytes() {
|
||||
TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
|
||||
|
|
|
@ -1 +1 @@
|
|||
<InstantiateVAppTemplateParams xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="name" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://vcloud.safesecureweb.com/ns/vcloud.xsd"><VAppTemplate href="http://catalogItem/3"/><InstantiationParams><ProductSection xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q1="http://www.vmware.com/vcloud/v0.8"><Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="group" ovf:value="group"/><Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="password" ovf:value="password"/><Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="row" ovf:value="row"/></ProductSection><VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8"><Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</VirtualQuantity></Item><Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">512</VirtualQuantity></Item></VirtualHardwareSection><NetworkConfigSection><NetworkConfig name="name"><Features><FenceMode>allowInOut</FenceMode><Dhcp>false</Dhcp></Features><NetworkAssociation href="http://network"/></NetworkConfig></NetworkConfigSection></InstantiationParams></InstantiateVAppTemplateParams>
|
||||
<InstantiateVAppTemplateParams xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="name" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://vcloud.safesecureweb.com/ns/vcloud.xsd"><VAppTemplate href="http://catalogItem/3"/><InstantiationParams><ProductSection xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q1="http://www.vmware.com/vcloud/v0.8"><Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="group" ovf:value="group"/><Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="password" ovf:value="password"/><Property xmlns="http://schemas.dmtf.org/ovf/envelope/1" ovf:key="row" ovf:value="row"/></ProductSection><VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8"><Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</VirtualQuantity></Item><Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">512</VirtualQuantity></Item></VirtualHardwareSection><NetworkConfigSection><NetworkConfig name="name"><Features><FenceMode>allowInOut</FenceMode><Dhcp>false</Dhcp></Features><NetworkAssociation href="http://network"/></NetworkConfig></NetworkConfigSection></InstantiationParams></InstantiateVAppTemplateParams>
|
|
@ -0,0 +1 @@
|
|||
<VApp xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="eduardo" size="4194304" status="2" type="application/vnd.vmware.vcloud.vApp+xml" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Section xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q2="http://www.vmware.com/vcloud/v1" xsi:type="VirtualHardwareSection_Type"><Info>Virtual Hardware</Info><Item><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</VirtualQuantity></Item><Item><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1024</VirtualQuantity></Item><Item><AddressOnParent xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">0</AddressOnParent><HostResource xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1048576</HostResource><InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">9</InstanceID><ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">17</ResourceType><VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">209152</VirtualQuantity></Item></Section></VApp>
|
Loading…
Reference in New Issue