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> <type arch="x86_64">exe</type>
<init>/sbin/init</init> <init>/sbin/init</init>
</os> </os>
<features>
<privnet/>
</features>
<on_poweroff>destroy</on_poweroff> <on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot> <on_reboot>restart</on_reboot>
<on_crash>restart</on_crash> <on_crash>restart</on_crash>

View File

@ -1,7 +1,7 @@
# #
# Common code for all guests # 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> # Jeremy Katz <katzj@redhat.com>
# #
# This program is free software; you can redistribute it and/or modify # 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_video_defaults()
self._set_sound_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): def _set_osxml_defaults(self):
if self.os.is_container() and not self.os.init: if self.os.is_container() and not self.os.init:
for fs in self.get_devices("filesystem"): if self._is_os_container():
if fs.target == "/": self.os.init = "/sbin/init"
self.os.init = "/sbin/init"
break
self.os.init = self.os.init or "/bin/sh" self.os.init = self.os.init or "/bin/sh"
if not self.os.loader and self.os.is_hvm() and self.type == "xen": 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.acpi = None
self.features.apic = None self.features.apic = None
self.features.pae = None self.features.pae = None
if self._is_os_container():
self.features.privnet = True
return return
if not self.os.is_hvm(): if not self.os.is_hvm():