Module: OsCtld::Lxc

Defined in:
lib/osctld/lxc.rb

Constant Summary collapse

CONFIGS =
'/run/osctl/configs/lxc'

Class Method Summary collapse

Class Method Details

.dist_lxc_configs(dist, ver) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/osctld/lxc.rb', line 17

def self.dist_lxc_configs(dist, ver)
  name = dist_name(dist)

  [
    File.join(CONFIGS, 'common.conf'),
    File.join(CONFIGS, name, 'common.conf'),
    File.join(CONFIGS, name, "#{ver}.conf"),
  ].select { |cfg| File.exist?(cfg) }
end

.dist_name(dist) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/osctld/lxc.rb', line 7

def self.dist_name(dist)
  case dist
  when 'suse'
    'opensuse'

  else
    dist
  end
end

.install_lxc_configs(dst) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/osctld/lxc.rb', line 27

def self.install_lxc_configs(dst)
  pid = Process.fork do
    abs_root = File.absolute_path(OsCtld.root)
    cfg_root = File.join(abs_root, 'configs', 'lxc')

    Dir.chdir(cfg_root)

    Dir.glob('**/*.{conf,seccomp}').each do |cfg|
      link_path = File.join(dst, cfg)

      if File.symlink?(link_path) || File.exist?(link_path)
        File.unlink(link_path)
      end

      dir = File.join(dst, File.dirname(cfg))
      FileUtils.mkpath(dir)

      File.symlink(File.join(cfg_root, cfg), link_path)
    end
  end

  Process.wait(pid)
  fail 'unable to install lxc configs' if $?.exitstatus != 0
end