VMware vCloud Director 5.1 API client ↑

Introduction ↑

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

Actions ↑

Every collection supports the following methods:

Method Name | Lazy Load ----------------- | --------- get(id) | false get_by_name(name) | false all | true all(false) | false

Lazy Loading ↑

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.

Initialization ↑

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
)

Organizations ↑

List Organizations ↑

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
      >
    ]
  >

Retrieve an Organization by Id ↑

org = vcloud.organizations.get("c6a4c623-c158-41cf-a87a-dbc1637ad55a")

Retrieve an Organization by Name ↑

org = vcloud.organizations.get_by_name("DevOps")

vDCs ↑

It shows the Organization's vDCs.

List 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
      >
    ]
  >

Retrieve a vDC ↑

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
  >

vApps ↑

List vApps ↑

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
      >
    ]
  >

Retrieve a vApp ↑

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
  >

VMs ↑

List VMs ↑

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}]
      >
    ]
  >

Retrieve a VM ↑

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}]
  >

Modify CPU ↑

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

Modify Memory ↑

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

Power On a VM ↑

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

VM Customization ↑

Retrieve VM Customization ↑

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
  >

Modify VM Customization ↑

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

VM Network ↑

Show VM Networks ↑

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"
  >

Modify one or more attributes ↑

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

VM Disk ↑

List VM Disks ↑

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
      >
    ]
  >

Create a New Disk ↑

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
      >
    ]
  >

Modify the Hard Disk Size ↑

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

Destroy a Hard Disk ↑

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

VM Tags ↑

List VM Tags ↑

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"
      >
    ]
  >

Create a Tag ↑

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

Retrieve a Tag ↑

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"
  >

Modify a Tag ↑

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"

Destroy a Tag ↑

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

Networks ↑

It shows the Organization's Networks.

List 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
      >
    ]
  >

Retrieve a Network ↑

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"}]
  >

Catalogs ↑

It shows the Organization's Catalogs.

List 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
      >
    ]
  >

Retrieve a Catalog ↑

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
  >

Catalog Items ↑

List Catalog Items ↑

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
      >
    ]
  >

Retrieve a Catalog Item ↑

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"
  >

Instantiate a vApp Template ↑

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"
}