vcloud 0.0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +39 -0
- data/LICENSE +7 -0
- data/README.md +53 -0
- data/Rakefile +8 -0
- data/examples/hello_vcloud.rb +183 -0
- data/lib/vcloud.rb +16 -0
- data/lib/vcloud/base_vcloud_entity.rb +59 -0
- data/lib/vcloud/client.rb +117 -0
- data/lib/vcloud/constants.rb +38 -0
- data/lib/vcloud/errors.rb +31 -0
- data/lib/vcloud/parses_xml.rb +33 -0
- data/lib/vcloud/rest_api.rb +91 -0
- data/lib/vcloud/user.rb +5 -0
- data/lib/vcloud/user/catalog.rb +32 -0
- data/lib/vcloud/user/catalog_item.rb +10 -0
- data/lib/vcloud/user/error.rb +12 -0
- data/lib/vcloud/user/instantiate_vapp_template_params.rb +36 -0
- data/lib/vcloud/user/link.rb +30 -0
- data/lib/vcloud/user/network_config.rb +20 -0
- data/lib/vcloud/user/network_config_section.rb +20 -0
- data/lib/vcloud/user/org.rb +69 -0
- data/lib/vcloud/user/org_list.rb +10 -0
- data/lib/vcloud/user/reference.rb +27 -0
- data/lib/vcloud/user/task.rb +54 -0
- data/lib/vcloud/user/vapp.rb +103 -0
- data/lib/vcloud/user/vdc.rb +32 -0
- data/lib/version.rb +3 -0
- data/spec/catalog_item_spec.rb +35 -0
- data/spec/catalog_spec.rb +62 -0
- data/spec/client_spec.rb +87 -0
- data/spec/fixtures/catalog.xml +8 -0
- data/spec/fixtures/catalog_item.xml +6 -0
- data/spec/fixtures/error_login_404.html +24 -0
- data/spec/fixtures/instantiate_vapp_template_params.xml +11 -0
- data/spec/fixtures/network_config.xml +6 -0
- data/spec/fixtures/network_config_section.xml +6 -0
- data/spec/fixtures/org.xml +11 -0
- data/spec/fixtures/org_list.xml +4 -0
- data/spec/fixtures/session.xml +7 -0
- data/spec/fixtures/task.xml +6 -0
- data/spec/fixtures/vapp.xml +31 -0
- data/spec/fixtures/vapp_template.xml +74 -0
- data/spec/fixtures/vdc.xml +55 -0
- data/spec/instantiate_vapp_template_params_spec.rb +60 -0
- data/spec/network_config_section_spec.rb +42 -0
- data/spec/network_config_spec.rb +31 -0
- data/spec/org_spec.rb +99 -0
- data/spec/rest_api_spec.rb +48 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/task_spec.rb +74 -0
- data/spec/vapp_spec.rb +85 -0
- data/spec/vdc_spec.rb +83 -0
- data/vcloud.gemspec +19 -0
- metadata +173 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<InstantiateVAppTemplateParams xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" name="SomeVAppTemplateParams" deploy="true" powerOn="false">
|
3
|
+
<Description>some descriptive string</Description>
|
4
|
+
<InstantiationParams>
|
5
|
+
<NetworkConfigSection>
|
6
|
+
</NetworkConfigSection>
|
7
|
+
</InstantiationParams>
|
8
|
+
<Source href="https://vcloud.example.com/api/vAppTemplate/vappTemplate-111" />
|
9
|
+
<IsSourceDelete>false</IsSourceDelete>
|
10
|
+
<AllEULAsAccepted>true</AllEULAsAccepted>
|
11
|
+
</InstantiateVAppTemplateParams>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<NetworkConfigSection xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" type="application/vnd.vmware.vcloud.networkConfigSection+xml" href="https://vcloud.example.dev/api/vAppTemplate/vappTemplate-1/networkConfigSection/" ovf:required="false" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.dmtf.org/ovf/envelope/1 http://schemas.dmtf.org/ovf/envelope/1/dsp8023_1.1.0.xsd http://www.vmware.com/vcloud/v1.5 http://10.9.225.10/api/v1.5/schema/master.xsd">
|
3
|
+
<ovf:Info>The configuration parameters for logical networks</ovf:Info>
|
4
|
+
<NetworkConfig networkName="none">
|
5
|
+
</NetworkConfig>
|
6
|
+
</NetworkConfigSection>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Org xmlns="http://www.vmware.com/vcloud/v1.5" name="someorg" id="urn:vcloud:org:aaa-bbb-ccc-ddd-eee-fff" type="application/vnd.vmware.vcloud.org+xml" href="https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://127.0.0.1/api/v1.5/schema/master.xsd">
|
3
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.vdc+xml" name="SomeVDC" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff"/>
|
4
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.tasksList+xml" href="https://some.vcloud.com/api/tasksList/aaa-bbb-ccc-ddd-eee-fff"/>
|
5
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.catalog+xml" name="SuperCool Catalog" href="https://some.vcloud.com/api/catalog/aaa-bbb-ccc-ddd-eee-fff"/>
|
6
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.controlAccess+xml" href="https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff/catalog/aaa-bbb-ccc-ddd-eee-fff/controlAccess/"/>
|
7
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.orgNetwork+xml" name="Dev VLAN" href="https://some.vcloud.com/api/network/aaa-bbb-ccc-ddd-eee-fff"/>
|
8
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff/metadata"/>
|
9
|
+
<Description>This is an example organization</Description>
|
10
|
+
<FullName>Example Organization</FullName>
|
11
|
+
</Org>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<OrgList xmlns="http://www.vmware.com/vcloud/v1.5" type="application/vnd.vmware.vcloud.orgList+xml" href="https://some.vcloud.com/api/org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://127.0.0.1/api/v1.5/schema/master.xsd">
|
3
|
+
<Org type="application/vnd.vmware.vcloud.org+xml" name="someorg" href="https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff"/>
|
4
|
+
</OrgList>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Session xmlns="http://www.vmware.com/vcloud/v1.5" user="someuser" org="someorg" type="application/vnd.vmware.vcloud.session+xml" href="https://some.vcloud.com/api/session/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://127.0.0.1/api/v1.5/schema/master.xsd">
|
3
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.orgList+xml" href="https://some.vcloud.com/api/org/"/>
|
4
|
+
<Link rel="down" type="application/vnd.vmware.admin.vcloud+xml" href="https://some.vcloud.com/api/admin/"/>
|
5
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.query.queryList+xml" href="https://some.vcloud.com/api/query"/>
|
6
|
+
<Link rel="entityResolver" type="application/vnd.vmware.vcloud.entity+xml" href="https://some.vcloud.com/api/entity/"/>
|
7
|
+
</Session>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<Task xmlns="http://www.vmware.com/vcloud/v1.5" status="running" startTime="2012-10-01T15:31:10.175-04:00" operationName="vappUndeployPowerOff" operation="Stopping Virtual Application (6e2ec079-c533-4d99-8f29-2a90ba18da87)" expiryTime="2012-12-30T15:31:10.175-05:00" name="task" id="urn:vcloud:task:5acdbbab-0496-4a57-bf81-cec0be0ae8fb" type="application/vnd.vmware.vcloud.task+xml" href="https://vcloud.com/api/task/5acdbbab-0496-4a57-bf81-cec0be0ae8fb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://10.9.225.10/api/v1.5/schema/master.xsd">
|
2
|
+
<Link rel="task:cancel" href="https://vcloud.diebold.dev/api/task/5acdbbab-0496-4a57-bf81-cec0be0ae8fb/action/cancel"/>
|
3
|
+
<Owner type="application/vnd.vmware.vcloud.vApp+xml" name="" href="https://vcloud.diebold.dev/api/vApp/vapp-6e2ec079-c533-4d99-8f29-2a90ba18da87"/>
|
4
|
+
<User type="application/vnd.vmware.admin.user+xml" name="test" href="https://vcloud.diebold.dev/api/admin/user/5d41dbbb-3fa6-4150-8cf2-4ba41752dbf8"/>
|
5
|
+
<Organization type="application/vnd.vmware.vcloud.org+xml" name="emtech" href="https://vcloud.diebold.dev/api/org/e5c140c9-77ca-49f0-8215-43ccfa16a9b3"/>
|
6
|
+
</Task>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<VApp xmlns="http://www.vmware.com/vcloud/v1.5" deployed="false" status="0" name="Linux FTP server" id="urn:vcloud:vapp:aaa-bbb-ccc-ddd-eee-fff" type="application/vnd.vmware.vcloud.vApp+xml" href="https://some.vcloud.com/api/vApp/vapp-aaa-bbb-ccc-ddd-eee-fff" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://127.0.0.1/api/v1.5/schema/master.xsd">
|
3
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.vAppNetwork+xml" name="Dev VLAN" href="https://some.vcloud.com/api/network/aaa-bbb-ccc-ddd-eee-fff"/>
|
4
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.controlAccess+xml" href="https://some.vcloud.com/api/vApp/vapp-aaa-bbb-ccc-ddd-eee-fff/controlAccess/"/>
|
5
|
+
<Link rel="up" type="application/vnd.vmware.vcloud.vdc+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff"/>
|
6
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.owner+xml" href="https://some.vcloud.com/api/vApp/vapp-aaa-bbb-ccc-ddd-eee-fff/owner"/>
|
7
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://some.vcloud.com/api/vApp/vapp-aaa-bbb-ccc-ddd-eee-fff/metadata"/>
|
8
|
+
<Link rel="deploy" type="application/vnd.vmware.vcloud.deployVAppParams+xml" href="https://vcloud.diebold.dev/api/vApp/vapp/action/deploy"/>
|
9
|
+
<Link rel="undeploy" type="application/vnd.vmware.vcloud.undeployVAppParams+xml" href="https://vcloud.diebold.dev/api/vApp/vapp-1/action/undeploy"/>
|
10
|
+
<Link rel="power:powerOn" href="https://vcloud.diebold.dev/api/vApp/vapp-1/power/action/powerOn"/>
|
11
|
+
<Link rel="power:powerOff" href="https://vcloud.diebold.dev/api/vApp/vapp-1/power/action/powerOff"/>
|
12
|
+
<Link rel="power:reboot" href="https://vcloud.diebold.dev/api/vApp/vapp-1/power/action/reboot"/>
|
13
|
+
<Link rel="power:reset" href="https://vcloud.diebold.dev/api/vApp/vapp-1/power/action/reset"/>
|
14
|
+
<Link rel="power:shutdown" href="https://vcloud.diebold.dev/api/vApp/vapp-1/power/action/shutdown"/>
|
15
|
+
<Link rel="power:suspend" href="https://vcloud.diebold.dev/api/vApp/vapp-1/power/action/suspend"/>
|
16
|
+
<Link rel="remove" href="https://vcloud.diebold.dev/api/vApp/vapp-1"/>
|
17
|
+
<Description>Ruby VCloud RSpec Test</Description>
|
18
|
+
<Tasks>
|
19
|
+
<Task status="running" startTime="2012-09-20T10:40:08.286-04:00" operationName="vdcInstantiateVapp" operation="Creating Virtual Application Linux FTP server(aaa-bbb-ccc-ddd-eee-fff)" expiryTime="2012-12-19T10:40:08.286-05:00" name="task" id="urn:vcloud:task:aaa-bbb-ccc-ddd-eee-fff" type="application/vnd.vmware.vcloud.task+xml" href="https://some.vcloud.com/api/task/aaa-bbb-ccc-ddd-eee-fff">
|
20
|
+
<Link rel="task:cancel" href="https://some.vcloud.com/api/task/aaa-bbb-ccc-ddd-eee-fff/action/cancel"/>
|
21
|
+
<Owner type="application/vnd.vmware.vcloud.vApp+xml" name="Linux FTP server" href="https://some.vcloud.com/api/vApp/vapp-aaa-bbb-ccc-ddd-eee-fff"/>
|
22
|
+
<User type="application/vnd.vmware.admin.user+xml" name="someuser" href="https://some.vcloud.com/api/admin/user/aaa-bbb-ccc-ddd-eee-fff"/>
|
23
|
+
<Organization type="application/vnd.vmware.vcloud.org+xml" name="someorg" href="https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff"/>
|
24
|
+
<Progress>1</Progress>
|
25
|
+
</Task>
|
26
|
+
</Tasks>
|
27
|
+
<Owner type="application/vnd.vmware.vcloud.owner+xml">
|
28
|
+
<User type="application/vnd.vmware.admin.user+xml" name="someuser" href="https://some.vcloud.com/api/admin/user/aaa-bbb-ccc-ddd-eee-fff"/>
|
29
|
+
</Owner>
|
30
|
+
<InMaintenanceMode>false</InMaintenanceMode>
|
31
|
+
</VApp>
|
@@ -0,0 +1,74 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<VAppTemplate xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" ovfDescriptorUploaded="true" goldMaster="false" status="8" name="Ubuntu 10.04.4 LTS" id="urn:vcloud:vapptemplate:aaa-bbb-ccc-ddd-eee-fff" type="application/vnd.vmware.vcloud.vAppTemplate+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.dmtf.org/ovf/envelope/1 http://schemas.dmtf.org/ovf/envelope/1/dsp8023_1.1.0.xsd http://www.vmware.com/vcloud/v1.5 http://127.0.0.1/api/v1.5/schema/master.xsd">
|
3
|
+
<Link rel="catalogItem" type="application/vnd.vmware.vcloud.catalogItem+xml" href="https://some.vcloud.com/api/catalogItem/aaa-bbb-ccc-ddd-eee-fff"/>
|
4
|
+
<Link rel="enable" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/action/enableDownload"/>
|
5
|
+
<Link rel="disable" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/action/disableDownload"/>
|
6
|
+
<Link rel="ovf" type="text/xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/ovf"/>
|
7
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.owner+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/owner"/>
|
8
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/metadata"/>
|
9
|
+
<Description/>
|
10
|
+
<Owner type="application/vnd.vmware.vcloud.owner+xml">
|
11
|
+
<User type="application/vnd.vmware.admin.user+xml" name="system" href="https://some.vcloud.com/api/admin/user/aaa-bbb-ccc-ddd-eee-fff"/>
|
12
|
+
</Owner>
|
13
|
+
<Children>
|
14
|
+
<Vm goldMaster="false" name="Ubuntu 10.04.4 LTS" id="urn:vcloud:vm:aaa-bbb-ccc-ddd-eee-fff" type="application/vnd.vmware.vcloud.vm+xml" href="https://some.vcloud.com/api/vAppTemplate/vm-aaa-bbb-ccc-ddd-eee-fff">
|
15
|
+
<Link rel="up" type="application/vnd.vmware.vcloud.vAppTemplate+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff"/>
|
16
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://some.vcloud.com/api/vAppTemplate/vm-aaa-bbb-ccc-ddd-eee-fff/metadata"/>
|
17
|
+
<Description/>
|
18
|
+
<NetworkConnectionSection type="application/vnd.vmware.vcloud.networkConnectionSection+xml" href="https://some.vcloud.com/api/vAppTemplate/vm-aaa-bbb-ccc-ddd-eee-fff/networkConnectionSection/" ovf:required="false">
|
19
|
+
<ovf:Info>Specifies the available VM network connections</ovf:Info>
|
20
|
+
<PrimaryNetworkConnectionIndex>0</PrimaryNetworkConnectionIndex>
|
21
|
+
<NetworkConnection network="none" needsCustomization="true">
|
22
|
+
<NetworkConnectionIndex>0</NetworkConnectionIndex>
|
23
|
+
<IsConnected>false</IsConnected>
|
24
|
+
<MACAddress>00:00:00:00:00:00</MACAddress>
|
25
|
+
<IpAddressAllocationMode>NONE</IpAddressAllocationMode>
|
26
|
+
</NetworkConnection>
|
27
|
+
</NetworkConnectionSection>
|
28
|
+
<GuestCustomizationSection type="application/vnd.vmware.vcloud.guestCustomizationSection+xml" href="https://some.vcloud.com/api/vAppTemplate/vm-aaa-bbb-ccc-ddd-eee-fff/guestCustomizationSection/" ovf:required="false">
|
29
|
+
<ovf:Info>Specifies Guest OS Customization Settings</ovf:Info>
|
30
|
+
<Enabled>true</Enabled>
|
31
|
+
<ChangeSid>false</ChangeSid>
|
32
|
+
<VirtualMachineId>vm-aaa-bbb-ccc-ddd-eee-fff</VirtualMachineId>
|
33
|
+
<JoinDomainEnabled>false</JoinDomainEnabled>
|
34
|
+
<UseOrgSettings>false</UseOrgSettings>
|
35
|
+
<AdminPasswordEnabled>true</AdminPasswordEnabled>
|
36
|
+
<AdminPasswordAuto>true</AdminPasswordAuto>
|
37
|
+
<ResetPasswordRequired>false</ResetPasswordRequired>
|
38
|
+
<ComputerName>Ubuntu10044-001</ComputerName>
|
39
|
+
</GuestCustomizationSection>
|
40
|
+
<VAppScopedLocalId>Ubuntu 10.04.4 LTS</VAppScopedLocalId>
|
41
|
+
</Vm>
|
42
|
+
</Children>
|
43
|
+
<ovf:NetworkSection xmlns:vcloud="http://www.vmware.com/vcloud/v1.5" vcloud:href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/networkSection/" vcloud:type="application/vnd.vmware.vcloud.networkSection+xml">
|
44
|
+
<ovf:Info>The list of logical networks</ovf:Info>
|
45
|
+
<ovf:Network ovf:name="none">
|
46
|
+
<ovf:Description>This is a special place-holder used for disconnected network interfaces.</ovf:Description>
|
47
|
+
</ovf:Network>
|
48
|
+
</ovf:NetworkSection>
|
49
|
+
<NetworkConfigSection type="application/vnd.vmware.vcloud.networkConfigSection+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/networkConfigSection/" ovf:required="false">
|
50
|
+
<ovf:Info>The configuration parameters for logical networks</ovf:Info>
|
51
|
+
<NetworkConfig networkName="none">
|
52
|
+
<Description>This is a special place-holder used for disconnected network interfaces.</Description>
|
53
|
+
<Configuration>
|
54
|
+
<IpScope>
|
55
|
+
<IsInherited>false</IsInherited>
|
56
|
+
<Gateway>192.168.0.1</Gateway>
|
57
|
+
<Netmask>255.255.255.0</Netmask>
|
58
|
+
<Dns1>192.168.0.100</Dns1>
|
59
|
+
</IpScope>
|
60
|
+
<FenceMode>isolated</FenceMode>
|
61
|
+
</Configuration>
|
62
|
+
<IsDeployed>false</IsDeployed>
|
63
|
+
</NetworkConfig>
|
64
|
+
</NetworkConfigSection>
|
65
|
+
<LeaseSettingsSection type="application/vnd.vmware.vcloud.leaseSettingsSection+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/leaseSettingsSection/" ovf:required="false">
|
66
|
+
<ovf:Info>Lease settings section</ovf:Info>
|
67
|
+
<Link rel="edit" type="application/vnd.vmware.vcloud.leaseSettingsSection+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/leaseSettingsSection/"/>
|
68
|
+
<StorageLeaseInSeconds>0</StorageLeaseInSeconds>
|
69
|
+
</LeaseSettingsSection>
|
70
|
+
<CustomizationSection type="application/vnd.vmware.vcloud.customizationSection+xml" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff/customizationSection/" ovf:required="false">
|
71
|
+
<ovf:Info>VApp template customization section</ovf:Info>
|
72
|
+
<CustomizeOnInstantiate>true</CustomizeOnInstantiate>
|
73
|
+
</CustomizationSection>
|
74
|
+
</VAppTemplate>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Vdc xmlns="http://www.vmware.com/vcloud/v1.5" status="1" name="TestVDC" id="urn:vcloud:vdc:aaa-bbb-ccc-ddd-eee-fff" type="application/vnd.vmware.vcloud.vdc+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://127.0.0.1/api/v1.5/schema/master.xsd">
|
3
|
+
<Link rel="up" type="application/vnd.vmware.vcloud.org+xml" href="https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff"/>
|
4
|
+
<Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/metadata"/>
|
5
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/uploadVAppTemplate"/>
|
6
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.media+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/media"/>
|
7
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/instantiateVAppTemplate"/>
|
8
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.cloneVAppParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/cloneVApp"/>
|
9
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.cloneVAppTemplateParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/cloneVAppTemplate"/>
|
10
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.cloneMediaParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/cloneMedia"/>
|
11
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.captureVAppParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/captureVApp"/>
|
12
|
+
<Link rel="add" type="application/vnd.vmware.vcloud.composeVAppParams+xml" href="https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff/action/composeVApp"/>
|
13
|
+
<AllocationModel>AllocationVApp</AllocationModel>
|
14
|
+
<StorageCapacity>
|
15
|
+
<Units>MB</Units>
|
16
|
+
<Allocated>0</Allocated>
|
17
|
+
<Limit>0</Limit>
|
18
|
+
<Used>17068</Used>
|
19
|
+
<Overhead>0</Overhead>
|
20
|
+
</StorageCapacity>
|
21
|
+
<ComputeCapacity>
|
22
|
+
<Cpu>
|
23
|
+
<Units>MHz</Units>
|
24
|
+
<Allocated>0</Allocated>
|
25
|
+
<Limit>0</Limit>
|
26
|
+
<Used>0</Used>
|
27
|
+
<Overhead>0</Overhead>
|
28
|
+
</Cpu>
|
29
|
+
<Memory>
|
30
|
+
<Units>MB</Units>
|
31
|
+
<Allocated>0</Allocated>
|
32
|
+
<Limit>0</Limit>
|
33
|
+
<Used>0</Used>
|
34
|
+
<Overhead>0</Overhead>
|
35
|
+
</Memory>
|
36
|
+
</ComputeCapacity>
|
37
|
+
<ResourceEntities>
|
38
|
+
<ResourceEntity type="application/vnd.vmware.vcloud.vAppTemplate+xml" name="Ubuntu 12.04" href="https://some.vcloud.com/api/vAppTemplate/vappTemplate-aaa-bbb-ccc-ddd-eee-fff"/>
|
39
|
+
<ResourceEntity type="application/vnd.vmware.vcloud.media+xml" name="Ubuntu 12.04" href="https://some.vcloud.com/api/media/aaa-bbb-ccc-ddd-eee-fff"/>
|
40
|
+
</ResourceEntities>
|
41
|
+
<AvailableNetworks>
|
42
|
+
<Network type="application/vnd.vmware.vcloud.network+xml" name="Dev VLAN" href="https://some.vcloud.com/api/network/aaa-bbb-ccc-ddd-eee-fff"/>
|
43
|
+
</AvailableNetworks>
|
44
|
+
<Capabilities>
|
45
|
+
<SupportedHardwareVersions>
|
46
|
+
<SupportedHardwareVersion>vmx-04</SupportedHardwareVersion>
|
47
|
+
<SupportedHardwareVersion>vmx-07</SupportedHardwareVersion>
|
48
|
+
<SupportedHardwareVersion>vmx-08</SupportedHardwareVersion>
|
49
|
+
</SupportedHardwareVersions>
|
50
|
+
</Capabilities>
|
51
|
+
<NicQuota>0</NicQuota>
|
52
|
+
<NetworkQuota>1024</NetworkQuota>
|
53
|
+
<VmQuota>0</VmQuota>
|
54
|
+
<IsEnabled>true</IsEnabled>
|
55
|
+
</Vdc>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
include WebMock::API
|
4
|
+
|
5
|
+
describe VCloud::InstantiateVAppTemplateParams do
|
6
|
+
|
7
|
+
it 'should #initialize' do
|
8
|
+
params = VCloud::InstantiateVAppTemplateParams.new
|
9
|
+
params.name.should == ''
|
10
|
+
params.deploy.should == true
|
11
|
+
params.power_on.should == false
|
12
|
+
params.description.should == ''
|
13
|
+
params.network_config_section.should be_nil
|
14
|
+
params.source_reference.should be_nil
|
15
|
+
params.is_source_delete.should == false
|
16
|
+
params.all_eulas_accepted.should == false
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'when parsing xml #from_xml' do
|
20
|
+
before(:each) do
|
21
|
+
@params = VCloud::InstantiateVAppTemplateParams.from_xml(fixture_file('instantiate_vapp_template_params.xml'))
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should have correct values' do
|
25
|
+
@params.name.should == 'SomeVAppTemplateParams'
|
26
|
+
@params.deploy.should == true
|
27
|
+
@params.power_on.should == false
|
28
|
+
@params.description.should == 'some descriptive string'
|
29
|
+
@params.network_config_section.should_not be_nil
|
30
|
+
@params.source_reference.href.should == 'https://vcloud.example.com/api/vAppTemplate/vappTemplate-111'
|
31
|
+
@params.is_source_delete.should == false
|
32
|
+
@params.all_eulas_accepted.should == true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
it "should serialize #to_xml" do
|
38
|
+
params = VCloud::InstantiateVAppTemplateParams.new
|
39
|
+
params.name = 'SomeVAppTemplateParams'
|
40
|
+
params.deploy = false
|
41
|
+
params.power_on = true
|
42
|
+
params.description = 'some descriptive string'
|
43
|
+
params.network_config_section = 'blagow'
|
44
|
+
params.source_reference = VCloud::Reference.new :href => 'https://vcloud.example.com/api/vAppTemplate/vappTemplate-111'
|
45
|
+
params.is_source_delete = true
|
46
|
+
params.all_eulas_accepted = true
|
47
|
+
|
48
|
+
xml = params.to_xml
|
49
|
+
doc = Nokogiri::XML(xml)
|
50
|
+
|
51
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/@name').text.should == "SomeVAppTemplateParams"
|
52
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/@deploy').text.should == "false"
|
53
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/@powerOn').text.should == 'true'
|
54
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/xmlns:Description').text.should == 'some descriptive string'
|
55
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/xmlns:InstantiationParams/xmlns:NetworkConfigSection').text.should == 'blagow'
|
56
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/xmlns:Source/@href').text.should == 'https://vcloud.example.com/api/vAppTemplate/vappTemplate-111'
|
57
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/xmlns:IsSourceDelete').text.should == 'true'
|
58
|
+
doc.xpath('/xmlns:InstantiateVAppTemplateParams/xmlns:AllEULAsAccepted').text.should == 'true'
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
include WebMock::API
|
4
|
+
|
5
|
+
describe VCloud::NetworkConfigSection do
|
6
|
+
|
7
|
+
it 'should #initialize' do
|
8
|
+
net_section = VCloud::NetworkConfigSection.new
|
9
|
+
net_section.network_configs.should have(0).items
|
10
|
+
net_section.info.should == 'Configuration parameters for logical networks'
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'when parsing #from_xml' do
|
14
|
+
before(:each) do
|
15
|
+
@net_section = VCloud::NetworkConfigSection.from_xml(fixture_file('network_config_section.xml'))
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should have correct values' do
|
19
|
+
@net_section.href.should == 'https://vcloud.example.dev/api/vAppTemplate/vappTemplate-1/networkConfigSection/'
|
20
|
+
@net_section.type.should == 'application/vnd.vmware.vcloud.networkConfigSection+xml'
|
21
|
+
@net_section.info.should == 'The configuration parameters for logical networks'
|
22
|
+
@net_section.network_configs.should have(1).items
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should serialize #to_xml" do
|
27
|
+
net_section = VCloud::NetworkConfigSection.new
|
28
|
+
net_section.href = 'http://some.href.com'
|
29
|
+
net_section.type = 'some type'
|
30
|
+
net_section.info = 'info text'
|
31
|
+
net_section.network_configs << "net section text"
|
32
|
+
|
33
|
+
xml = net_section.to_xml
|
34
|
+
doc = Nokogiri::XML(xml)
|
35
|
+
|
36
|
+
doc.xpath('/xmlns:NetworkConfigSection/@href').text.should == "http://some.href.com"
|
37
|
+
doc.xpath('/xmlns:NetworkConfigSection/@type').text.should == "some type"
|
38
|
+
doc.xpath('/xmlns:NetworkConfigSection/ovf:Info').text.should == "info text"
|
39
|
+
doc.xpath('/xmlns:NetworkConfigSection/xmlns:NetworkConfig').text.should == "net section text"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VCloud::NetworkConfig do
|
4
|
+
|
5
|
+
describe 'when parsing #from_xml' do
|
6
|
+
before(:each) do
|
7
|
+
@config = VCloud::NetworkConfig.from_xml(fixture_file('network_config.xml'))
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should have correct values' do
|
11
|
+
@config.network_name.should == 'TestVappNetworkConfigNetwork'
|
12
|
+
@config.parent_network_reference.href.should == 'http://parentnetwork.com'
|
13
|
+
@config.fence_mode.should == 'bridged'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should serialize #to_xml' do
|
18
|
+
config = VCloud::NetworkConfig.new
|
19
|
+
config.network_name = 'netname'
|
20
|
+
config.parent_network_reference = VCloud::Reference.new :href => 'http://parentnetwork.com'
|
21
|
+
config.fence_mode = 'isolated'
|
22
|
+
|
23
|
+
xml = config.to_xml
|
24
|
+
doc = Nokogiri::XML(xml)
|
25
|
+
|
26
|
+
doc.xpath('/NetworkConfig/@networkName').text.should == 'netname'
|
27
|
+
doc.xpath('/NetworkConfig/Configuration/ParentNetwork/@href').text.should == 'http://parentnetwork.com'
|
28
|
+
doc.xpath('/NetworkConfig/Configuration/FenceMode').text.should == 'isolated'
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/spec/org_spec.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
include WebMock::API
|
4
|
+
|
5
|
+
describe VCloud::Org do
|
6
|
+
before(:each) do
|
7
|
+
@org = VCloud::Org.from_xml(fixture_file('org.xml'))
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'parses xml #from_xml' do
|
11
|
+
it 'should have correct values' do
|
12
|
+
@org.name.should == 'someorg'
|
13
|
+
@org.id.should == 'urn:vcloud:org:aaa-bbb-ccc-ddd-eee-fff'
|
14
|
+
@org.type.should == 'application/vnd.vmware.vcloud.org+xml'
|
15
|
+
@org.href.should == 'https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff'
|
16
|
+
@org.description.should == 'This is an example organization'
|
17
|
+
@org.full_name.should == 'Example Organization'
|
18
|
+
@org.links.should have(6).items
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should filter #vdc_links' do
|
22
|
+
@org.vdc_links.should have(1).item
|
23
|
+
@org.vdc_links[0].type.should == "application/vnd.vmware.vcloud.vdc+xml"
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should filter #catalog_links' do
|
27
|
+
@org.catalog_links.should have(1).item
|
28
|
+
@org.catalog_links[0].type.should == "application/vnd.vmware.vcloud.catalog+xml"
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should filter #org_network_links' do
|
32
|
+
@org.org_network_links.should have(1).item
|
33
|
+
@org.org_network_links[0].type.should == "application/vnd.vmware.vcloud.orgNetwork+xml"
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should #get_catalog_links_by_name' do
|
37
|
+
hash = @org.get_catalog_links_by_name
|
38
|
+
|
39
|
+
hash.should have(1).items
|
40
|
+
hash['SuperCool Catalog'].href.should == 'https://some.vcloud.com/api/catalog/aaa-bbb-ccc-ddd-eee-fff'
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should #get_vdc_links_by_name' do
|
44
|
+
hash = @org.get_vdc_links_by_name
|
45
|
+
|
46
|
+
hash.should have(1).items
|
47
|
+
hash['SomeVDC'].href.should == 'https://some.vcloud.com/api/vdc/aaa-bbb-ccc-ddd-eee-fff'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should #get_catalog_from_name if name exists' do
|
52
|
+
link = @org.get_catalog_links_by_name['SuperCool Catalog']
|
53
|
+
VCloud::Catalog.should_receive(:from_reference).with(link, @session).and_return('not nil')
|
54
|
+
|
55
|
+
catalog = @org.get_catalog_from_name('SuperCool Catalog', @session)
|
56
|
+
|
57
|
+
catalog.should_not be_nil
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should return nil #get_catalog_from_name if name does not exist' do
|
61
|
+
catalog = @org.get_catalog_from_name('no exist')
|
62
|
+
|
63
|
+
catalog.should be_nil
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should #get_vdc_from_name if name exists' do
|
67
|
+
link = @org.get_vdc_links_by_name['SomeVDC']
|
68
|
+
VCloud::Vdc.should_receive(:from_reference).with(link, @session).and_return('not nil')
|
69
|
+
|
70
|
+
vdc = @org.get_vdc_from_name('SomeVDC', @session)
|
71
|
+
|
72
|
+
vdc.should_not be_nil
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should return nil #get_vdc_from_name if name does not exist' do
|
76
|
+
vdc = @org.get_vdc_from_name('no exist')
|
77
|
+
|
78
|
+
vdc.should be_nil
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should retrieve organization #from_reference' do
|
82
|
+
stub_request(:get, "https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff").
|
83
|
+
with(:headers => {'Accept'=>'application/vnd.vmware.vcloud.org+xml;version=1.5', 'X-Vcloud-Authorization'=>'abc123xyz'}).
|
84
|
+
to_return(:status => 200, :body => fixture_file('org.xml'))
|
85
|
+
|
86
|
+
org = VCloud::Org.from_reference(stub(:href => 'https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff'), @session)
|
87
|
+
|
88
|
+
WebMock.should have_requested(:get, 'https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff').
|
89
|
+
with(:headers => {'Accept'=>'application/vnd.vmware.vcloud.org+xml;version=1.5', 'X-Vcloud-Authorization'=>'abc123xyz'})
|
90
|
+
|
91
|
+
org.name.should == 'someorg'
|
92
|
+
org.id.should == 'urn:vcloud:org:aaa-bbb-ccc-ddd-eee-fff'
|
93
|
+
org.type.should == 'application/vnd.vmware.vcloud.org+xml'
|
94
|
+
org.href.should == 'https://some.vcloud.com/api/org/aaa-bbb-ccc-ddd-eee-fff'
|
95
|
+
org.description.should == 'This is an example organization'
|
96
|
+
org.full_name.should == 'Example Organization'
|
97
|
+
org.links.should have(6).items
|
98
|
+
end
|
99
|
+
end
|