mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
network: implement virNetworkUpdate for test_driver
The test driver does nothing outside of keeping track of each network's config/state in the in-memory database maintained by network_conf functions, so all we have to do is call the function that updates the network's entry in the in-memory database.
This commit is contained in:
parent
cd331650c0
commit
6bdcef11e3
@ -3126,7 +3126,9 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static virNetworkPtr testNetworkDefine(virConnectPtr conn, const char *xml) {
|
static
|
||||||
|
virNetworkPtr testNetworkDefine(virConnectPtr conn, const char *xml)
|
||||||
|
{
|
||||||
testConnPtr privconn = conn->privateData;
|
testConnPtr privconn = conn->privateData;
|
||||||
virNetworkDefPtr def;
|
virNetworkDefPtr def;
|
||||||
virNetworkObjPtr net = NULL;
|
virNetworkObjPtr net = NULL;
|
||||||
@ -3183,6 +3185,54 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
testNetworkUpdate(virNetworkPtr net,
|
||||||
|
unsigned int command,
|
||||||
|
unsigned int section,
|
||||||
|
int parentIndex,
|
||||||
|
const char *xml,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
testConnPtr privconn = net->conn->privateData;
|
||||||
|
virNetworkObjPtr network = NULL;
|
||||||
|
int isActive, ret = -1;
|
||||||
|
|
||||||
|
virCheckFlags(VIR_NETWORK_UPDATE_AFFECT_LIVE |
|
||||||
|
VIR_NETWORK_UPDATE_AFFECT_CONFIG,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
testDriverLock(privconn);
|
||||||
|
|
||||||
|
network = virNetworkFindByUUID(&privconn->networks, net->uuid);
|
||||||
|
if (!network) {
|
||||||
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
|
"%s", _("no network with matching uuid"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* VIR_NETWORK_UPDATE_AFFECT_CURRENT means "change LIVE if network
|
||||||
|
* is active, else change CONFIG
|
||||||
|
*/
|
||||||
|
isActive = virNetworkObjIsActive(network);
|
||||||
|
if ((flags & (VIR_NETWORK_UPDATE_AFFECT_LIVE
|
||||||
|
| VIR_NETWORK_UPDATE_AFFECT_CONFIG)) ==
|
||||||
|
VIR_NETWORK_UPDATE_AFFECT_CURRENT) {
|
||||||
|
if (isActive)
|
||||||
|
flags |= VIR_NETWORK_UPDATE_AFFECT_LIVE;
|
||||||
|
else
|
||||||
|
flags |= VIR_NETWORK_UPDATE_AFFECT_CONFIG;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* update the network config in memory/on disk */
|
||||||
|
if (virNetworkObjUpdate(network, command, section, parentIndex, xml, flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
cleanup:
|
||||||
|
testDriverUnlock(privconn);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int testNetworkStart(virNetworkPtr network) {
|
static int testNetworkStart(virNetworkPtr network) {
|
||||||
testConnPtr privconn = network->conn->privateData;
|
testConnPtr privconn = network->conn->privateData;
|
||||||
virNetworkObjPtr privnet;
|
virNetworkObjPtr privnet;
|
||||||
@ -5722,6 +5772,7 @@ static virNetworkDriver testNetworkDriver = {
|
|||||||
.networkCreateXML = testNetworkCreate, /* 0.3.2 */
|
.networkCreateXML = testNetworkCreate, /* 0.3.2 */
|
||||||
.networkDefineXML = testNetworkDefine, /* 0.3.2 */
|
.networkDefineXML = testNetworkDefine, /* 0.3.2 */
|
||||||
.networkUndefine = testNetworkUndefine, /* 0.3.2 */
|
.networkUndefine = testNetworkUndefine, /* 0.3.2 */
|
||||||
|
.networkUpdate = testNetworkUpdate, /* 0.10.2 */
|
||||||
.networkCreate = testNetworkStart, /* 0.3.2 */
|
.networkCreate = testNetworkStart, /* 0.3.2 */
|
||||||
.networkDestroy = testNetworkDestroy, /* 0.3.2 */
|
.networkDestroy = testNetworkDestroy, /* 0.3.2 */
|
||||||
.networkGetXMLDesc = testNetworkGetXMLDesc, /* 0.3.2 */
|
.networkGetXMLDesc = testNetworkGetXMLDesc, /* 0.3.2 */
|
||||||
|
Loading…
Reference in New Issue
Block a user