mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
drivers: add virDomainCreateWithFlags if virDomainCreate exists
* src/esx/esx_driver.c (esxDomainCreate): Move guts... (esxDomainCreateWithFlags): ...to new function. (esxDriver): Trivially support the new API. * src/lxc/lxc_driver.c (lxcDomainStart, lxcDomainStartWithFlags) (lxcDriver): Likewise. * src/opennebula/one_driver.c (oneDomainStart) (oneDomainStartWithFlags, oneDriver): Likewise. * src/openvz/openvz_driver.c (openvzDomainCreate) (openvzDomainCreateWithFlags, openvzDriver): Likewise. * src/qemu/qemu_driver.c (qemudDomainStart) (qemudDomainStartWithFlags, qemuDriver): Likewise. * src/test/test_driver.c (testDomainCreate) (testDomainCreateWithFlags, testDriver): Likewise. * src/uml/uml_driver.c (umlDomainStart, umlDomainStartWithFlags) (umlDriver): Likewise. * src/vbox/vbox_tmpl.c (vboxDomainCreate) (vboxDomainCreateWithFlags, Driver): Likewise. * src/xen/xen_driver.c (xenUnifiedDomainCreate) (xenUnifiedDomainCreateWithFlags, xenUnifiedDriver): Likewise. * src/xenapi/xenapi_driver.c (xenapiDomainCreate) (xenapiDomainCreateWithFlags, xenapiDriver): Likewise.
This commit is contained in:
parent
6c83e7ca6f
commit
de3aadaa71
@ -2345,7 +2345,7 @@ esxNumberOfDefinedDomains(virConnectPtr conn)
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
esxDomainCreate(virDomainPtr domain)
|
esxDomainCreateWithFlags(virDomainPtr domain, unsigned int flags)
|
||||||
{
|
{
|
||||||
int result = -1;
|
int result = -1;
|
||||||
esxPrivate *priv = domain->conn->privateData;
|
esxPrivate *priv = domain->conn->privateData;
|
||||||
@ -2355,6 +2355,8 @@ esxDomainCreate(virDomainPtr domain)
|
|||||||
esxVI_ManagedObjectReference *task = NULL;
|
esxVI_ManagedObjectReference *task = NULL;
|
||||||
esxVI_TaskInfoState taskInfoState;
|
esxVI_TaskInfoState taskInfoState;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
if (esxVI_EnsureSession(priv->host) < 0) {
|
if (esxVI_EnsureSession(priv->host) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -2397,7 +2399,11 @@ esxDomainCreate(virDomainPtr domain)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
esxDomainCreate(virDomainPtr domain)
|
||||||
|
{
|
||||||
|
return esxDomainCreateWithFlags(domain, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static virDomainPtr
|
static virDomainPtr
|
||||||
esxDomainDefineXML(virConnectPtr conn, const char *xml ATTRIBUTE_UNUSED)
|
esxDomainDefineXML(virConnectPtr conn, const char *xml ATTRIBUTE_UNUSED)
|
||||||
@ -3694,7 +3700,7 @@ static virDriver esxDriver = {
|
|||||||
esxListDefinedDomains, /* listDefinedDomains */
|
esxListDefinedDomains, /* listDefinedDomains */
|
||||||
esxNumberOfDefinedDomains, /* numOfDefinedDomains */
|
esxNumberOfDefinedDomains, /* numOfDefinedDomains */
|
||||||
esxDomainCreate, /* domainCreate */
|
esxDomainCreate, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
esxDomainCreateWithFlags, /* domainCreateWithFlags */
|
||||||
esxDomainDefineXML, /* domainDefineXML */
|
esxDomainDefineXML, /* domainDefineXML */
|
||||||
esxDomainUndefine, /* domainUndefine */
|
esxDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
@ -1349,20 +1349,23 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lxcDomainStart:
|
* lxcDomainStartWithFlags:
|
||||||
* @dom: domain to start
|
* @dom: domain to start
|
||||||
|
* @flags: Must be 0 for now
|
||||||
*
|
*
|
||||||
* Looks up domain and starts it.
|
* Looks up domain and starts it.
|
||||||
*
|
*
|
||||||
* Returns 0 on success or -1 in case of error
|
* Returns 0 on success or -1 in case of error
|
||||||
*/
|
*/
|
||||||
static int lxcDomainStart(virDomainPtr dom)
|
static int lxcDomainStartWithFlags(virDomainPtr dom, unsigned int flags)
|
||||||
{
|
{
|
||||||
lxc_driver_t *driver = dom->conn->privateData;
|
lxc_driver_t *driver = dom->conn->privateData;
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
virDomainEventPtr event = NULL;
|
virDomainEventPtr event = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
lxcDriverLock(driver);
|
lxcDriverLock(driver);
|
||||||
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
||||||
if (!vm) {
|
if (!vm) {
|
||||||
@ -1401,6 +1404,19 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* lxcDomainStart:
|
||||||
|
* @dom: domain to start
|
||||||
|
*
|
||||||
|
* Looks up domain and starts it.
|
||||||
|
*
|
||||||
|
* Returns 0 on success or -1 in case of error
|
||||||
|
*/
|
||||||
|
static int lxcDomainStart(virDomainPtr dom)
|
||||||
|
{
|
||||||
|
return lxcDomainStartWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lxcDomainCreateAndStart:
|
* lxcDomainCreateAndStart:
|
||||||
* @conn: pointer to connection
|
* @conn: pointer to connection
|
||||||
@ -2557,7 +2573,7 @@ static virDriver lxcDriver = {
|
|||||||
lxcListDefinedDomains, /* listDefinedDomains */
|
lxcListDefinedDomains, /* listDefinedDomains */
|
||||||
lxcNumDefinedDomains, /* numOfDefinedDomains */
|
lxcNumDefinedDomains, /* numOfDefinedDomains */
|
||||||
lxcDomainStart, /* domainCreate */
|
lxcDomainStart, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
lxcDomainStartWithFlags, /* domainCreateWithFlags */
|
||||||
lxcDomainDefine, /* domainDefineXML */
|
lxcDomainDefine, /* domainDefineXML */
|
||||||
lxcDomainUndefine, /* domainUndefine */
|
lxcDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
@ -402,7 +402,7 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int oneDomainStart(virDomainPtr dom)
|
static int oneDomainStartWithFlags(virDomainPtr dom, unsigned int flags)
|
||||||
{
|
{
|
||||||
virConnectPtr conn = dom->conn;
|
virConnectPtr conn = dom->conn;
|
||||||
one_driver_t *driver = conn->privateData;
|
one_driver_t *driver = conn->privateData;
|
||||||
@ -410,6 +410,8 @@ static int oneDomainStart(virDomainPtr dom)
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
int oneid;
|
int oneid;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
oneDriverLock(driver);
|
oneDriverLock(driver);
|
||||||
vm = virDomainFindByName(&driver->domains, dom->name);
|
vm = virDomainFindByName(&driver->domains, dom->name);
|
||||||
|
|
||||||
@ -434,6 +436,11 @@ return_point:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int oneDomainStart(virDomainPtr dom)
|
||||||
|
{
|
||||||
|
return oneDomainStartWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static virDomainPtr
|
static virDomainPtr
|
||||||
oneDomainCreateAndStart(virConnectPtr conn,
|
oneDomainCreateAndStart(virConnectPtr conn,
|
||||||
const char *xml,
|
const char *xml,
|
||||||
@ -755,7 +762,7 @@ static virDriver oneDriver = {
|
|||||||
oneListDefinedDomains, /* listDefinedDomains */
|
oneListDefinedDomains, /* listDefinedDomains */
|
||||||
oneNumDefinedDomains, /* numOfDefinedDomains */
|
oneNumDefinedDomains, /* numOfDefinedDomains */
|
||||||
oneDomainStart, /* domainCreate */
|
oneDomainStart, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
oneDomainStartWithFlags, /* domainCreateWithFlags */
|
||||||
oneDomainDefine, /* domainDefineXML */
|
oneDomainDefine, /* domainDefineXML */
|
||||||
oneDomainUndefine, /* domainUndefine */
|
oneDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
@ -958,13 +958,15 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
openvzDomainCreate(virDomainPtr dom)
|
openvzDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
|
||||||
{
|
{
|
||||||
struct openvz_driver *driver = dom->conn->privateData;
|
struct openvz_driver *driver = dom->conn->privateData;
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
const char *prog[] = {VZCTL, "--quiet", "start", PROGRAM_SENTINAL, NULL };
|
const char *prog[] = {VZCTL, "--quiet", "start", PROGRAM_SENTINAL, NULL };
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
openvzDriverLock(driver);
|
openvzDriverLock(driver);
|
||||||
vm = virDomainFindByName(&driver->domains, dom->name);
|
vm = virDomainFindByName(&driver->domains, dom->name);
|
||||||
openvzDriverUnlock(driver);
|
openvzDriverUnlock(driver);
|
||||||
@ -999,6 +1001,12 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
openvzDomainCreate(virDomainPtr dom)
|
||||||
|
{
|
||||||
|
return openvzDomainCreateWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
openvzDomainUndefine(virDomainPtr dom)
|
openvzDomainUndefine(virDomainPtr dom)
|
||||||
{
|
{
|
||||||
@ -1507,7 +1515,7 @@ static virDriver openvzDriver = {
|
|||||||
openvzListDefinedDomains, /* listDefinedDomains */
|
openvzListDefinedDomains, /* listDefinedDomains */
|
||||||
openvzNumDefinedDomains, /* numOfDefinedDomains */
|
openvzNumDefinedDomains, /* numOfDefinedDomains */
|
||||||
openvzDomainCreate, /* domainCreate */
|
openvzDomainCreate, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
openvzDomainCreateWithFlags, /* domainCreateWithFlags */
|
||||||
openvzDomainDefineXML, /* domainDefineXML */
|
openvzDomainDefineXML, /* domainDefineXML */
|
||||||
openvzDomainUndefine, /* domainUndefine */
|
openvzDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
@ -6721,11 +6721,16 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qemudDomainStart(virDomainPtr dom) {
|
static int
|
||||||
|
qemudDomainStartWithFlags(virDomainPtr dom, unsigned int flags)
|
||||||
|
{
|
||||||
struct qemud_driver *driver = dom->conn->privateData;
|
struct qemud_driver *driver = dom->conn->privateData;
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
/* XXX: Support VIR_DOMAIN_START_PAUSED */
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
qemuDriverLock(driver);
|
qemuDriverLock(driver);
|
||||||
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
||||||
|
|
||||||
@ -6759,6 +6764,12 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
qemudDomainStart(virDomainPtr dom)
|
||||||
|
{
|
||||||
|
return qemudDomainStartWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemudCanonicalizeMachineFromInfo(virDomainDefPtr def,
|
qemudCanonicalizeMachineFromInfo(virDomainDefPtr def,
|
||||||
virCapsGuestDomainInfoPtr info,
|
virCapsGuestDomainInfoPtr info,
|
||||||
@ -12195,7 +12206,7 @@ static virDriver qemuDriver = {
|
|||||||
qemudListDefinedDomains, /* listDefinedDomains */
|
qemudListDefinedDomains, /* listDefinedDomains */
|
||||||
qemudNumDefinedDomains, /* numOfDefinedDomains */
|
qemudNumDefinedDomains, /* numOfDefinedDomains */
|
||||||
qemudDomainStart, /* domainCreate */
|
qemudDomainStart, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
qemudDomainStartWithFlags, /* domainCreateWithFlags */
|
||||||
qemudDomainDefine, /* domainDefineXML */
|
qemudDomainDefine, /* domainDefineXML */
|
||||||
qemudDomainUndefine, /* domainUndefine */
|
qemudDomainUndefine, /* domainUndefine */
|
||||||
qemudDomainAttachDevice, /* domainAttachDevice */
|
qemudDomainAttachDevice, /* domainAttachDevice */
|
||||||
|
@ -2350,12 +2350,14 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int testDomainCreate(virDomainPtr domain) {
|
static int testDomainCreateWithFlags(virDomainPtr domain, unsigned int flags) {
|
||||||
testConnPtr privconn = domain->conn->privateData;
|
testConnPtr privconn = domain->conn->privateData;
|
||||||
virDomainObjPtr privdom;
|
virDomainObjPtr privdom;
|
||||||
virDomainEventPtr event = NULL;
|
virDomainEventPtr event = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
testDriverLock(privconn);
|
testDriverLock(privconn);
|
||||||
privdom = virDomainFindByName(&privconn->domains,
|
privdom = virDomainFindByName(&privconn->domains,
|
||||||
domain->name);
|
domain->name);
|
||||||
@ -2389,6 +2391,10 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int testDomainCreate(virDomainPtr domain) {
|
||||||
|
return testDomainCreateWithFlags(domain, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static int testDomainUndefine(virDomainPtr domain) {
|
static int testDomainUndefine(virDomainPtr domain) {
|
||||||
testConnPtr privconn = domain->conn->privateData;
|
testConnPtr privconn = domain->conn->privateData;
|
||||||
virDomainObjPtr privdom;
|
virDomainObjPtr privdom;
|
||||||
@ -5261,7 +5267,7 @@ static virDriver testDriver = {
|
|||||||
testListDefinedDomains, /* listDefinedDomains */
|
testListDefinedDomains, /* listDefinedDomains */
|
||||||
testNumOfDefinedDomains, /* numOfDefinedDomains */
|
testNumOfDefinedDomains, /* numOfDefinedDomains */
|
||||||
testDomainCreate, /* domainCreate */
|
testDomainCreate, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
testDomainCreateWithFlags, /* domainCreateWithFlags */
|
||||||
testDomainDefineXML, /* domainDefineXML */
|
testDomainDefineXML, /* domainDefineXML */
|
||||||
testDomainUndefine, /* domainUndefine */
|
testDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
@ -1576,11 +1576,13 @@ static int umlNumDefinedDomains(virConnectPtr conn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int umlDomainStart(virDomainPtr dom) {
|
static int umlDomainStartWithFlags(virDomainPtr dom, unsigned int flags) {
|
||||||
struct uml_driver *driver = dom->conn->privateData;
|
struct uml_driver *driver = dom->conn->privateData;
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
umlDriverLock(driver);
|
umlDriverLock(driver);
|
||||||
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
||||||
|
|
||||||
@ -1599,6 +1601,9 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int umlDomainStart(virDomainPtr dom) {
|
||||||
|
return umlDomainStartWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static virDomainPtr umlDomainDefine(virConnectPtr conn, const char *xml) {
|
static virDomainPtr umlDomainDefine(virConnectPtr conn, const char *xml) {
|
||||||
struct uml_driver *driver = conn->privateData;
|
struct uml_driver *driver = conn->privateData;
|
||||||
@ -1892,7 +1897,7 @@ static virDriver umlDriver = {
|
|||||||
umlListDefinedDomains, /* listDefinedDomains */
|
umlListDefinedDomains, /* listDefinedDomains */
|
||||||
umlNumDefinedDomains, /* numOfDefinedDomains */
|
umlNumDefinedDomains, /* numOfDefinedDomains */
|
||||||
umlDomainStart, /* domainCreate */
|
umlDomainStart, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
umlDomainStartWithFlags, /* domainCreateWithFlags */
|
||||||
umlDomainDefine, /* domainDefineXML */
|
umlDomainDefine, /* domainDefineXML */
|
||||||
umlDomainUndefine, /* domainUndefine */
|
umlDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
@ -3143,7 +3143,7 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vboxDomainCreate(virDomainPtr dom) {
|
static int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) {
|
||||||
VBOX_OBJECT_CHECK(dom->conn, int, -1);
|
VBOX_OBJECT_CHECK(dom->conn, int, -1);
|
||||||
IMachine **machines = NULL;
|
IMachine **machines = NULL;
|
||||||
IProgress *progress = NULL;
|
IProgress *progress = NULL;
|
||||||
@ -3155,6 +3155,8 @@ static int vboxDomainCreate(virDomainPtr dom) {
|
|||||||
nsresult rc;
|
nsresult rc;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
if (!dom->name) {
|
if (!dom->name) {
|
||||||
vboxError(VIR_ERR_INTERNAL_ERROR, "%s",
|
vboxError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("Error while reading the domain name"));
|
_("Error while reading the domain name"));
|
||||||
@ -3361,6 +3363,10 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vboxDomainCreate(virDomainPtr dom) {
|
||||||
|
return vboxDomainCreateWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
|
static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
|
||||||
VBOX_OBJECT_CHECK(conn, virDomainPtr, NULL);
|
VBOX_OBJECT_CHECK(conn, virDomainPtr, NULL);
|
||||||
IMachine *machine = NULL;
|
IMachine *machine = NULL;
|
||||||
@ -8177,7 +8183,7 @@ virDriver NAME(Driver) = {
|
|||||||
vboxListDefinedDomains, /* listDefinedDomains */
|
vboxListDefinedDomains, /* listDefinedDomains */
|
||||||
vboxNumOfDefinedDomains, /* numOfDefinedDomains */
|
vboxNumOfDefinedDomains, /* numOfDefinedDomains */
|
||||||
vboxDomainCreate, /* domainCreate */
|
vboxDomainCreate, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
vboxDomainCreateWithFlags, /* domainCreateWithFlags */
|
||||||
vboxDomainDefineXML, /* domainDefineXML */
|
vboxDomainDefineXML, /* domainDefineXML */
|
||||||
vboxDomainUndefine, /* domainUndefine */
|
vboxDomainUndefine, /* domainUndefine */
|
||||||
vboxDomainAttachDevice, /* domainAttachDevice */
|
vboxDomainAttachDevice, /* domainAttachDevice */
|
||||||
|
@ -1381,11 +1381,13 @@ xenUnifiedNumOfDefinedDomains (virConnectPtr conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
xenUnifiedDomainCreate (virDomainPtr dom)
|
xenUnifiedDomainCreateWithFlags (virDomainPtr dom, unsigned int flags)
|
||||||
{
|
{
|
||||||
GET_PRIVATE(dom->conn);
|
GET_PRIVATE(dom->conn);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
||||||
if (priv->opened[i] && drivers[i]->domainCreate &&
|
if (priv->opened[i] && drivers[i]->domainCreate &&
|
||||||
drivers[i]->domainCreate (dom) == 0)
|
drivers[i]->domainCreate (dom) == 0)
|
||||||
@ -1394,6 +1396,12 @@ xenUnifiedDomainCreate (virDomainPtr dom)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
xenUnifiedDomainCreate (virDomainPtr dom)
|
||||||
|
{
|
||||||
|
return xenUnifiedDomainCreateWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static virDomainPtr
|
static virDomainPtr
|
||||||
xenUnifiedDomainDefineXML (virConnectPtr conn, const char *xml)
|
xenUnifiedDomainDefineXML (virConnectPtr conn, const char *xml)
|
||||||
{
|
{
|
||||||
@ -1941,7 +1949,7 @@ static virDriver xenUnifiedDriver = {
|
|||||||
xenUnifiedListDefinedDomains, /* listDefinedDomains */
|
xenUnifiedListDefinedDomains, /* listDefinedDomains */
|
||||||
xenUnifiedNumOfDefinedDomains, /* numOfDefinedDomains */
|
xenUnifiedNumOfDefinedDomains, /* numOfDefinedDomains */
|
||||||
xenUnifiedDomainCreate, /* domainCreate */
|
xenUnifiedDomainCreate, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
xenUnifiedDomainCreateWithFlags, /* domainCreateWithFlags */
|
||||||
xenUnifiedDomainDefineXML, /* domainDefineXML */
|
xenUnifiedDomainDefineXML, /* domainDefineXML */
|
||||||
xenUnifiedDomainUndefine, /* domainUndefine */
|
xenUnifiedDomainUndefine, /* domainUndefine */
|
||||||
xenUnifiedDomainAttachDevice, /* domainAttachDevice */
|
xenUnifiedDomainAttachDevice, /* domainAttachDevice */
|
||||||
|
@ -1448,17 +1448,20 @@ xenapiNumOfDefinedDomains (virConnectPtr conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* xenapiDomainCreate
|
* xenapiDomainCreateWithFlags
|
||||||
*
|
*
|
||||||
* starts a VM
|
* starts a VM
|
||||||
* Return 0 on success or -1 in case of error
|
* Return 0 on success or -1 in case of error
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xenapiDomainCreate (virDomainPtr dom)
|
xenapiDomainCreateWithFlags (virDomainPtr dom, unsigned int flags)
|
||||||
{
|
{
|
||||||
xen_vm_set *vms;
|
xen_vm_set *vms;
|
||||||
xen_vm vm;
|
xen_vm vm;
|
||||||
xen_session *session = ((struct _xenapiPrivate *)(dom->conn->privateData))->session;
|
xen_session *session = ((struct _xenapiPrivate *)(dom->conn->privateData))->session;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
if (xen_vm_get_by_name_label(session, &vms, dom->name) && vms->size > 0) {
|
if (xen_vm_get_by_name_label(session, &vms, dom->name) && vms->size > 0) {
|
||||||
if (vms->size != 1) {
|
if (vms->size != 1) {
|
||||||
xenapiSessionErrorHandler(dom->conn, VIR_ERR_INTERNAL_ERROR,
|
xenapiSessionErrorHandler(dom->conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -1481,6 +1484,18 @@ xenapiDomainCreate (virDomainPtr dom)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* xenapiDomainCreate
|
||||||
|
*
|
||||||
|
* starts a VM
|
||||||
|
* Return 0 on success or -1 in case of error
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
xenapiDomainCreate (virDomainPtr dom)
|
||||||
|
{
|
||||||
|
return xenapiDomainCreateWithFlags(dom, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* xenapiDomainDefineXML
|
* xenapiDomainDefineXML
|
||||||
*
|
*
|
||||||
@ -1744,7 +1759,7 @@ static virDriver xenapiDriver = {
|
|||||||
xenapiListDefinedDomains, /* listDefinedDomains */
|
xenapiListDefinedDomains, /* listDefinedDomains */
|
||||||
xenapiNumOfDefinedDomains, /* numOfDefinedDomains */
|
xenapiNumOfDefinedDomains, /* numOfDefinedDomains */
|
||||||
xenapiDomainCreate, /* domainCreate */
|
xenapiDomainCreate, /* domainCreate */
|
||||||
NULL, /* domainCreateWithFlags */
|
xenapiDomainCreateWithFlags, /* domainCreateWithFlags */
|
||||||
xenapiDomainDefineXML, /* domainDefineXML */
|
xenapiDomainDefineXML, /* domainDefineXML */
|
||||||
xenapiDomainUndefine, /* domainUndefine */
|
xenapiDomainUndefine, /* domainUndefine */
|
||||||
NULL, /* domainAttachDevice */
|
NULL, /* domainAttachDevice */
|
||||||
|
Loading…
Reference in New Issue
Block a user