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.
-
#configure_networks(vm_id, networks) ⇒ void
Configures networking an existing VM.
-
#create_disk(size, vm_locality = nil) ⇒ 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 = nil, env = nil) ⇒ 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) ⇒ Object
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_vm?(vm_id) ⇒ Boolean
Checks if a VM exists.
-
#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.
-
#validate_deployment(old_manifest, new_manifest) ⇒ Object
Validates the deployment.
Constructor Details
#initialize(options) ⇒ Cloud
Cloud initialization
27 28 |
# File 'lib/cloud.rb', line 27 def initialize() end |
Instance Method Details
#attach_disk(vm_id, disk_id) ⇒ void
This method returns an undefined value.
Attaches a disk
179 180 181 |
# File 'lib/cloud.rb', line 179 def attach_disk(vm_id, disk_id) not_implemented(:attach_disk) end |
#configure_networks(vm_id, networks) ⇒ void
This method returns an undefined value.
Configures networking an existing VM.
146 147 148 |
# File 'lib/cloud.rb', line 146 def configure_networks(vm_id, networks) not_implemented(:configure_networks) end |
#create_disk(size, vm_locality = nil) ⇒ 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.
159 160 161 |
# File 'lib/cloud.rb', line 159 def create_disk(size, vm_locality = nil) not_implemented(:create_disk) end |
#create_stemcell(image_path, cloud_properties) ⇒ String
Creates a stemcell
45 46 47 |
# File 'lib/cloud.rb', line 45 def create_stemcell(image_path, cloud_properties) not_implemented(:create_stemcell) end |
#create_vm(agent_id, stemcell_id, resource_pool, networks, disk_locality = nil, env = nil) ⇒ 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"}
94 95 96 97 |
# File 'lib/cloud.rb', line 94 def create_vm(agent_id, stemcell_id, resource_pool, networks, disk_locality = nil, env = nil) not_implemented(:create_vm) end |
#current_vm_id ⇒ String
Get the vm_id of this host
34 35 36 |
# File 'lib/cloud.rb', line 34 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
169 170 171 |
# File 'lib/cloud.rb', line 169 def delete_disk(disk_id) not_implemented(:delete_disk) end |
#delete_snapshot(snapshot_id) ⇒ Object
Delete a disk snapshot
192 193 194 |
# File 'lib/cloud.rb', line 192 def delete_snapshot(snapshot_id) not_implemented(:delete_snapshot) end |
#delete_stemcell(stemcell_id) ⇒ void
This method returns an undefined value.
Deletes a stemcell
54 55 56 |
# File 'lib/cloud.rb', line 54 def delete_stemcell(stemcell_id) not_implemented(:delete_stemcell) end |
#delete_vm(vm_id) ⇒ void
This method returns an undefined value.
Deletes a VM
104 105 106 |
# File 'lib/cloud.rb', line 104 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
202 203 204 |
# File 'lib/cloud.rb', line 202 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
213 214 215 |
# File 'lib/cloud.rb', line 213 def get_disks(vm_id) not_implemented(:get_disks) end |
#has_vm?(vm_id) ⇒ Boolean
Checks if a VM exists
113 114 115 |
# File 'lib/cloud.rb', line 113 def has_vm?(vm_id) not_implemented(:has_vm?) end |
#reboot_vm(vm_id) ⇒ void
This method returns an undefined value.
Reboots a VM
123 124 125 |
# File 'lib/cloud.rb', line 123 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.
135 136 137 |
# File 'lib/cloud.rb', line 135 def (vm, ) not_implemented(:set_vm_metadata) end |
#snapshot_disk(disk_id, metadata = {}) ⇒ String
Take snapshot of disk
186 187 188 |
# File 'lib/cloud.rb', line 186 def snapshot_disk(disk_id, ={}) not_implemented(:snapshot_disk) end |
#validate_deployment(old_manifest, new_manifest) ⇒ Object
Validates the deployment
220 221 222 |
# File 'lib/cloud.rb', line 220 def validate_deployment(old_manifest, new_manifest) not_implemented(:validate_deployment) end |