Collection and Model representation in vcloud_director fog provider.
organizations organization vdcs -> vdc -> vapps -> vapp -> vms -> vm -> customizations -> script -> network -> disks -> disk -> tags -> tag -> power_on networks -> network catalogs -> catalog -> catalog_items -> catalog_item -> instantiate_vapp medias -> media
Every collection supports the following methods:
Method Name | Lazy Load ----------------- | --------- get(id) | false get_by_name(name) | false all | true all(false) | false
When listing a collection (eg: vdc.vapps
), lazy load will be
used by default
to improve the performance, otherwise it will make as many
requests as items
are in the collection.
You can disable lazy load using the explict caller and passing a
false
option: vdc.vapps.all(false)
.
Attributes showing the value NonLoaded will be populated when accessing the value, if there are more than one NonLoaded values the first time accessing on any of those values will populate the others.
You can explicitly load those attributes with the reload
method:
org = vcloud.organizations.first org.reload
Lazy load isn't used with get
and get_by_name
methods are used.
vcloud = Fog::Compute::VcloudDirector.new( :vcloud_director_username => "<username>@<org_name>", :vcloud_director_password => "<password>", :vcloud_director_host => 'api.example.com', :vcloud_director_show_progress => false, # task progress bar on/off )
Note that when listing, by default only the attributes id
,
name
, type
,
and href
are loaded. To
disable lazy loading, and load all attributes, just
specify
false
. Another option is to reload a specific
item:
vcloud.organizations.first.reload
vcloud.organizations
<Fog::Compute::VcloudDirector::Organizations [ <Fog::Compute::VcloudDirector::Organization id="c6a4c623-c158-41cf-a87a-dbc1637ad55a", name="DevOps", type="application/vnd.vmware.vcloud.org+xml", href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a", description=NonLoaded > ] >
org = vcloud.organizations.get("c6a4c623-c158-41cf-a87a-dbc1637ad55a")
org = vcloud.organizations.get_by_name("DevOps")
It shows the Organization's vDCs.
org = vcloud.organizations.first org.vdcs
<Fog::Compute::VcloudDirector::Vdcs organization= <Fog::Compute::VcloudDirector::Organization id="c6a4c623-c158-41cf-a87a-dbc1637ad55a", name="DevOps", type="application/vnd.vmware.vcloud.org+xml", href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a", description=NonLoaded > [ <Fog::Compute::VcloudDirector::Vdc id="9a06a16b-12c6-44dc-aee1-06aa52262ea3", name="DevOps - VDC", type="application/vnd.vmware.vcloud.vdc+xml", href="https://example.com/api/vdc/9a06a16b-12c6-44dc-aee1-06aa52262ea3", description=NonLoaded, available_networks=NonLoaded, compute_capacity_cpu=NonLoaded, compute_capacity_memory=NonLoaded, storage_capacity=NonLoaded, allocation_model=NonLoaded, capabilities=NonLoaded, nic_quota=NonLoaded, network_quota=NonLoaded, vm_quota=NonLoaded, is_enabled=NonLoaded > ] >
org = vcloud.organizations.first org.vdcs.get_by_name("DevOps - VDC")
<Fog::Compute::VcloudDirector::Vdc id="9a06a16b-12c6-44dc-aee1-06aa52262ea3", name="DevOps - VDC", type="application/vnd.vmware.vcloud.vdc+xml", href="https://example.com/api/vdc/9a06a16b-12c6-44dc-aee1-06aa52262ea3", description="", available_networks={:type=>"application/vnd.vmware.vcloud.network+xml", :name=>"DevOps - Dev Network Connection", :href=>"https://example.com/api/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17"}, compute_capacity_cpu=NonLoaded, compute_capacity_memory={:Units=>"MB", :Allocated=>"0", :Limit=>"0", :Used=>"3584", :Overhead=>"65"}, storage_capacity={:Units=>"MB", :Allocated=>"1048320", :Limit=>"1048320", :Used=>"903168", :Overhead=>"0"}, allocation_model="AllocationVApp", capabilities={:SupportedHardwareVersion=>"vmx-09"}, nic_quota=0, network_quota=1024, vm_quota=0, is_enabled=true >
org = vcloud.organizations.first vdc = org.vdcs.first vdc.vapps
<Fog::Compute::VcloudDirector::Vapps vdc= <Fog::Compute::VcloudDirector::Vdc id="9a06a16b-12c6-44dc-aee1-06aa52262ea3", name="DevOps - VDC", type="application/vnd.vmware.vcloud.vdc+xml", href="https://example.com/api/vdc/9a06a16b-12c6-44dc-aee1-06aa52262ea3", description=NonLoaded, available_networks=NonLoaded, compute_capacity_cpu=NonLoaded, compute_capacity_memory=NonLoaded, storage_capacity=NonLoaded, allocation_model=NonLoaded, capabilities=NonLoaded, nic_quota=NonLoaded, network_quota=NonLoaded, vm_quota=NonLoaded, is_enabled=NonLoaded > [ <Fog::Compute::VcloudDirector::Vapp id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="segundo", type="application/vnd.vmware.vcloud.vApp+xml", href="https://example.com/api/vApp/vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", description=NonLoaded, deployed=NonLoaded, status=NonLoaded, deployment_lease_in_seconds=NonLoaded, storage_lease_in_seconds=NonLoaded, startup_section=NonLoaded, network_section=NonLoaded, network_config=NonLoaded, owner=NonLoaded, InMaintenanceMode=NonLoaded >, <Fog::Compute::VcloudDirector::Vapp id="vapp-6ac43e0e-13e2-4642-a58a-6dc3a12f585b", name="vApp_restebanez_9", type="application/vnd.vmware.vcloud.vApp+xml", href="https://example.com/api/vApp/vapp-6ac43e0e-13e2-4642-a58a-6dc3a12f585b", description=NonLoaded, deployed=NonLoaded, status=NonLoaded, deployment_lease_in_seconds=NonLoaded, storage_lease_in_seconds=NonLoaded, startup_section=NonLoaded, network_section=NonLoaded, network_config=NonLoaded, owner=NonLoaded, InMaintenanceMode=NonLoaded > ] >
org = vcloud.organizations.first vdc = org.vdcs.first vdc.vapps.get_by_name("segundo")
<Fog::Compute::VcloudDirector::Vapp id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="segundo", type="application/vnd.vmware.vcloud.vApp+xml", href="https://example.com/api/vApp/vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", description="", deployed=false, status="8", deployment_lease_in_seconds=NonLoaded, storage_lease_in_seconds="7776000", startup_section={:ovf_stopDelay=>"0", :ovf_stopAction=>"powerOff", :ovf_startDelay=>"0", :ovf_startAction=>"powerOn", :ovf_order=>"0", :ovf_id=>"DEVWEB"}, network_section={:ovf_name=>"DevOps - Dev Network Connection", :"ovf:Description"=>""}, network_config={:networkName=>"DevOps - Dev Network Connection", :Link=>{:rel=>"repair", :href=>"https://example.com/api/admin/network/82a07044-4dda-4a3e-a53d-8981cf0d5baa/action/reset"}, :Description=>"", :Configuration=>{:IpScope=>{:IsInherited=>"true", :Gateway=>"10.192.0.1", :Netmask=>"255.255.252.0", :Dns1=>"10.192.0.11", :Dns2=>"10.192.0.12", :DnsSuffix=>"dev.ad.mdsol.com", :IpRanges=>{:IpRange=>{:StartAddress=>"10.192.0.100", :EndAddress=>"10.192.3.254"}}}, :ParentNetwork=>{:name=>"DevOps - Dev Network Connection", :id=>"d5f47bbf-de27-4cf5-aaaa-56772f2ccd17", :href=>"https://example.com/api/admin/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17"}, :FenceMode=>"bridged", :RetainNetInfoAcrossDeployments=>"false"}, :IsDeployed=>"false"}, owner={:type=>"application/vnd.vmware.admin.user+xml", :name=>"restebanez", :href=>"https://example.com/api/admin/user/c3ca7b97-ddea-425f-8bdb-1fdb946f7349"}, InMaintenanceMode=false >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vapp.vms
<Fog::Compute::VcloudDirector::Vms vapp= <Fog::Compute::VcloudDirector::Vapp id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="segundo", type="application/vnd.vmware.vcloud.vApp+xml", href="https://example.com/api/vApp/vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", description="", deployed=false, status="8", deployment_lease_in_seconds=NonLoaded, storage_lease_in_seconds="7776000", startup_section={:ovf_stopDelay=>"0", :ovf_stopAction=>"powerOff", :ovf_startDelay=>"0", :ovf_startAction=>"powerOn", :ovf_order=>"0", :ovf_id=>"DEVWEB"}, network_section={:ovf_name=>"DevOps - Dev Network Connection", :"ovf:Description"=>""}, network_config={:networkName=>"DevOps - Dev Network Connection", :Link=>{:rel=>"repair", :href=>"https://example.com/api/admin/network/82a07044-4dda-4a3e-a53d-8981cf0d5baa/action/reset"}, :Description=>"", :Configuration=>{:IpScope=>{:IsInherited=>"true", :Gateway=>"10.192.0.1", :Netmask=>"255.255.252.0", :Dns1=>"10.192.0.11", :Dns2=>"10.192.0.12", :DnsSuffix=>"dev.ad.mdsol.com", :IpRanges=>{:IpRange=>{:StartAddress=>"10.192.0.100", :EndAddress=>"10.192.3.254"}}}, :ParentNetwork=>{:name=>"DevOps - Dev Network Connection", :id=>"d5f47bbf-de27-4cf5-aaaa-56772f2ccd17", :href=>"https://example.com/api/admin/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17"}, :FenceMode=>"bridged", :RetainNetInfoAcrossDeployments=>"false"}, :IsDeployed=>"false"}, owner={:type=>"application/vnd.vmware.admin.user+xml", :name=>"restebanez", :href=>"https://example.com/api/admin/user/c3ca7b97-ddea-425f-8bdb-1fdb946f7349"}, InMaintenanceMode=false > [ <Fog::Compute::VcloudDirector::Vm id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="DEVWEB", type="application/vnd.vmware.vcloud.vm+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", status="off", operating_system="Microsoft Windows Server 2008 R2 (64-bit)", ip_address="10.192.0.144", cpu=3, memory=3584, hard_disks=[{"Hard disk 1"=>163840}] > ] >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vapp.vms.get_by_name("DEVWEB")
<Fog::Compute::VcloudDirector::Vm id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="DEVWEB", type="application/vnd.vmware.vcloud.vm+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", status="off", operating_system="Microsoft Windows Server 2008 R2 (64-bit)", ip_address="10.192.0.144", cpu=3, memory=3584, hard_disks=[{"Hard disk 1"=>163840}] >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.cpu = 4
4
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.memory = 4096
4096
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.power_on
true
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.customization
<Fog::Compute::VcloudDirector::VmCustomization id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", type="application/vnd.vmware.vcloud.guestCustomizationSection+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192/guestCustomizationSection/", enabled=false, change_sid=false, join_domain_enabled=false, use_org_settings=false, admin_password_auto=false, admin_password='', admin_password_enabled=false, reset_password_required=false, virtual_machine_id="2ddeea36-ac71-470f-abc5-c6e3c2aca192", computer_name="DEVWEB-001", has_customization_script=true >
Customization attributes model requires to save
it after
setting the
attributes.
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") customization = vm.customization customization.compute_name = "NEWNAME" customization.enabled = false customization.script = "new userdata script" customization.save
true
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.network
<Fog::Compute::VcloudDirector::VmNetwork id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", type="application/vnd.vmware.vcloud.networkConnectionSection+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192/networkConnectionSection/", info="Specifies the available VM network connections", primary_network_connection_index=0, network="DevOps - Dev Network Connection", needs_customization=true, network_connection_index=0, is_connected=true, mac_address="00:50:56:01:00:ea", ip_address_allocation_mode="POOL" >
Network attributes model requires to save
it after setting the
attributes.
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") network = vm.network network.is_connected = false network.ip_address_allocation_mode = "DHCP" network.save
true
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.disks
<Fog::Compute::VcloudDirector::Disks vm= <Fog::Compute::VcloudDirector::Vm id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="DEVWEB", type="application/vnd.vmware.vcloud.vm+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", status="off", operating_system="Microsoft Windows Server 2008 R2 (64-bit)", ip_address="10.192.0.144", cpu=4, memory=4096, hard_disks=[{"Hard disk 1"=>163840}] > [ <Fog::Compute::VcloudDirector::Disk id=2, address=0, description="SCSI Controller", name="SCSI Controller 0", resource_sub_type="lsilogicsas", resource_type=6, address_on_parent=nil, parent=nil, capacity=nil, bus_sub_type=nil, bus_type=nil >, <Fog::Compute::VcloudDirector::Disk id=2000, address=nil, description="Hard disk", name="Hard disk 1", resource_sub_type=nil, resource_type=17, address_on_parent=0, parent=2, capacity=163840, bus_sub_type="lsilogicsas", bus_type=6 >, <Fog::Compute::VcloudDirector::Disk id=3, address=0, description="IDE Controller", name="IDE Controller 0", resource_sub_type=nil, resource_type=5, address_on_parent=nil, parent=nil, capacity=nil, bus_sub_type=nil, bus_type=nil > ] >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.disks.create(1024)
true
The new disk should show up.
>> vm.disks <Fog::Compute::VcloudDirector::Disks vm= <Fog::Compute::VcloudDirector::Vm id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="DEVWEB", type="application/vnd.vmware.vcloud.vm+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", status="off", operating_system="Microsoft Windows Server 2008 R2 (64-bit)", ip_address="10.192.0.144", cpu=4, memory=4096, hard_disks=[{"Hard disk 1"=>163840}] > [ <Fog::Compute::VcloudDirector::Disk id=2, address=0, description="SCSI Controller", name="SCSI Controller 0", resource_sub_type="lsilogicsas", resource_type=6, address_on_parent=nil, parent=nil, capacity=nil, bus_sub_type=nil, bus_type=nil >, <Fog::Compute::VcloudDirector::Disk id=2000, address=nil, description="Hard disk", name="Hard disk 1", resource_sub_type=nil, resource_type=17, address_on_parent=0, parent=2, capacity=163840, bus_sub_type="lsilogicsas", bus_type=6 >, <Fog::Compute::VcloudDirector::Disk id=2001, address=nil, description="Hard disk", name="Hard disk 2", resource_sub_type=nil, resource_type=17, address_on_parent=1, parent=2, capacity=1024, bus_sub_type="lsilogicsas", bus_type=6 >, <Fog::Compute::VcloudDirector::Disk id=3, address=0, description="IDE Controller", name="IDE Controller 0", resource_sub_type=nil, resource_type=5, address_on_parent=nil, parent=nil, capacity=nil, bus_sub_type=nil, bus_type=nil > ] >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") disk = vm.disks.get_by_name("Hard disk 2") disk.capacity = 2048
true
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") disk = vm.disks.get_by_name("Hard disk 2") disk.destroy
true
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.tags
<Fog::Compute::VcloudDirector::Tags vm= <Fog::Compute::VcloudDirector::Vm id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6", name="DEVWEB", type="application/vnd.vmware.vcloud.vm+xml", href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192", status="off", operating_system="Microsoft Windows Server 2008 R2 (64-bit)", ip_address="10.192.0.144", cpu=4, memory=4096, hard_disks=[{"Hard disk 1"=>163840}] > [ <Fog::Compute::VcloudDirector::Tag id="environment", value="devlab" >, <Fog::Compute::VcloudDirector::Tag id="product", value="devlabtest" >, <Fog::Compute::VcloudDirector::Tag id="hello", value="ddd" >, <Fog::Compute::VcloudDirector::Tag id="uno", value="jander" > ] >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.tags.create('this_is_a_key', 'this_is_a_value')
true
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.tags.get_by_name('this_is_a_key')
<Fog::Compute::VcloudDirector::Tag id="this_is_a_key", value="this_is_a_value" >
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.tags.get_by_name('this_is_a_key').value = 'new_value'
"new_value"
org = vcloud.organizations.first vdc = org.vdcs.first vapp = vdc.vapps.get_by_name("segundo") vm = vapp.vms.get_by_name("DEVWEB") vm.tags.get_by_name('this_is_a_key').destroy
true
It shows the Organization's Networks.
org = vcloud.organizations.first org.networks
<Fog::Compute::VcloudDirector::Networks organization= <Fog::Compute::VcloudDirector::Organization id="c6a4c623-c158-41cf-a87a-dbc1637ad55a", name="DevOps", type="application/vnd.vmware.vcloud.org+xml", href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a", description=NonLoaded > [ <Fog::Compute::VcloudDirector::Network id="d5f47bbf-de27-4cf5-aaaa-56772f2ccd17", name="DevOps - Dev Network Connection", type="application/vnd.vmware.vcloud.orgNetwork+xml", href="https://example.com/api/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17", description=NonLoaded, is_inherited=NonLoaded, gateway=NonLoaded, netmask=NonLoaded, dns1=NonLoaded, dns2=NonLoaded, dns_suffix=NonLoaded, ip_ranges=NonLoaded > ] >
org = vcloud.organizations.first org.networks.get_by_name("DevOps - Dev Network Connection")
<Fog::Compute::VcloudDirector::Network id="d5f47bbf-de27-4cf5-aaaa-56772f2ccd17", name="DevOps - Dev Network Connection", type="application/vnd.vmware.vcloud.orgNetwork+xml", href="https://example.com/api/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17", description=nil, is_inherited=true, gateway="10.192.0.1", netmask="255.255.252.0", dns1="10.192.0.11", dns2="10.192.0.12", dns_suffix="dev.ad.mdsol.com", ip_ranges=[{:start_address=>"10.192.0.100", :end_address=>"10.192.3.254"}] >
It shows the Organization's Catalogs.
org = vcloud.organizations.first org.catalogs
<Fog::Compute::VcloudDirector::Catalogs organization= <Fog::Compute::VcloudDirector::Organization id="c6a4c623-c158-41cf-a87a-dbc1637ad55a", name="DevOps", type="application/vnd.vmware.vcloud.org+xml", href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a", description=NonLoaded > [ <Fog::Compute::VcloudDirector::Catalog id="4ee720e5-173a-41ac-824b-6f4908bac975", name="Public VM Templates", type="application/vnd.vmware.vcloud.catalog+xml", href="https://example.com/api/catalog/4ee720e5-173a-41ac-824b-6f4908bac975", description=NonLoaded, is_published=NonLoaded >, <Fog::Compute::VcloudDirector::Catalog id="ea0c6acf-c9c0-46b7-b19f-4b2d3bf8aa33", name="prueba", type="application/vnd.vmware.vcloud.catalog+xml", href="https://example.com/api/catalog/ea0c6acf-c9c0-46b7-b19f-4b2d3bf8aa33", description=NonLoaded, is_published=NonLoaded > ] >
org = vcloud.organizations.first org.catalogs.get("4ee720e5-173a-41ac-824b-6f4908bac975") # or get_by_name("Public VM Templates")
<Fog::Compute::VcloudDirector::Catalog id="4ee720e5-173a-41ac-824b-6f4908bac975", name="Public VM Templates", type="application/vnd.vmware.vcloud.catalog+xml", href="https://example.com/api/catalog/4ee720e5-173a-41ac-824b-6f4908bac975", description="", is_published=true >
org = vcloud.organizations.first catalog = org.catalogs.first catalog.catalog_items
<Fog::Compute::VcloudDirector::CatalogItems catalog= <Fog::Compute::VcloudDirector::Catalog id="4ee720e5-173a-41ac-824b-6f4908bac975", name="Public VM Templates", type="application/vnd.vmware.vcloud.catalog+xml", href="https://example.com/api/catalog/4ee720e5-173a-41ac-824b-6f4908bac975", description=NonLoaded, is_published=NonLoaded > [ <Fog::Compute::VcloudDirector::CatalogItem id="2bd55629-2734-420c-9068-2ff06a4a8028", name="DEVWIN", type="application/vnd.vmware.vcloud.catalogItem+xml", href="https://example.com/api/catalogItem/2bd55629-2734-420c-9068-2ff06a4a8028", description=NonLoaded, vapp_template_id=NonLoaded >, <Fog::Compute::VcloudDirector::CatalogItem id="5437aa3f-e369-40b2-b985-2e63e1bc9f2e", name="DEVRHL", type="application/vnd.vmware.vcloud.catalogItem+xml", href="https://example.com/api/catalogItem/5437aa3f-e369-40b2-b985-2e63e1bc9f2e", description=NonLoaded, vapp_template_id=NonLoaded >, <Fog::Compute::VcloudDirector::CatalogItem id="54cf5deb-326f-4770-a91a-39048689b6ea", name="DEVAPP", type="application/vnd.vmware.vcloud.catalogItem+xml", href="https://example.com/api/catalogItem/54cf5deb-326f-4770-a91a-39048689b6ea", description=NonLoaded, vapp_template_id=NonLoaded > ] >
org = vcloud.organizations.first catalog = org.catalogs.first catalog.catalog_items.get_by_name('DEVAPP')
<Fog::Compute::VcloudDirector::CatalogItem id="54cf5deb-326f-4770-a91a-39048689b6ea", name="DEVAPP", type="application/vnd.vmware.vcloud.catalogItem+xml", href="https://example.com/api/catalogItem/54cf5deb-326f-4770-a91a-39048689b6ea", description="Windows Server 2008 R2 Application Server", vapp_template_id="vappTemplate-b5902d57-7906-49c8-8af5-bbebe0a60a97" >
It creates a Vapp from a CatalogItem.
org = vcloud.organizations.first catalog = org.catalogs.first template = catalog.catalog_items.get_by_name('DEVAPP') template.instantiate('webserver')
It there were more than one vDC or/and network you'd have to specify it as a second param:
template.instantiate('webserver', { vdc_id: "9a06a16b-12c6-44dc-aee1-06aa52262ea3", network_id: "d5f47bbf-de27-4cf5-aaaa-56772f2ccd17" }