mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-18 10:35:20 +00:00
LXC add driver config file lxc.conf
* src/lxc/lxc.conf: new configuration file, there is currently one tunable "log_with_libvirtd" that controls whether an lxc controller will log only to the container log file, or whether it will honor libvirtd's log output configuration. This provides a way to have libvirtd and its children log to a single file. The default is to log to the container log file. * src/Makefile.am libvirt.spec.in: add the new file * src/lxc/lxc_conf.[ch] src/lxc/lxc_driver.c: read the new log value from the configuration file and pass the log informations when starting up a container.
This commit is contained in:
parent
c73a0c4ac9
commit
2dd44664cf
@ -550,6 +550,9 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version}
|
||||
%if ! %{with_qemu}
|
||||
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
|
||||
%endif
|
||||
%if ! %{with_lxc}
|
||||
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf
|
||||
%endif
|
||||
|
||||
%if %{with_libvirtd}
|
||||
chmod 0644 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/libvirtd
|
||||
@ -630,6 +633,9 @@ fi
|
||||
%if %{with_qemu}
|
||||
%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
|
||||
%endif
|
||||
%if %{with_lxc}
|
||||
%config(noreplace) %{_sysconfdir}/libvirt/lxc.conf
|
||||
%endif
|
||||
|
||||
%dir %{_datadir}/libvirt/
|
||||
|
||||
|
@ -32,6 +32,8 @@ lib_LTLIBRARIES = libvirt.la
|
||||
moddir = $(libdir)/libvirt/drivers
|
||||
mod_LTLIBRARIES =
|
||||
|
||||
confdir = $(sysconfdir)/libvirt
|
||||
conf_DATA =
|
||||
|
||||
# These files are not related to driver APIs. Simply generic
|
||||
# helper APIs for various purposes
|
||||
@ -431,8 +433,7 @@ libvirt_driver_qemu_la_LDFLAGS += -module -avoid-version
|
||||
endif
|
||||
libvirt_driver_qemu_la_SOURCES = $(QEMU_DRIVER_SOURCES)
|
||||
|
||||
confdir = $(sysconfdir)/libvirt/
|
||||
conf_DATA = qemu/qemu.conf
|
||||
conf_DATA += qemu/qemu.conf
|
||||
|
||||
augeasdir = $(datadir)/augeas/lenses
|
||||
augeas_DATA = qemu/libvirtd_qemu.aug
|
||||
@ -462,7 +463,11 @@ if WITH_DRIVER_MODULES
|
||||
libvirt_driver_lxc_la_LDFLAGS = -module -avoid-version
|
||||
endif
|
||||
libvirt_driver_lxc_la_SOURCES = $(LXC_DRIVER_SOURCES)
|
||||
|
||||
conf_DATA += lxc/lxc.conf
|
||||
|
||||
endif
|
||||
EXTRA_DIST += lxc/lxc.conf
|
||||
|
||||
if WITH_UML
|
||||
if WITH_DRIVER_MODULES
|
||||
|
13
src/lxc/lxc.conf
Normal file
13
src/lxc/lxc.conf
Normal file
@ -0,0 +1,13 @@
|
||||
# Master configuration file for the LXC driver.
|
||||
# All settings described here are optional - if omitted, sensible
|
||||
# defaults are used.
|
||||
|
||||
# By default, log messages generated by the lxc controller go to the
|
||||
# container logfile. It is also possible to accumulate log messages
|
||||
# from all lxc controllers along with libvirtd's log outputs. In this
|
||||
# case, the lxc controller will honor either LIBVIRT_LOG_OUTPUTS or
|
||||
# log_outputs from libvirtd.conf.
|
||||
#
|
||||
# This is disabled by default, uncomment below to enable it.
|
||||
#
|
||||
# log_with_libvirtd = 1
|
@ -30,6 +30,7 @@
|
||||
#include "lxc_conf.h"
|
||||
#include "nodeinfo.h"
|
||||
#include "virterror_internal.h"
|
||||
#include "conf.h"
|
||||
#include "logging.h"
|
||||
|
||||
|
||||
@ -90,6 +91,10 @@ no_memory:
|
||||
|
||||
int lxcLoadDriverConfig(lxc_driver_t *driver)
|
||||
{
|
||||
char *filename;
|
||||
virConfPtr conf;
|
||||
virConfValuePtr p;
|
||||
|
||||
/* Set the container configuration directory */
|
||||
if ((driver->configDir = strdup(LXC_CONFIG_DIR)) == NULL)
|
||||
goto no_memory;
|
||||
@ -98,6 +103,25 @@ int lxcLoadDriverConfig(lxc_driver_t *driver)
|
||||
if ((driver->logDir = strdup(LXC_LOG_DIR)) == NULL)
|
||||
goto no_memory;
|
||||
|
||||
if ((filename = strdup(SYSCONF_DIR "/libvirt/lxc.conf")) == NULL)
|
||||
goto no_memory;
|
||||
|
||||
/* Avoid error from non-existant or unreadable file. */
|
||||
if (access (filename, R_OK) == -1)
|
||||
return 0;
|
||||
conf = virConfReadFile(filename, 0);
|
||||
if (!conf)
|
||||
return 0;
|
||||
|
||||
p = virConfGetValue(conf, "log_with_libvirtd");
|
||||
if (p) {
|
||||
if (p->type != VIR_CONF_LONG)
|
||||
VIR_WARN0("lxcLoadDriverConfig: invalid setting: log_with_libvirtd");
|
||||
else
|
||||
driver->log_libvirtd = p->l;
|
||||
}
|
||||
|
||||
virConfFree(conf);
|
||||
return 0;
|
||||
|
||||
no_memory:
|
||||
|
@ -49,6 +49,7 @@ struct __lxc_driver {
|
||||
char *autostartDir;
|
||||
char *stateDir;
|
||||
char *logDir;
|
||||
int log_libvirtd;
|
||||
int have_netns;
|
||||
|
||||
/* An array of callbacks */
|
||||
|
@ -949,11 +949,13 @@ static int lxcControllerStart(virConnectPtr conn,
|
||||
char *filterstr;
|
||||
char *outputstr;
|
||||
char *tmp;
|
||||
int log_level;
|
||||
pid_t child;
|
||||
int status;
|
||||
fd_set keepfd;
|
||||
char appPtyStr[30];
|
||||
const char *emulator;
|
||||
lxc_driver_t *driver = conn->privateData;
|
||||
|
||||
FD_ZERO(&keepfd);
|
||||
|
||||
@ -1003,7 +1005,8 @@ static int lxcControllerStart(virConnectPtr conn,
|
||||
lenv[lenvc++] = envval; \
|
||||
} while (0)
|
||||
|
||||
if (virAsprintf(&tmp, "LIBVIRT_DEBUG=%d", virLogGetDefaultPriority()) < 0)
|
||||
log_level = virLogGetDefaultPriority();
|
||||
if (virAsprintf(&tmp, "LIBVIRT_DEBUG=%d", log_level) < 0)
|
||||
goto no_memory;
|
||||
ADD_ENV(tmp);
|
||||
|
||||
@ -1015,6 +1018,7 @@ static int lxcControllerStart(virConnectPtr conn,
|
||||
VIR_FREE(filterstr);
|
||||
}
|
||||
|
||||
if (driver->log_libvirtd) {
|
||||
if (virLogGetNbOutputs() > 0) {
|
||||
outputstr = virLogGetOutputs();
|
||||
if (!outputstr)
|
||||
@ -1022,6 +1026,11 @@ static int lxcControllerStart(virConnectPtr conn,
|
||||
ADD_ENV_PAIR("LIBVIRT_LOG_OUTPUTS", outputstr);
|
||||
VIR_FREE(outputstr);
|
||||
}
|
||||
} else {
|
||||
if (virAsprintf(&tmp, "LIBVIRT_LOG_OUTPUTS=%d:stderr", log_level) < 0)
|
||||
goto no_memory;
|
||||
ADD_ENV(tmp);
|
||||
}
|
||||
|
||||
ADD_ENV(NULL);
|
||||
|
||||
@ -1626,6 +1635,7 @@ static int lxcStartup(int privileged)
|
||||
virEventAddTimeout(-1, lxcDomainEventFlush, lxc_driver, NULL)) < 0)
|
||||
goto cleanup;
|
||||
|
||||
lxc_driver->log_libvirtd = 0; /* by default log to container logfile */
|
||||
lxc_driver->have_netns = lxcCheckNetNsSupport();
|
||||
|
||||
rc = virCgroupForDriver("lxc", &lxc_driver->cgroup, privileged, 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user