
On Fri, 2015-11-20 at 16:52 +0300, Mikhail Feoktistov wrote:
--- src/vz/vz_driver.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 39f58a4..31dfb6a 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -979,6 +979,38 @@ vzDomainUndefine(virDomainPtr domain) return vzDomainUndefineFlags(domain, 0); } +static virDomainPtr +vzDomainCreateXML(virConnectPtr conn, + const char *xml, + unsigned int flags) +{ + virDomainPtr domain; + int ret; + + virCheckFlags(VIR_DOMAIN_START_PAUSED, NULL); + + domain = vzDomainDefineXMLFlags(conn, xml, 0); + if (domain == NULL) + return domain; + + ret = vzDomainCreate(domain); + if (ret != 0) { + vzDomainUndefine(domain); + return NULL; + } + + if (flags & VIR_DOMAIN_START_PAUSED) { + ret = vzDomainSuspend(domain); + if (ret != 0) { + vzDomainDestroy(domain); + vzDomainUndefine(domain); + return NULL; + }
I think we shouldn't allow this start paused operation. Because it means that domain shouldn't run any code before being paused, and with this implementation we start a domain, it does some work and only that you suspend it. Also suspend and paused states are different and we only support paused state for VMs.
+ } + + return domain; +} + static int vzDomainHasManagedSaveImage(virDomainPtr domain, unsigned int flags) { @@ -1493,6 +1525,7 @@ static virHypervisorDriver vzDriver = { .domainShutdown = vzDomainShutdown, /* 0.10.0 */ .domainCreate = vzDomainCreate, /* 0.10.0 */ .domainCreateWithFlags = vzDomainCreateWithFlags, /* 1.2.10 */ + .domainCreateXML = vzDomainCreateXML, /* 1.2.22 */ .domainReboot = vzDomainReboot, /* 1.2.22 */ .domainDefineXML = vzDomainDefineXML, /* 0.10.0 */ .domainDefineXMLFlags = vzDomainDefineXMLFlags, /* 1.2.12 */ -- Dmitry Guryanov