mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
956 lines
27 KiB
Markdown
956 lines
27 KiB
Markdown
# VMware vCloud Director 5.1 API client
|
|
|
|
## Introduction
|
|
|
|
Collection and Model representation in vcloud_director fog provider.
|
|
|
|
```no-highlight
|
|
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:
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.reload
|
|
```
|
|
|
|
Lazy load isn't used with `get` and `get_by_name` methods are used.
|
|
|
|
## Initialization
|
|
|
|
```ruby
|
|
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`
|
|
|
|
```ruby
|
|
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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.get("c6a4c623-c158-41cf-a87a-dbc1637ad55a")
|
|
```
|
|
|
|
### Retrieve an Organization by Name
|
|
|
|
```ruby
|
|
org = vcloud.organizations.get_by_name("DevOps")
|
|
```
|
|
|
|
## vDCs
|
|
|
|
It shows the Organization's vDCs.
|
|
|
|
### List vDCs
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.vdcs
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.vdcs.get_by_name("DevOps - VDC")
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vdc.vapps
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vdc.vapps.get_by_name("segundo")
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
vapp.vms
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
vapp.vms.get_by_name("DEVWEB")
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
4
|
|
```
|
|
|
|
### Modify Memory
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
4096
|
|
```
|
|
|
|
### Power On a VM
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
## VM Customization
|
|
|
|
### Retrieve VM Customization
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
vm = vapp.vms.get_by_name("DEVWEB")
|
|
vm.customization
|
|
```
|
|
```ruby
|
|
<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.
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
## VM Network
|
|
|
|
### Show VM Networks
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
vm = vapp.vms.get_by_name("DEVWEB")
|
|
vm.network
|
|
```
|
|
```ruby
|
|
<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.
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
## VM Disk
|
|
|
|
### List VM Disks
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
vm = vapp.vms.get_by_name("DEVWEB")
|
|
vm.disks
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
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)
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
The new disk should show up.
|
|
|
|
```ruby
|
|
>> 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
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
### Destroy a Hard Disk
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
## VM Tags
|
|
|
|
### List VM Tags
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
vm = vapp.vms.get_by_name("DEVWEB")
|
|
vm.tags
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
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')
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
### Retrieve a Tag
|
|
|
|
```ruby
|
|
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')
|
|
```
|
|
```ruby
|
|
<Fog::Compute::VcloudDirector::Tag
|
|
id="this_is_a_key",
|
|
value="this_is_a_value"
|
|
>
|
|
```
|
|
|
|
### Modify a Tag
|
|
|
|
```ruby
|
|
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'
|
|
```
|
|
```no-highlight
|
|
"new_value"
|
|
```
|
|
|
|
### Destroy a Tag
|
|
|
|
```ruby
|
|
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
|
|
```
|
|
```no-highlight
|
|
true
|
|
```
|
|
|
|
## Networks
|
|
|
|
It shows the Organization's Networks.
|
|
|
|
### List Networks
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.networks
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.networks.get_by_name("DevOps - Dev Network Connection")
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.catalogs
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.catalogs.get("4ee720e5-173a-41ac-824b-6f4908bac975") # or get_by_name("Public VM Templates")
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
catalog = org.catalogs.first
|
|
catalog.catalog_items
|
|
```
|
|
```ruby
|
|
<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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
catalog = org.catalogs.first
|
|
catalog.catalog_items.get_by_name('DEVAPP')
|
|
```
|
|
```ruby
|
|
<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.
|
|
|
|
```ruby
|
|
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:
|
|
|
|
```ruby
|
|
template.instantiate('webserver', {
|
|
vdc_id: "9a06a16b-12c6-44dc-aee1-06aa52262ea3",
|
|
network_id: "d5f47bbf-de27-4cf5-aaaa-56772f2ccd17"
|
|
}
|
|
```
|
|
|