Class: Haconiwa::Base

Inherits:
Object
  • Object
show all
Extended by:
Utils
Defined in:
lib/haconiwa/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utils

sethostname

Constructor Details

#initializeBase



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/haconiwa/base.rb', line 24

def initialize
  @filesystem = Filesystem.new
  @cgroup = CGroup.new
  @namespace = Namespace.new
  @capabilities = Capabilities.new
  @attached_capabilities = nil
  @name = "haconiwa-#{Time.now.to_i}"
  @init_command = "/bin/bash" # FIXME: maybe /sbin/init is better
  @container_pid_file = nil
  @pid = nil
end

Instance Attribute Details

#attached_capabilitiesObject

Returns the value of attribute attached_capabilities.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def attached_capabilities
  @attached_capabilities
end

#capabilitiesObject

Returns the value of attribute capabilities.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def capabilities
  @capabilities
end

#cgroupObject

Returns the value of attribute cgroup.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def cgroup
  @cgroup
end

#container_pid_fileObject

Returns the value of attribute container_pid_file.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def container_pid_file
  @container_pid_file
end

#filesystemObject

Returns the value of attribute filesystem.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def filesystem
  @filesystem
end

#init_commandObject

Returns the value of attribute init_command.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def init_command
  @init_command
end

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def name
  @name
end

#namespaceObject

Returns the value of attribute namespace.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def namespace
  @namespace
end

#pidObject

Returns the value of attribute pid.



10
11
12
# File 'lib/haconiwa/base.rb', line 10

def pid
  @pid
end

Class Method Details

.define(&b) ⇒ Object



20
21
22
# File 'lib/haconiwa/base.rb', line 20

def self.define(&b)
  new.tap(&b)
end

Instance Method Details

#add_mount_point(point, options) ⇒ Object



41
42
43
44
# File 'lib/haconiwa/base.rb', line 41

def add_mount_point(point, options)
  self.namespace.unshare "mount"
  self.filesystem.mount_points << MountPoint.new(point, options)
end

#attach(*run_command) ⇒ Object



57
58
59
60
# File 'lib/haconiwa/base.rb', line 57

def attach(*run_command)
  self.container_pid_file ||= default_container_pid_file
  Runners::Linux.attach(self, run_command)
end

#chroot_to(dest) ⇒ Object

aliases



37
38
39
# File 'lib/haconiwa/base.rb', line 37

def chroot_to(dest)
  self.filesystem.chroot = dest
end

#default_container_pid_fileObject



62
63
64
# File 'lib/haconiwa/base.rb', line 62

def default_container_pid_file
  "/var/run/haconiwa-#{@name}.pid"
end

#mount_independent_procfsObject



46
47
48
49
# File 'lib/haconiwa/base.rb', line 46

def mount_independent_procfs
  self.namespace.unshare "mount"
  self.filesystem.mount_independent_procfs = true
end

#start(*init_command) ⇒ Object Also known as: run



51
52
53
54
# File 'lib/haconiwa/base.rb', line 51

def start(*init_command)
  self.container_pid_file ||= default_container_pid_file
  Runners::Linux.run(self, init_command)
end