Class: Bosh::Cloud

Inherits:
Object
  • Object
show all
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

Constructor Details

#initialize(options) ⇒ Cloud

Cloud initialization



28
29
# File 'lib/cloud.rb', line 28

def initialize(options)
end

Instance Method Details

#attach_disk(vm_id, disk_id) ⇒ void

This method returns an undefined value.

Attaches a disk



189
190
191
# File 'lib/cloud.rb', line 189

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.



156
157
158
# File 'lib/cloud.rb', line 156

def configure_networks(vm_id, networks)
  not_implemented(:configure_networks)
end

#create_disk(size, cloud_properties, 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.



171
172
173
# File 'lib/cloud.rb', line 171

def create_disk(size, cloud_properties, vm_locality = nil)
  not_implemented(:create_disk)
end

#create_stemcell(image_path, cloud_properties) ⇒ String

Creates a stemcell



46
47
48
# File 'lib/cloud.rb', line 46

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"}


95
96
97
98
# File 'lib/cloud.rb', line 95

def create_vm(agent_id, stemcell_id, resource_pool,
              networks, disk_locality = nil, env = nil)
  not_implemented(:create_vm)
end

#current_vm_idString

Get the vm_id of this host



35
36
37
# File 'lib/cloud.rb', line 35

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



181
182
183
# File 'lib/cloud.rb', line 181

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



204
205
206
# File 'lib/cloud.rb', line 204

def delete_snapshot(snapshot_id)
  not_implemented(:delete_snapshot)
end

#delete_stemcell(stemcell_id) ⇒ void

This method returns an undefined value.

Deletes a stemcell



55
56
57
# File 'lib/cloud.rb', line 55

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.



105
106
107
# File 'lib/cloud.rb', line 105

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



212
213
214
# File 'lib/cloud.rb', line 212

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



220
221
222
# File 'lib/cloud.rb', line 220

def get_disks(vm_id)
  not_implemented(:get_disks)
end

#has_disk?(disk_id) ⇒ Boolean

Checks if a disk exists



123
124
125
# File 'lib/cloud.rb', line 123

def has_disk?(disk_id)
  not_implemented(:has_disk?)
end

#has_vm?(vm_id) ⇒ Boolean

Checks if a VM exists



114
115
116
# File 'lib/cloud.rb', line 114

def has_vm?(vm_id)
  not_implemented(:has_vm?)
end

#reboot_vm(vm_id) ⇒ void

This method returns an undefined value.

Reboots a VM



133
134
135
# File 'lib/cloud.rb', line 133

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.



145
146
147
# File 'lib/cloud.rb', line 145

def (vm, )
  not_implemented(:set_vm_metadata)
end

#snapshot_disk(disk_id, metadata = {}) ⇒ String

Take snapshot of disk



197
198
199
# File 'lib/cloud.rb', line 197

def snapshot_disk(disk_id, ={})
  not_implemented(:snapshot_disk)
end