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

Parameters:

  • options (Hash)

    cloud options



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

def initialize(options)
end

Instance Method Details

#attach_disk(vm_id, disk_id) ⇒ void

This method returns an undefined value.

Attaches a disk

Parameters:

  • vm (String)

    vm id that was once returned by #create_vm

  • disk (String)

    disk id that was once returned by #create_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.

Parameters:

  • vm (String)

    vm id that was once returned by #create_vm

  • networks (Hash)

    list of networks and their settings needed for this VM, same as the networks argument in #create_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.

Parameters:

  • size (Integer)

    disk size in MB

  • vm_locality (optional, String) (defaults to: nil)

    vm id if known of the VM that this disk will be attached to

Returns:



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

Parameters:

  • image_path (String)

    path to an opaque blob containing the stemcell image

  • cloud_properties (Hash)

    properties required for creating this template specific to a CPI

Returns:



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

Parameters:

  • agent_id (String)

    UUID for the agent that will be used later on by the director to locate and talk to the agent

  • stemcell (String)

    stemcell id that was once returned by #create_stemcell

  • resource_pool (Hash)

    cloud specific properties describing the resources needed for this VM

  • networks (Hash)

    list of networks and their settings needed for this VM

  • disk_locality (optional, String, Array) (defaults to: nil)

    disk id(s) if known of the disk(s) that will be attached to this vm

  • env (optional, Hash) (defaults to: nil)

    environment that will be passed to this vm

Returns:



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_idString

Get the vm_id of this host

Returns:

  • (String)

    opaque id later used by other methods of the CPI



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

Parameters:

  • disk (String)

    disk id that was once returned by #create_disk



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

Parameters:

  • snapshot_id (String)

    snapshot id to delete



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

Parameters:



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

Parameters:

  • vm (String)

    vm id that was once returned by #create_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

Parameters:

  • vm (String)

    vm id that was once returned by #create_vm

  • disk (String)

    disk id that was once returned by #create_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

Parameters:

  • vm_id (String)

    is the CPI-standard vm_id (eg, returned from current_vm_id)

Returns:

  • (array[String])

    list of opaque disk_ids that can be used with the



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

Parameters:

  • vm (String)

    vm id that was once returned by #create_vm

Returns:

  • (Boolean)

    True if the 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

Parameters:

  • vm (String)

    vm id that was once returned by #create_vm

  • CPI (Optional, Hash)

    specific options (e.g hard/soft reboot)



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.

Parameters:

  • vm (String)

    vm id that was once returned by #create_vm

  • metadata (Hash)

    metadata key/value pairs



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

Parameters:

  • disk_id (String)

    disk id of the disk to take the snapshot of

Returns:

  • (String)

    snapshot id



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