Class: Bosh::Director::Api::StemcellManager

Inherits:
Object
  • Object
show all
Includes:
ApiHelper
Defined in:
lib/bosh/director/api/stemcell_manager.rb

Constant Summary

Constants included from ApiHelper

ApiHelper::READ_CHUNK_SIZE

Instance Method Summary collapse

Methods included from ApiHelper

#check_available_disk_space, #json_decode, #json_encode, #send_disposable_file, #start_task, #write_file

Instance Method Details

#create_stemcell(user, stemcell, options = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/bosh/director/api/stemcell_manager.rb', line 24

def create_stemcell(user, stemcell, options = {})
  if options[:remote]
    stemcell_file = stemcell
  else
    random_name = "stemcell-#{SecureRandom.uuid}"
    stemcell_dir = Dir::tmpdir
    stemcell_file = File.join(stemcell_dir, random_name)

    unless check_available_disk_space(stemcell_dir, stemcell.size)
      raise NotEnoughDiskSpace, "Uploading stemcell archive failed. " +
        "Insufficient space on BOSH director in #{stemcell_dir}"
    end
    
    write_file(stemcell_file, stemcell)
  end

  JobQueue.new.enqueue(user, Jobs::UpdateStemcell, 'create stemcell', [stemcell_file, options])
end

#delete_stemcell(user, stemcell, options = {}) ⇒ Object



43
44
45
46
47
# File 'lib/bosh/director/api/stemcell_manager.rb', line 43

def delete_stemcell(user, stemcell, options={})
  description = "delete stemcell: #{stemcell.name}/#{stemcell.version}"

  JobQueue.new.enqueue(user, Jobs::DeleteStemcell, description, [stemcell.name, stemcell.version, options])
end

#find_by_name_and_version(name, version) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/bosh/director/api/stemcell_manager.rb', line 8

def find_by_name_and_version(name, version)
  stemcell = Models::Stemcell[:name => name, :version => version]
  if stemcell.nil?
    raise StemcellNotFound,
          "Stemcell `#{name}/#{version}' doesn't exist"
  end
  stemcell
end

#stemcell_exists?(name, version) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
# File 'lib/bosh/director/api/stemcell_manager.rb', line 17

def stemcell_exists?(name, version)
  find_by_name_and_version(name, version)
  true
rescue StemcellNotFound
  false
end