mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
libxl: Add support for parsing/formating Xen XL config
Now that xenconfig supports parsing and formatting Xen's XL config format, integrate it into the libxl driver's connectDomainXML{From,To}Native functions. Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com> Signed-off-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
parent
4ed5fb9193
commit
cec71a6ba6
@ -48,6 +48,7 @@
|
|||||||
#include "libxl_migration.h"
|
#include "libxl_migration.h"
|
||||||
#include "xen_xm.h"
|
#include "xen_xm.h"
|
||||||
#include "xen_sxpr.h"
|
#include "xen_sxpr.h"
|
||||||
|
#include "xen_xl.h"
|
||||||
#include "virtypedparam.h"
|
#include "virtypedparam.h"
|
||||||
#include "viruri.h"
|
#include "viruri.h"
|
||||||
#include "virstring.h"
|
#include "virstring.h"
|
||||||
@ -67,6 +68,7 @@ VIR_LOG_INIT("libxl.libxl_driver");
|
|||||||
#define LIBXL_DOM_REQ_CRASH 3
|
#define LIBXL_DOM_REQ_CRASH 3
|
||||||
#define LIBXL_DOM_REQ_HALT 4
|
#define LIBXL_DOM_REQ_HALT 4
|
||||||
|
|
||||||
|
#define LIBXL_CONFIG_FORMAT_XL "xen-xl"
|
||||||
#define LIBXL_CONFIG_FORMAT_XM "xen-xm"
|
#define LIBXL_CONFIG_FORMAT_XM "xen-xm"
|
||||||
#define LIBXL_CONFIG_FORMAT_SEXPR "xen-sxpr"
|
#define LIBXL_CONFIG_FORMAT_SEXPR "xen-sxpr"
|
||||||
|
|
||||||
@ -2215,7 +2217,17 @@ libxlConnectDomainXMLFromNative(virConnectPtr conn,
|
|||||||
if (virConnectDomainXMLFromNativeEnsureACL(conn) < 0)
|
if (virConnectDomainXMLFromNativeEnsureACL(conn) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (STREQ(nativeFormat, LIBXL_CONFIG_FORMAT_XM)) {
|
if (STREQ(nativeFormat, LIBXL_CONFIG_FORMAT_XL)) {
|
||||||
|
if (!(conf = virConfReadMem(nativeConfig, strlen(nativeConfig), 0)))
|
||||||
|
goto cleanup;
|
||||||
|
if (!(def = xenParseXL(conf,
|
||||||
|
cfg->caps,
|
||||||
|
cfg->verInfo->xen_version_major))) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("parsing xl config failed"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
} else if (STREQ(nativeFormat, LIBXL_CONFIG_FORMAT_XM)) {
|
||||||
if (!(conf = virConfReadMem(nativeConfig, strlen(nativeConfig), 0)))
|
if (!(conf = virConfReadMem(nativeConfig, strlen(nativeConfig), 0)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -2270,20 +2282,24 @@ libxlConnectDomainXMLToNative(virConnectPtr conn, const char * nativeFormat,
|
|||||||
if (virConnectDomainXMLToNativeEnsureACL(conn) < 0)
|
if (virConnectDomainXMLToNativeEnsureACL(conn) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (STRNEQ(nativeFormat, LIBXL_CONFIG_FORMAT_XM)) {
|
|
||||||
virReportError(VIR_ERR_INVALID_ARG,
|
|
||||||
_("unsupported config type %s"), nativeFormat);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(def = virDomainDefParseString(domainXml,
|
if (!(def = virDomainDefParseString(domainXml,
|
||||||
cfg->caps, driver->xmlopt,
|
cfg->caps, driver->xmlopt,
|
||||||
1 << VIR_DOMAIN_VIRT_XEN,
|
1 << VIR_DOMAIN_VIRT_XEN,
|
||||||
VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(conf = xenFormatXM(conn, def, cfg->verInfo->xen_version_major)))
|
if (STREQ(nativeFormat, LIBXL_CONFIG_FORMAT_XL)) {
|
||||||
|
if (!(conf = xenFormatXL(def, conn, cfg->verInfo->xen_version_major)))
|
||||||
|
goto cleanup;
|
||||||
|
} else if (STREQ(nativeFormat, LIBXL_CONFIG_FORMAT_XM)) {
|
||||||
|
if (!(conf = xenFormatXM(conn, def, cfg->verInfo->xen_version_major)))
|
||||||
|
goto cleanup;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
virReportError(VIR_ERR_INVALID_ARG,
|
||||||
|
_("unsupported config type %s"), nativeFormat);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
if (VIR_ALLOC_N(ret, len) < 0)
|
if (VIR_ALLOC_N(ret, len) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -1272,16 +1272,16 @@ in order to get or set the guest time.
|
|||||||
Convert the file I<config> in the native guest configuration format
|
Convert the file I<config> in the native guest configuration format
|
||||||
named by I<format> to a domain XML format. For QEMU/KVM hypervisor,
|
named by I<format> to a domain XML format. For QEMU/KVM hypervisor,
|
||||||
the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
|
the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
|
||||||
I<format> argument may be B<xen-xm> or B<xen-sxpr>. For LXC hypervisor,
|
I<format> argument may be B<xen-xm>, B<xen-xl>, or B<xen-sxpr>. For
|
||||||
the I<format> argument must be B<lxc-tools>.
|
LXC hypervisor, the I<format> argument must be B<lxc-tools>.
|
||||||
|
|
||||||
=item B<domxml-to-native> I<format> I<xml>
|
=item B<domxml-to-native> I<format> I<xml>
|
||||||
|
|
||||||
Convert the file I<xml> in domain XML format to the native guest
|
Convert the file I<xml> in domain XML format to the native guest
|
||||||
configuration format named by I<format>. For QEMU/KVM hypervisor,
|
configuration format named by I<format>. For QEMU/KVM hypervisor,
|
||||||
the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
|
the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
|
||||||
I<format> argument may be B<xen-xm> or B<xen-sxpr>. For LXC hypervisor,
|
I<format> argument may be B<xen-xm>, B<xen-xl>, or B<xen-sxpr>. For
|
||||||
the I<format> argument must be B<lxc-tools>.
|
LXC hypervisor, the I<format> argument must be B<lxc-tools>.
|
||||||
|
|
||||||
=item B<dump> I<domain> I<corefilepath> [I<--bypass-cache>]
|
=item B<dump> I<domain> I<corefilepath> [I<--bypass-cache>]
|
||||||
{ [I<--live>] | [I<--crash>] | [I<--reset>] } [I<--verbose>] [I<--memory-only>]
|
{ [I<--live>] | [I<--crash>] | [I<--reset>] } [I<--verbose>] [I<--memory-only>]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user