[libvirt] [PATCHv2 7/9] network: implement virNetworkUpdate for test_driver
Daniel Veillard
veillard at redhat.com
Tue Sep 18 08:01:22 UTC 2012
On Tue, Sep 18, 2012 at 03:39:03AM -0400, Laine Stump wrote:
> 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.
> ---
> src/test/test_driver.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 52 insertions(+), 1 deletion(-)
>
> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> index 1bd0d61..0036563 100644
> --- a/src/test/test_driver.c
> +++ b/src/test/test_driver.c
> @@ -3126,7 +3126,9 @@ cleanup:
> return ret;
> }
>
> -static virNetworkPtr testNetworkDefine(virConnectPtr conn, const char *xml) {
> +static
> +virNetworkPtr testNetworkDefine(virConnectPtr conn, const char *xml)
> +{
> testConnPtr privconn = conn->privateData;
> virNetworkDefPtr def;
> virNetworkObjPtr net = NULL;
> @@ -3183,6 +3185,54 @@ cleanup:
> 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) {
> testConnPtr privconn = network->conn->privateData;
> virNetworkObjPtr privnet;
> @@ -5722,6 +5772,7 @@ static virNetworkDriver testNetworkDriver = {
> .networkCreateXML = testNetworkCreate, /* 0.3.2 */
> .networkDefineXML = testNetworkDefine, /* 0.3.2 */
> .networkUndefine = testNetworkUndefine, /* 0.3.2 */
> + .networkUpdate = testNetworkUpdate, /* 0.10.2 */
> .networkCreate = testNetworkStart, /* 0.3.2 */
> .networkDestroy = testNetworkDestroy, /* 0.3.2 */
> .networkGetXMLDesc = testNetworkGetXMLDesc, /* 0.3.2 */
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list