lxc: define a private network for OS containers

By default, specify the the "<privnet>" feature with LXC operating
system containers.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1040406
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2014-03-10 15:25:14 +01:00
parent 081e34715f
commit 75349b9cf0
2 changed files with 16 additions and 5 deletions

View File

@ -8,6 +8,9 @@
<type arch="x86_64">exe</type>
<init>/sbin/init</init>
</os>
<features>
<privnet/>
</features>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>

View File

@ -1,7 +1,7 @@
#
# Common code for all guests
#
# Copyright 2006-2009, 2013 Red Hat, Inc.
# Copyright 2006-2009, 2013, 2014 Red Hat, Inc.
# Jeremy Katz <katzj@redhat.com>
#
# This program is free software; you can redistribute it and/or modify
@ -647,12 +647,18 @@ class Guest(XMLBuilder):
self._set_video_defaults()
self._set_sound_defaults()
def _is_os_container(self):
if not self.os.is_container():
return False
for fs in self.get_devices("filesystem"):
if fs.target == "/":
return True
return False
def _set_osxml_defaults(self):
if self.os.is_container() and not self.os.init:
for fs in self.get_devices("filesystem"):
if fs.target == "/":
self.os.init = "/sbin/init"
break
if self._is_os_container():
self.os.init = "/sbin/init"
self.os.init = self.os.init or "/bin/sh"
if not self.os.loader and self.os.is_hvm() and self.type == "xen":
@ -738,6 +744,8 @@ class Guest(XMLBuilder):
self.features.acpi = None
self.features.apic = None
self.features.pae = None
if self._is_os_container():
self.features.privnet = True
return
if not self.os.is_hvm():