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.
Files changed (56) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +39 -0
  4. data/LICENSE +7 -0
  5. data/README.md +53 -0
  6. data/Rakefile +8 -0
  7. data/examples/hello_vcloud.rb +183 -0
  8. data/lib/vcloud.rb +16 -0
  9. data/lib/vcloud/base_vcloud_entity.rb +59 -0
  10. data/lib/vcloud/client.rb +117 -0
  11. data/lib/vcloud/constants.rb +38 -0
  12. data/lib/vcloud/errors.rb +31 -0
  13. data/lib/vcloud/parses_xml.rb +33 -0
  14. data/lib/vcloud/rest_api.rb +91 -0
  15. data/lib/vcloud/user.rb +5 -0
  16. data/lib/vcloud/user/catalog.rb +32 -0
  17. data/lib/vcloud/user/catalog_item.rb +10 -0
  18. data/lib/vcloud/user/error.rb +12 -0
  19. data/lib/vcloud/user/instantiate_vapp_template_params.rb +36 -0
  20. data/lib/vcloud/user/link.rb +30 -0
  21. data/lib/vcloud/user/network_config.rb +20 -0
  22. data/lib/vcloud/user/network_config_section.rb +20 -0
  23. data/lib/vcloud/user/org.rb +69 -0
  24. data/lib/vcloud/user/org_list.rb +10 -0
  25. data/lib/vcloud/user/reference.rb +27 -0
  26. data/lib/vcloud/user/task.rb +54 -0
  27. data/lib/vcloud/user/vapp.rb +103 -0
  28. data/lib/vcloud/user/vdc.rb +32 -0
  29. data/lib/version.rb +3 -0
  30. data/spec/catalog_item_spec.rb +35 -0
  31. data/spec/catalog_spec.rb +62 -0
  32. data/spec/client_spec.rb +87 -0
  33. data/spec/fixtures/catalog.xml +8 -0
  34. data/spec/fixtures/catalog_item.xml +6 -0
  35. data/spec/fixtures/error_login_404.html +24 -0
  36. data/spec/fixtures/instantiate_vapp_template_params.xml +11 -0
  37. data/spec/fixtures/network_config.xml +6 -0
  38. data/spec/fixtures/network_config_section.xml +6 -0
  39. data/spec/fixtures/org.xml +11 -0
  40. data/spec/fixtures/org_list.xml +4 -0
  41. data/spec/fixtures/session.xml +7 -0
  42. data/spec/fixtures/task.xml +6 -0
  43. data/spec/fixtures/vapp.xml +31 -0
  44. data/spec/fixtures/vapp_template.xml +74 -0
  45. data/spec/fixtures/vdc.xml +55 -0
  46. data/spec/instantiate_vapp_template_params_spec.rb +60 -0
  47. data/spec/network_config_section_spec.rb +42 -0
  48. data/spec/network_config_spec.rb +31 -0
  49. data/spec/org_spec.rb +99 -0
  50. data/spec/rest_api_spec.rb +48 -0
  51. data/spec/spec_helper.rb +20 -0
  52. data/spec/task_spec.rb +74 -0
  53. data/spec/vapp_spec.rb +85 -0
  54. data/spec/vdc_spec.rb +83 -0
  55. data/vcloud.gemspec +19 -0
  56. 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
+ <NetworkConfig networkName="TestVappNetworkConfigNetwork">
2
+ <Configuration>
3
+ <ParentNetwork href="http://parentnetwork.com"/>
4
+ <FenceMode>bridged</FenceMode>
5
+ </Configuration>
6
+ </NetworkConfig>
@@ -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
@@ -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