mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
b07d8661f5
Moved the header from getting_started.md to README.md, so we don't have to add it to every example added.
163 lines
4.4 KiB
Markdown
163 lines
4.4 KiB
Markdown
# Getting started: the compute service
|
|
|
|
## Connecting, retrieving and managing server objects
|
|
|
|
First, create a connection to the XenServer host:
|
|
|
|
require 'fog'
|
|
require 'pp'
|
|
|
|
#
|
|
# http://rubydoc.info/github/fog/fog/Fog/Compute/XenServer/Real
|
|
#
|
|
conn = Fog::Compute.new({
|
|
:provider => 'XenServer',
|
|
:xenserver_url => 'xenserver-test',
|
|
:xenserver_username => 'root',
|
|
:xenserver_password => 'changeme',
|
|
:xenserver_defaults => {
|
|
:template => "squeeze-test"
|
|
}
|
|
})
|
|
|
|
## Listing servers (VMs) and templates
|
|
|
|
We try to follow fog naming conventions and behavior as much as we can, so the
|
|
terminology used in fog/xenserver is a little bit different from the one
|
|
used in XAPI/XenServer documents. In particular:
|
|
|
|
* A Fog::Compute::XenServer::Server is a XenServer VM or DomU
|
|
|
|
* A Fog::Compute::XenServer::Host is a Hypervisor or Dom0
|
|
|
|
Having that in mind, we can start doing things with out XenServer host.
|
|
|
|
Listing all the servers (VMs):
|
|
|
|
conn.servers.all
|
|
|
|
This will return a list of Fog::Compute::XenServer::Server.
|
|
|
|
List all the servers whose name matches Ubuntu:
|
|
|
|
conn.servers.all :name_matches => "Ubuntu"
|
|
|
|
Listing the first server running (templates aren't included by default
|
|
in the list):
|
|
|
|
server = conn.servers.first
|
|
|
|
Listing custom templates, that is, the ones created by the user:
|
|
|
|
custom = conn.servers.custom_templates
|
|
|
|
Listing built-in templates (the templates available after a fresh install):
|
|
|
|
built_in = conn.servers.builtin_templates
|
|
|
|
Templates are regular Fog::Compute::XenServer::Server objects too, so you can
|
|
inspect some of their attributes. The relevant XAPI documentation:
|
|
|
|
http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=VM
|
|
|
|
Fog::Compute::XenServer::Server attributes and operations usually map to the
|
|
ones found in the official Citrix documentation, and they are available at:
|
|
|
|
http://rubydoc.info/github/fog/fog/Fog/Compute/XenServer/Server
|
|
|
|
and
|
|
|
|
https://github.com/fog/fog/blob/master/lib/fog/xenserver/models/compute/server.rb
|
|
|
|
## Server operations and attributes
|
|
|
|
Getting server VIFs (virtual network interfaces):
|
|
|
|
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=VIF
|
|
server.networks
|
|
# or server.vifs
|
|
|
|
Listing the server VBDs (virtual block devices):
|
|
|
|
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=VBD
|
|
server.vbds
|
|
|
|
|
|
Get VDIs objects (virtual disk images) attached to the server:
|
|
|
|
server.vbds.each do |vbd|
|
|
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=VDI
|
|
vdi = vbd.vdi
|
|
# In bytes
|
|
puts vdi.virtual_size
|
|
puts vdi.physical_utilisation
|
|
end
|
|
|
|
## Server creation and life-cycle management
|
|
|
|
Creating a new server/VM:
|
|
|
|
server = conn.servers.create :name => 'foobar',
|
|
:template_name => 'squeeze-test'
|
|
|
|
The server is automatically started after that.
|
|
|
|
Note that template_name is optional if you have specified the ':template'
|
|
parameter when when creating the connection.
|
|
|
|
If you don't want to automatically start the server, use 'new' instead of 'create':
|
|
|
|
server = conn.servers.new :name => 'foobar',
|
|
:template_name => 'squeeze-test'
|
|
|
|
and set auto_start to false when saving it:
|
|
|
|
server.save :auto_start => false
|
|
|
|
Shutting down the server, By forcing it
|
|
|
|
server.stop 'hard'
|
|
# server.hard_shutdown is equivalent
|
|
|
|
Doing a clean shutdown
|
|
|
|
server.stop 'clean'
|
|
# server.clean_shutdown is equivalent
|
|
|
|
And finally, destroy it (it will force a shutdown first if running):
|
|
|
|
server.destroy
|
|
|
|
# XenServer Host (Dom0) operations
|
|
|
|
The are some operations that can be performed on the host, without retrieving
|
|
and/or manipulating servers:
|
|
|
|
Listing all the VBDs (virtual block devices):
|
|
|
|
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=VBD
|
|
conn.vbds.all
|
|
|
|
This will retrieve the list of every single VBD available in the XenServer.
|
|
|
|
Same thing applies to the virtual disk images:
|
|
|
|
conn.vdis.all
|
|
|
|
Listing Storage Repositories (Xen SRs), where the disk images are stored:
|
|
|
|
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=SR
|
|
conn.storage_repositories
|
|
|
|
|
|
XenServer Pools:
|
|
|
|
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=pool
|
|
conn.pools
|
|
|
|
|
|
Retrieve the default storage repository in a pool:
|
|
|
|
conn.pools.first.default_storage_repository
|
|
# or the equivalent conn.pools.first.default_sr
|
|
|