1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/vcloud_director/documentation.md

981 lines
26 KiB
Markdown
Raw Normal View History

2013-07-10 07:15:40 -04:00
# VMware vCloud director 1.5 API client
### Introduction
2013-08-27 05:19:54 -04:00
Collection and Model representation in vcloud_director fog provider
2013-07-10 07:15:40 -04:00
```
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
```
#### 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 load
</br>
When listing a collection (ie: ```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
### Initialize
```ruby
2013-08-27 05:19:54 -04:00
vcloud = Fog::Compute::VcloudDirector.new(vcloud_director_username: "<username>@org_name_", vcloud_director_password: "<password>", vcloud_director_host: 'example.com', :connection_options => {:ssl_verify_peer => false, :connect_timeout => 200, :read_timeout => 200 } )
2013-07-10 07:15:40 -04:00
```
### Organizations
</br>
- List organizations
Note that when listing, by default all the attrs but **id, name, type** and **href** are not loaded. To disable lazy_loading, just specify false: , another option is to reload a specific item: ```vcloud.organizations.first.reload```
```ruby
vcloud.organizations
```
```
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Organizations
2013-07-10 07:15:40 -04:00
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Organization
2013-07-10 07:15:40 -04:00
id="c6a4c623-c158-41cf-a87a-dbc1637ad55a",
name="DevOps",
type="application/vnd.vmware.vcloud.org+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a",
2013-07-10 07:15:40 -04:00
description=NonLoaded
>
]
>
```
- Get a specific organization by id
```ruby
org = vcloud.organizations.get("c6a4c623-c158-41cf-a87a-dbc1637ad55a")
```
- Get a specific organization by name
```ruby
org = vcloud.organizations.get_by_name("DevOps")
```
### vDCs
</br>
it shows the Organization's vDCs
- List vDCs
```ruby
org = vcloud.organizations.first
org.vdcs
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vdcs
organization= <Fog::Compute::VcloudDirector::Organization
2013-07-10 07:15:40 -04:00
id="c6a4c623-c158-41cf-a87a-dbc1637ad55a",
name="DevOps",
type="application/vnd.vmware.vcloud.org+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a",
2013-07-10 07:15:40 -04:00
description=NonLoaded
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vdc
2013-07-10 07:15:40 -04:00
id="9a06a16b-12c6-44dc-aee1-06aa52262ea3",
name="DevOps - VDC",
type="application/vnd.vmware.vcloud.vdc+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vdc/9a06a16b-12c6-44dc-aee1-06aa52262ea3",
2013-07-10 07:15:40 -04:00
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
>
]
>
```
- Get a vDC
```ruby
org = vcloud.organizations.first
org.vdcs.get_by_name("DevOps - VDC")
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vdc
2013-07-10 07:15:40 -04:00
id="9a06a16b-12c6-44dc-aee1-06aa52262ea3",
name="DevOps - VDC",
type="application/vnd.vmware.vcloud.vdc+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vdc/9a06a16b-12c6-44dc-aee1-06aa52262ea3",
2013-07-10 07:15:40 -04:00
description="",
2013-07-10 07:24:24 -04:00
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"},
2013-07-10 07:15:40 -04:00
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
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vapps
vdc= <Fog::Compute::VcloudDirector::Vdc
2013-07-10 07:15:40 -04:00
id="9a06a16b-12c6-44dc-aee1-06aa52262ea3",
name="DevOps - VDC",
type="application/vnd.vmware.vcloud.vdc+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vdc/9a06a16b-12c6-44dc-aee1-06aa52262ea3",
2013-07-10 07:15:40 -04:00
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
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vapp
2013-07-10 07:15:40 -04:00
id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="segundo",
type="application/vnd.vmware.vcloud.vApp+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
2013-07-10 07:15:40 -04:00
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
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vapp
2013-07-10 07:15:40 -04:00
id="vapp-6ac43e0e-13e2-4642-a58a-6dc3a12f585b",
name="vApp_restebanez_9",
type="application/vnd.vmware.vcloud.vApp+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vapp-6ac43e0e-13e2-4642-a58a-6dc3a12f585b",
2013-07-10 07:15:40 -04:00
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
>
]
>
```
- Get
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps.get_by_name("segundo")
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vapp
2013-07-10 07:15:40 -04:00
id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="segundo",
type="application/vnd.vmware.vcloud.vApp+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
2013-07-10 07:15:40 -04:00
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"=>""},
2013-07-10 07:24:24 -04:00
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"},
2013-07-10 07:15:40 -04:00
InMaintenanceMode=false
>
```
#### VMs
- List
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vapp = vdc.vapps.get_by_name("segundo")
vapp.vms
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vms
vapp= <Fog::Compute::VcloudDirector::Vapp
2013-07-10 07:15:40 -04:00
id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="segundo",
type="application/vnd.vmware.vcloud.vApp+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
2013-07-10 07:15:40 -04:00
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"=>""},
2013-07-10 07:24:24 -04:00
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"},
2013-07-10 07:15:40 -04:00
InMaintenanceMode=false
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vm
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="DEVWEB",
type="application/vnd.vmware.vcloud.vm+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
2013-07-10 07:15:40 -04:00
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}]
>
]
>
```
- Get
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vapp = vdc.vapps.get_by_name("segundo")
vapp.vms.get_by_name("DEVWEB")
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Vm
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="DEVWEB",
type="application/vnd.vmware.vcloud.vm+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
2013-07-10 07:15:40 -04:00
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}]
>
```
- Modfy CPU
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps.get_by_name("segundo")
vm = vapp.vms.get_by_name("DEVWEB")
vm.cpu = 4
```
```ruby
... success
4
```
- Modify Memory
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps.get_by_name("segundo")
vm = vapp.vms.get_by_name("DEVWEB")
vm.cpu = 4
```
```ruby
... success
4096
```
- power_on
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps.get_by_name("segundo")
vm = vapp.vms.get_by_name("DEVWEB")
vm.power_on
```
```ruby
..... success
true
```
#### VM Customization
- Show
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps.get_by_name("segundo")
vm = vapp.vms.get_by_name("DEVWEB")
vm.customization
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::VmCustomization
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
type="application/vnd.vmware.vcloud.guestCustomizationSection+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192/guestCustomizationSection/",
2013-07-10 07:15:40 -04:00
enabled=false,
change_sid=false,
join_domain_enabled=false,
use_org_settings=false,
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 one or more attrs
Customization attribute's model requires to `save` it after setting the attributes
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
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
```
```ruby
.. success
true
```
#### VM Network
- Show
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
vdc.vapps.get_by_name("segundo")
vm = vapp.vms.get_by_name("DEVWEB")
vm.network
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::VmNetwork
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
type="application/vnd.vmware.vcloud.networkConnectionSection+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192/networkConnectionSection/",
2013-07-10 07:15:40 -04:00
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 attrs
Network attribute's model requires to `save` it after setting the attributes
```ruby
org = vcloud.organizations.first
vdc = org.vdcs.first
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
```
```ruby
.. success
true
```
#### VM Disk
- List
```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
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disks
vm= <Fog::Compute::VcloudDirector::Vm
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="DEVWEB",
type="application/vnd.vmware.vcloud.vm+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
2013-07-10 07:15:40 -04:00
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}]
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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")
disks = vm.disks
disks.create(1024)
```
```ruby
... success
true
```
The new disk should show up
```ruby
>> vm.disks
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disks
vm= <Fog::Compute::VcloudDirector::Vm
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="DEVWEB",
type="application/vnd.vmware.vcloud.vm+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
2013-07-10 07:15:40 -04:00
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}]
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Disk
2013-07-10 07:15:40 -04:00
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")
disks = vm.disks
disks.get_by_name("Hard disk 2").capacity = 2048
```
```ruby
... success
true
```
- Delete 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")
disks = vm.disks
disks.get_by_name("Hard disk 2").destroy
```
```ruby
... success
true
```
#### VM Tags
- List
```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
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Tags
vm= <Fog::Compute::VcloudDirector::Vm
2013-07-10 07:15:40 -04:00
id="vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
vapp_id="vapp-11c7102f-443d-40fd-b1da-cca981fb44b6",
name="DEVWEB",
type="application/vnd.vmware.vcloud.vm+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/vApp/vm-2ddeea36-ac71-470f-abc5-c6e3c2aca192",
2013-07-10 07:15:40 -04:00
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}]
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Tag
2013-07-10 07:15:40 -04:00
id="environment",
value="devlab"
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Tag
2013-07-10 07:15:40 -04:00
id="product",
value="devlabtest"
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Tag
2013-07-10 07:15:40 -04:00
id="hello",
value="ddd"
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Tag
2013-07-10 07:15:40 -04:00
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')
```
```ruby
success
true
```
- Get 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
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Tag
2013-07-10 07:15:40 -04:00
id="this_is_a_key",
value="this_is_a_value"
>
```
- Edit 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'
```
```ruby
success
"new_value"
```
- Delete 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
```
```ruby
success
true
```
### Networks
</br>
it shows the Organization's Networks
- List
```ruby
org = vcloud.organizations.first
org.networks
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Networks
organization= <Fog::Compute::VcloudDirector::Organization
2013-07-10 07:15:40 -04:00
id="c6a4c623-c158-41cf-a87a-dbc1637ad55a",
name="DevOps",
type="application/vnd.vmware.vcloud.org+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a",
2013-07-10 07:15:40 -04:00
description=NonLoaded
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Network
2013-07-10 07:15:40 -04:00
id="d5f47bbf-de27-4cf5-aaaa-56772f2ccd17",
name="DevOps - Dev Network Connection",
type="application/vnd.vmware.vcloud.orgNetwork+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
is_inherited=NonLoaded,
gateway=NonLoaded,
netmask=NonLoaded,
dns1=NonLoaded,
dns2=NonLoaded,
dns_suffix=NonLoaded,
ip_ranges=NonLoaded
>
]
>
```
- Get
```ruby
org = vcloud.organizations.first
org.networks.get_by_name("DevOps - Dev Network Connection")
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Network
2013-07-10 07:15:40 -04:00
id="d5f47bbf-de27-4cf5-aaaa-56772f2ccd17",
name="DevOps - Dev Network Connection",
type="application/vnd.vmware.vcloud.orgNetwork+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/network/d5f47bbf-de27-4cf5-aaaa-56772f2ccd17",
2013-07-10 07:15:40 -04:00
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
</br>
it shows the Organization's Catalogs
- List
```ruby
org = vcloud.organizations.first
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Catalogs
organization= <Fog::Compute::VcloudDirector::Organization
2013-07-10 07:15:40 -04:00
id="c6a4c623-c158-41cf-a87a-dbc1637ad55a",
name="DevOps",
type="application/vnd.vmware.vcloud.org+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/org/c6a4c623-c158-41cf-a87a-dbc1637ad55a",
2013-07-10 07:15:40 -04:00
description=NonLoaded
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Catalog
2013-07-10 07:15:40 -04:00
id="4ee720e5-173a-41ac-824b-6f4908bac975",
name="Public VM Templates",
type="application/vnd.vmware.vcloud.catalog+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalog/4ee720e5-173a-41ac-824b-6f4908bac975",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
is_published=NonLoaded
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Catalog
2013-07-10 07:15:40 -04:00
id="ea0c6acf-c9c0-46b7-b19f-4b2d3bf8aa33",
name="prueba",
type="application/vnd.vmware.vcloud.catalog+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalog/ea0c6acf-c9c0-46b7-b19f-4b2d3bf8aa33",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
is_published=NonLoaded
>
]
>
```
- Get
```ruby
org = vcloud.organizations.first
org.catalogs.get("4ee720e5-173a-41ac-824b-6f4908bac975") # or get_by_name("Public VM Templates")
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::Catalog
2013-07-10 07:15:40 -04:00
id="4ee720e5-173a-41ac-824b-6f4908bac975",
name="Public VM Templates",
type="application/vnd.vmware.vcloud.catalog+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalog/4ee720e5-173a-41ac-824b-6f4908bac975",
2013-07-10 07:15:40 -04:00
description="",
is_published=true
>
```
#### Catalog Items
- List
```ruby
org = vcloud.organizations.first
catalog = org.catalogs.first
catalog.catalog_items
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::CatalogItems
catalog= <Fog::Compute::VcloudDirector::Catalog
2013-07-10 07:15:40 -04:00
id="4ee720e5-173a-41ac-824b-6f4908bac975",
name="Public VM Templates",
type="application/vnd.vmware.vcloud.catalog+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalog/4ee720e5-173a-41ac-824b-6f4908bac975",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
is_published=NonLoaded
>
[
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::CatalogItem
2013-07-10 07:15:40 -04:00
id="2bd55629-2734-420c-9068-2ff06a4a8028",
name="DEVWIN",
type="application/vnd.vmware.vcloud.catalogItem+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalogItem/2bd55629-2734-420c-9068-2ff06a4a8028",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
vapp_template_id=NonLoaded
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::CatalogItem
2013-07-10 07:15:40 -04:00
id="5437aa3f-e369-40b2-b985-2e63e1bc9f2e",
name="DEVRHL",
type="application/vnd.vmware.vcloud.catalogItem+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalogItem/5437aa3f-e369-40b2-b985-2e63e1bc9f2e",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
vapp_template_id=NonLoaded
>,
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::CatalogItem
2013-07-10 07:15:40 -04:00
id="54cf5deb-326f-4770-a91a-39048689b6ea",
name="DEVAPP",
type="application/vnd.vmware.vcloud.catalogItem+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalogItem/54cf5deb-326f-4770-a91a-39048689b6ea",
2013-07-10 07:15:40 -04:00
description=NonLoaded,
vapp_template_id=NonLoaded
>
]
>
```
- Get
```ruby
org = vcloud.organizations.first
catalog = org.catalogs.first
catalog.catalog_items.get_by_name('DEVAPP')
```
```ruby
2013-08-27 05:19:54 -04:00
<Fog::Compute::VcloudDirector::CatalogItem
2013-07-10 07:15:40 -04:00
id="54cf5deb-326f-4770-a91a-39048689b6ea",
name="DEVAPP",
type="application/vnd.vmware.vcloud.catalogItem+xml",
2013-07-10 07:24:24 -04:00
href="https://example.com/api/catalogItem/54cf5deb-326f-4770-a91a-39048689b6ea",
2013-07-10 07:15:40 -04:00
description="Windows Server 2008 R2 Application Server",
vapp_template_id="vappTemplate-b5902d57-7906-49c8-8af5-bbebe0a60a97"
>
```
- Instantiate
it creates a Vapp from a CatalogItem.
```ruby
org = vcloud.organizations.first
catalog = org.catalogs.first
devapp = catalog.catalog_items.get_by_name('DEVAPP')
devapp.instantiate('webserver')
```
```ruby
1%
5%
40%
80%
100%
```
It there were more than one vDC or/and network you'd have to specify it as a second param,
```devapp.instantiate('webserver', {vdc_id: "9a06a16b-12c6-44dc-aee1-06aa52262ea3", network_id: "d5f47bbf-de27-4cf5-aaaa-56772f2ccd17"}```