Class: Bosh::Cloud
- Inherits:
-
Object
- Object
- Bosh::Cloud
- Defined in:
- lib/cloud.rb
Overview
CPI - Cloud Provider Interface, used for interfacing with various IaaS APIs.
Key terms: Stemcell: template used for creating VMs (shouldn’t be powered on) VM: VM created from a stemcell with custom settings (networking and resources) Disk: volume that can be attached and detached from the VMs,
never attached to more than a single VM at one time
Instance Method Summary collapse
-
#attach_disk(vm_id, disk_id) ⇒ void
Attaches a disk.
-
#calculate_vm_cloud_properties(vm_properties) ⇒ Hash
Specify VM’s hardware resources can be used with #create_vm.
-
#create_disk(size, cloud_properties, vm_locality) ⇒ String
Creates a disk (possibly lazily) that will be attached later to a VM.
-
#create_stemcell(image_path, cloud_properties) ⇒ String
Creates a stemcell.
-
#create_vm(agent_id, stemcell_id, resource_pool, networks, disk_locality, env) ⇒ String
Creates a VM - creates (and powers on) a VM from a stemcell with the proper resources and on the specified network.
-
#current_vm_id ⇒ String
Get the vm_id of this host.
-
#delete_disk(disk_id) ⇒ void
Deletes a disk Will raise an exception if the disk is attached to a VM.
-
#delete_snapshot(snapshot_id) ⇒ void
Delete a disk snapshot.
-
#delete_stemcell(stemcell_id) ⇒ void
Deletes a stemcell.
-
#delete_vm(vm_id) ⇒ void
Deletes a VM.
-
#detach_disk(vm_id, disk_id) ⇒ void
Detaches a disk.
-
#get_disks(vm_id) ⇒ array[String]
List the attached disks of the VM.
-
#has_disk?(disk_id) ⇒ Boolean
Checks if a disk exists.
-
#has_vm?(vm_id) ⇒ Boolean
Checks if a VM exists.
-
#info ⇒ Object
Information about cpi.
-
#initialize(options) ⇒ Cloud
constructor
Cloud initialization.
-
#reboot_vm(vm_id) ⇒ void
Reboots a VM.
-
#set_vm_metadata(vm, metadata) ⇒ void
Set metadata for a VM.
-
#snapshot_disk(disk_id, metadata) ⇒ String
Take snapshot of disk.
Constructor Details
#initialize(options) ⇒ Cloud
Cloud initialization
26 27 |
# File 'lib/cloud.rb', line 26 def initialize() end |
Instance Method Details
#attach_disk(vm_id, disk_id) ⇒ void
This method returns an undefined value.
Attaches a disk
186 187 188 |
# File 'lib/cloud.rb', line 186 def attach_disk(vm_id, disk_id) not_implemented(:attach_disk) end |
#calculate_vm_cloud_properties(vm_properties) ⇒ Hash
Specify VM’s hardware resources can be used with #create_vm
225 226 227 |
# File 'lib/cloud.rb', line 225 def calculate_vm_cloud_properties(vm_properties) not_implemented(:calculate_vm_cloud_properties) end |
#create_disk(size, cloud_properties, vm_locality) ⇒ String
Creates a disk (possibly lazily) that will be attached later to a VM. When VM locality is specified the disk will be placed near the VM so it won’t have to move when it’s attached later.
168 169 170 |
# File 'lib/cloud.rb', line 168 def create_disk(size, cloud_properties, vm_locality) not_implemented(:create_disk) end |
#create_stemcell(image_path, cloud_properties) ⇒ String
Creates a stemcell
55 56 57 |
# File 'lib/cloud.rb', line 55 def create_stemcell(image_path, cloud_properties) not_implemented(:create_stemcell) end |
#create_vm(agent_id, stemcell_id, resource_pool, networks, disk_locality, env) ⇒ String
Creates a VM - creates (and powers on) a VM from a stemcell with the proper resources and on the specified network. When disk locality is present the VM will be placed near the provided disk so it won’t have to move when the disk is attached later.
Sample networking config:
{"network_a" =>
{
"netmask" => "255.255.248.0",
"ip" => "172.30.41.40",
"gateway" => "172.30.40.1",
"dns" => ["172.30.22.153", "172.30.22.154"],
"cloud_properties" => {"name" => "VLAN444"}
}
}
Sample resource pool config (CPI specific):
{
"ram" => 512,
"disk" => 512,
"cpu" => 1
}
or similar for EC2:
{"name" => "m1.small"}
103 104 105 106 |
# File 'lib/cloud.rb', line 103 def create_vm(agent_id, stemcell_id, resource_pool, networks, disk_locality, env) not_implemented(:create_vm) end |
#current_vm_id ⇒ String
Get the vm_id of this host
44 45 46 |
# File 'lib/cloud.rb', line 44 def current_vm_id not_implemented(:current_vm_id) end |
#delete_disk(disk_id) ⇒ void
This method returns an undefined value.
Deletes a disk Will raise an exception if the disk is attached to a VM
178 179 180 |
# File 'lib/cloud.rb', line 178 def delete_disk(disk_id) not_implemented(:delete_disk) end |
#delete_snapshot(snapshot_id) ⇒ void
This method returns an undefined value.
Delete a disk snapshot
201 202 203 |
# File 'lib/cloud.rb', line 201 def delete_snapshot(snapshot_id) not_implemented(:delete_snapshot) end |
#delete_stemcell(stemcell_id) ⇒ void
This method returns an undefined value.
Deletes a stemcell
64 65 66 |
# File 'lib/cloud.rb', line 64 def delete_stemcell(stemcell_id) not_implemented(:delete_stemcell) end |
#delete_vm(vm_id) ⇒ void
This method returns an undefined value.
Deletes a VM. If the VM has already been deleted, this call returns normally and has no effect.
113 114 115 |
# File 'lib/cloud.rb', line 113 def delete_vm(vm_id) not_implemented(:delete_vm) end |
#detach_disk(vm_id, disk_id) ⇒ void
This method returns an undefined value.
Detaches a disk
209 210 211 |
# File 'lib/cloud.rb', line 209 def detach_disk(vm_id, disk_id) not_implemented(:detach_disk) end |
#get_disks(vm_id) ⇒ array[String]
List the attached disks of the VM. other disk-related methods on the CPI
217 218 219 |
# File 'lib/cloud.rb', line 217 def get_disks(vm_id) not_implemented(:get_disks) end |
#has_disk?(disk_id) ⇒ Boolean
Checks if a disk exists
131 132 133 |
# File 'lib/cloud.rb', line 131 def has_disk?(disk_id) not_implemented(:has_disk?) end |
#has_vm?(vm_id) ⇒ Boolean
Checks if a VM exists
122 123 124 |
# File 'lib/cloud.rb', line 122 def has_vm?(vm_id) not_implemented(:has_vm?) end |
#info ⇒ Object
Information about cpi
Sample info response:
{"stemcell_formats" =>
["aws-raw", "aws-light"]
}
@return [Hash] information about cpi, currently stemcell formats, which are supported
36 37 38 |
# File 'lib/cloud.rb', line 36 def info not_implemented(:info) end |
#reboot_vm(vm_id) ⇒ void
This method returns an undefined value.
Reboots a VM
141 142 143 |
# File 'lib/cloud.rb', line 141 def reboot_vm(vm_id) not_implemented(:reboot_vm) end |
#set_vm_metadata(vm, metadata) ⇒ void
This method returns an undefined value.
Set metadata for a VM
Optional. Implement to provide more information for the IaaS.
153 154 155 |
# File 'lib/cloud.rb', line 153 def (vm, ) not_implemented(:set_vm_metadata) end |
#snapshot_disk(disk_id, metadata) ⇒ String
Take snapshot of disk
194 195 196 |
# File 'lib/cloud.rb', line 194 def snapshot_disk(disk_id, ) not_implemented(:snapshot_disk) end |