From df01e14bd7dc06291523bb18cfc3c1579523bd3d Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 3 Sep 2008 17:21:27 +0000 Subject: [PATCH] Add LXC version implementation This patch adds an implementation of the version function to the LXC driver. The providers use the hypervisor version in a field of one of the instances, so we need to have something meaningful here. AFAICT, the only real option we have (considering the limitations of the libvirt version information) is to use the kernel version. --- ChangeLog | 4 ++++ src/lxc_driver.c | 25 ++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0a471876d3..33ae01b7d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Wed Sep 3 10:14:00 PDT 2008 Dan Smith + * src/lxc_driver.c: + Add hypervisor version implementation + Wed Sep 3 11:52:00 EST 2008 Cole Robinson * src/domain_conf.c src/domain_conf.h src/qemu_driver.c: diff --git a/src/lxc_driver.c b/src/lxc_driver.c index 8d2e617fc4..fd1eff436b 100644 --- a/src/lxc_driver.c +++ b/src/lxc_driver.c @@ -1110,6 +1110,29 @@ lxcActive(void) { return 0; } +static int lxcVersion(virConnectPtr conn, unsigned long *version) +{ + struct utsname ver; + int maj; + int min; + int rev; + + if (uname(&ver) != 0) { + lxcError(conn, NULL, VIR_ERR_INTERNAL_ERROR, + _("uname(): %m")); + return -1; + } + + if (sscanf(ver.release, "%i.%i.%i", &maj, &min, &rev) != 3) { + lxcError(conn, NULL, VIR_ERR_INTERNAL_ERROR, + _("Unknown release: %s"), ver.release); + return -1; + } + + *version = (maj * 1000 * 1000) + (min * 1000) + rev; + + return 0; +} /* Function Tables */ static virDriver lxcDriver = { @@ -1121,7 +1144,7 @@ static virDriver lxcDriver = { lxcClose, /* close */ NULL, /* supports_feature */ NULL, /* type */ - NULL, /* version */ + lxcVersion, /* version */ NULL, /* getHostname */ NULL, /* getURI */ NULL, /* getMaxVcpus */