mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-26 18:41:17 +00:00
Attempting to create a lxc domain with <seclabel type='none'/> fails virsh --connect lxc:/// create distro_nosec.xml error: Failed to create domain from distro_nosec.xml error: unsupported configuration: Security driver model '(null)' is not available Commit638ffa2228
adjusted the logic for setting a driver's default security model. The lxc driver does not set a default security driver model in the XML parser config, causing seclabels of type='none' to have a null model. The lxc driver's security manager is initialized in lxcStateInitialize() by calling lxcSecurityInit(). Use the model of this manager as the default in the XML parser config. For the record, this is a regression caused by commit638ffa2228
, which changed the logic for setting a driver's default security model. The qemu driver was adjusted accordingly, but a similar change was missed in the lxc driver. Signed-off-by: Jim Fehlig <jfehlig@suse.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
90 lines
2.1 KiB
C
90 lines
2.1 KiB
C
#include <config.h>
|
|
#ifdef WITH_LXC
|
|
|
|
# include "testutilslxc.h"
|
|
# include "testutils.h"
|
|
# include "viralloc.h"
|
|
# include "domain_conf.h"
|
|
|
|
# define VIR_FROM_THIS VIR_FROM_LXC
|
|
|
|
virCapsPtr
|
|
testLXCCapsInit(void)
|
|
{
|
|
virCapsPtr caps;
|
|
virCapsGuestPtr guest;
|
|
|
|
if ((caps = virCapabilitiesNew(VIR_ARCH_X86_64,
|
|
false, false)) == NULL)
|
|
return NULL;
|
|
|
|
if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_EXE,
|
|
VIR_ARCH_I686,
|
|
"/usr/libexec/libvirt_lxc", NULL,
|
|
0, NULL)) == NULL)
|
|
goto error;
|
|
|
|
if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_LXC, NULL, NULL, 0, NULL))
|
|
goto error;
|
|
|
|
|
|
if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_EXE,
|
|
VIR_ARCH_X86_64,
|
|
"/usr/libexec/libvirt_lxc", NULL,
|
|
0, NULL)) == NULL)
|
|
goto error;
|
|
|
|
if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_LXC, NULL, NULL, 0, NULL))
|
|
goto error;
|
|
|
|
|
|
if (virTestGetDebug()) {
|
|
char *caps_str;
|
|
|
|
caps_str = virCapabilitiesFormatXML(caps);
|
|
if (!caps_str)
|
|
goto error;
|
|
|
|
VIR_TEST_DEBUG("LXC driver capabilities:\n%s", caps_str);
|
|
|
|
VIR_FREE(caps_str);
|
|
}
|
|
|
|
return caps;
|
|
|
|
error:
|
|
virObjectUnref(caps);
|
|
return NULL;
|
|
}
|
|
|
|
|
|
virLXCDriverPtr
|
|
testLXCDriverInit(void)
|
|
{
|
|
virLXCDriverPtr driver = g_new0(virLXCDriver, 1);
|
|
|
|
if (virMutexInit(&driver->lock) < 0) {
|
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
"%s", "cannot initialize mutex");
|
|
g_free(driver);
|
|
return NULL;
|
|
}
|
|
|
|
driver->caps = testLXCCapsInit();
|
|
driver->xmlopt = lxcDomainXMLConfInit(driver, NULL);
|
|
|
|
return driver;
|
|
}
|
|
|
|
|
|
void
|
|
testLXCDriverFree(virLXCDriverPtr driver)
|
|
{
|
|
virObjectUnref(driver->xmlopt);
|
|
virObjectUnref(driver->caps);
|
|
virMutexDestroy(&driver->lock);
|
|
g_free(driver);
|
|
}
|
|
|
|
#endif
|