21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/distem/wrapper/lxc/configfile.rb', line 21
def self.generate(vnode,filepath,distempnode)
File.open(filepath, 'w') do |f|
f.puts DEFAULT_DEV_RULES
f.puts "lxc.utsname = #{vnode.name}"
if vnode.filesystem.shared
f.puts "lxc.rootfs = #{vnode.filesystem.sharedpath}"
else
f.puts "lxc.rootfs = #{vnode.filesystem.path}"
end
Distem::Lib::Shell.run("mkdir -p #{PATH_LOG_DIR}") unless File.directory?(PATH_LOG_DIR)
f.puts "lxc.mount.entry=proc #{vnode.filesystem.path}/proc " \
"proc nodev,noexec,nosuid 0 0"
f.puts "lxc.mount.entry=sysfs #{vnode.filesystem.path}/sys " \
"sysfs defaults 0 0"
f.puts "lxc.mount.entry=devpts #{vnode.filesystem.path}/dev/pts " \
"devpts defaults 0 0"
f.puts "lxc.console = #{File.join(PATH_LOG_DIR,vnode.name)}"
vnode.vifaces.each do |viface|
f.puts "lxc.network.type = veth"
viface_bridge = nil
case viface.vnetwork.opts['network_type']
when 'classical'
if viface.vnetwork.opts.has_key?('root_interface')
viface_bridge = distempnode.linux_bridges[viface.vnetwork.opts['root_interface']]
else
viface_bridge = distempnode.linux_bridges[distempnode.default_network_interface]
end
when 'vxlan'
viface_bridge = Distem::Lib::NetTools::VXLAN_BRIDGE_PREFIX.to_s + viface.vnetwork.opts['vxlan_id'].to_s
else
raise
end
f.puts "lxc.network.link = #{viface_bridge}"
f.puts "lxc.network.name = #{viface.name}"
f.puts "lxc.network.flags = up"
f.puts "lxc.network.hwaddr = #{viface.macaddress}"
f.puts "lxc.network.veth.pair = #{Distem::Lib::NetTools.get_iface_name(vnode,viface)}"
f.puts "lxc.network.ipv4 = #{viface.address.to_string}"
end
if vnode.vcpu
cores = ""
vnode.vcpu.vcores.each_value { |vcore| cores += "#{vcore.pcore.physicalid}," }
cores.chop! unless cores.empty?
f.puts "lxc.cgroup.cpuset.cpus = #{cores}"
end
if vnode.vmem
f.puts "lxc.cgroup.memory.limit_in_bytes = #{vnode.vmem['mem']}M" if vnode.vmem.has_key?('mem') && vnode.vmem['mem'] != ''
end
if system('lxc-start --version')
lxc_major_version = `lxc-start --version`.split('.').first
if lxc_major_version == '1'
f.puts "lxc.autodev = 1"
f.puts "lxc.kmsg = 0"
end
end
end
end
|