mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
980 lines
26 KiB
Markdown
980 lines
26 KiB
Markdown
# VMware vCloud director 1.5 API client
|
|
|
|
### Introduction
|
|
|
|
Collection and Model representation in vcloudng 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
|
|
|
|
```
|
|
|
|
#### 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
|
|
vcloud = Fog::Compute::Vcloudng.new(vcloudng_username: "<username>@org_name_", vcloudng_password: "<password>", vcloudng_host: 'example.com', :connection_options => {:ssl_verify_peer => false, :connect_timeout => 200, :read_timeout => 200 } )
|
|
```
|
|
|
|
### 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
|
|
```
|
|
```
|
|
<Fog::Compute::Vcloudng::Organizations
|
|
[
|
|
<Fog::Compute::Vcloudng::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
|
|
>
|
|
]
|
|
>
|
|
```
|
|
|
|
- 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
|
|
<Fog::Compute::Vcloudng::Vdcs
|
|
organization= <Fog::Compute::Vcloudng::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::Vcloudng::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
|
|
>
|
|
]
|
|
>
|
|
```
|
|
|
|
- Get a vDC
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.vdcs.get_by_name("DevOps - VDC")
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vdc.vapps
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::Vapps
|
|
vdc= <Fog::Compute::Vcloudng::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::Vcloudng::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::Vcloudng::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
|
|
>
|
|
]
|
|
>
|
|
```
|
|
|
|
- Get
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vdc.vapps.get_by_name("segundo")
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::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
|
|
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
vdc = org.vdcs.first
|
|
vapp = vdc.vapps.get_by_name("segundo")
|
|
|
|
vapp.vms
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::Vms
|
|
vapp= <Fog::Compute::Vcloudng::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::Vcloudng::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}]
|
|
>
|
|
]
|
|
>
|
|
|
|
```
|
|
- Get
|
|
|
|
```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::Vcloudng::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}]
|
|
>
|
|
```
|
|
|
|
- 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
|
|
<Fog::Compute::Vcloudng::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_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
|
|
<Fog::Compute::Vcloudng::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 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
|
|
<Fog::Compute::Vcloudng::Disks
|
|
vm= <Fog::Compute::Vcloudng::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::Vcloudng::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::Vcloudng::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::Vcloudng::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")
|
|
disks = vm.disks
|
|
disks.create(1024)
|
|
```
|
|
```ruby
|
|
... success
|
|
true
|
|
```
|
|
The new disk should show up
|
|
```ruby
|
|
>> vm.disks
|
|
<Fog::Compute::Vcloudng::Disks
|
|
vm= <Fog::Compute::Vcloudng::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::Vcloudng::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::Vcloudng::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::Vcloudng::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::Vcloudng::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")
|
|
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
|
|
<Fog::Compute::Vcloudng::Tags
|
|
vm= <Fog::Compute::Vcloudng::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::Vcloudng::Tag
|
|
id="environment",
|
|
value="devlab"
|
|
>,
|
|
<Fog::Compute::Vcloudng::Tag
|
|
id="product",
|
|
value="devlabtest"
|
|
>,
|
|
<Fog::Compute::Vcloudng::Tag
|
|
id="hello",
|
|
value="ddd"
|
|
>,
|
|
<Fog::Compute::Vcloudng::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')
|
|
```
|
|
```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
|
|
<Fog::Compute::Vcloudng::Tag
|
|
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
|
|
<Fog::Compute::Vcloudng::Networks
|
|
organization= <Fog::Compute::Vcloudng::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::Vcloudng::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
|
|
>
|
|
]
|
|
>
|
|
```
|
|
|
|
- Get
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.networks.get_by_name("DevOps - Dev Network Connection")
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::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
|
|
</br>
|
|
it shows the Organization's Catalogs
|
|
|
|
- List
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::Catalogs
|
|
organization= <Fog::Compute::Vcloudng::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::Vcloudng::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::Vcloudng::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
|
|
>
|
|
]
|
|
>
|
|
|
|
```
|
|
|
|
- Get
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
org.catalogs.get("4ee720e5-173a-41ac-824b-6f4908bac975") # or get_by_name("Public VM Templates")
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::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
|
|
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
catalog = org.catalogs.first
|
|
catalog.catalog_items
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::CatalogItems
|
|
catalog= <Fog::Compute::Vcloudng::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::Vcloudng::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::Vcloudng::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::Vcloudng::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
|
|
>
|
|
]
|
|
>
|
|
|
|
```
|
|
- Get
|
|
```ruby
|
|
org = vcloud.organizations.first
|
|
catalog = org.catalogs.first
|
|
catalog.catalog_items.get_by_name('DEVAPP')
|
|
```
|
|
```ruby
|
|
<Fog::Compute::Vcloudng::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
|
|
|
|
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"}```
|
|
|