Class: ForemanDocker::Docker

Inherits:
ComputeResource
  • Object
show all
Defined in:
app/models/foreman_docker/docker.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.model_nameObject



8
9
10
# File 'app/models/foreman_docker/docker.rb', line 8

def self.model_name
  ComputeResource.model_name
end

Instance Method Details

#available_imagesObject



33
34
35
# File 'app/models/foreman_docker/docker.rb', line 33

def available_images
  client.images
end

#capabilitiesObject



12
13
14
# File 'app/models/foreman_docker/docker.rb', line 12

def capabilities
  [:image]
end

#create_vm(args = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'app/models/foreman_docker/docker.rb', line 45

def create_vm args = {}
  args['cmd'] = Array.wrap( args.delete('cmd') )
  options = vm_instance_defaults.merge(args)
  logger.debug("creating Docker with the following options: #{options.inspect}")
  client.servers.create options
rescue Fog::Errors::Error => e
  logger.debug "Fog error: #{e.message}\n " + e.backtrace.join("\n ")
  errors.add(:base, e.message.to_s)
  false
end

#image(id) ⇒ Object



37
38
39
# File 'app/models/foreman_docker/docker.rb', line 37

def image(id)
  client.image.get(id) || raise(ActiveRecord::RecordNotFound)
end

#max_cpu_countObject

FIXME



25
26
27
# File 'app/models/foreman_docker/docker.rb', line 25

def max_cpu_count
  8
end

#max_memoryObject



29
30
31
# File 'app/models/foreman_docker/docker.rb', line 29

def max_memory
  16*1024*1024*1024
end

#provided_attributesObject



20
21
22
# File 'app/models/foreman_docker/docker.rb', line 20

def provided_attributes
  super.merge({:mac => :mac})
end

#provider_friendly_nameObject



41
42
43
# File 'app/models/foreman_docker/docker.rb', line 41

def provider_friendly_name
  "Docker"
end

#supports_update?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'app/models/foreman_docker/docker.rb', line 16

def supports_update?
  false
end

#vm_instance_defaultsObject



56
57
58
# File 'app/models/foreman_docker/docker.rb', line 56

def vm_instance_defaults
  ActiveSupport::HashWithIndifferentAccess.new('name' => "foreman_#{Time.now.to_i}", 'cmd' => ['/bin/bash'])
end