[libvirt] [PATCH 0/3] Add tests for network update XML parsing

Ján Tomko (3): Add space before the slash in dns srv entries Reverse logic allowing partial DHCP host XML Test network XML update src/conf/network_conf.h | 9 + src/libvirt_private.syms | 1 + src/conf/network_conf.c | 25 +- tests/Makefile.am | 9 +- tests/networkxml2xmltest.c | 3 + tests/networkxml2xmlupdatetest.c | 372 +++++++++++++++++++++ .../nat-network-dns-srv-records.xml | 27 ++ .../nat-network-dns-srv-records.xml | 27 ++ .../networkxml2xmlupdatein/dhcp-range-existing.xml | 1 + tests/networkxml2xmlupdatein/dhcp-range.xml | 1 + .../dns-host-gateway-incomplete.xml | 3 + tests/networkxml2xmlupdatein/dns-host-pudding.xml | 3 + .../dns-txt-record-example.xml | 1 + .../dns-txt-record-snowman.xml | 1 + tests/networkxml2xmlupdatein/host-existing.xml | 1 + tests/networkxml2xmlupdatein/host-incomplete.xml | 1 + .../networkxml2xmlupdatein/host-new-incomplete.xml | 1 + tests/networkxml2xmlupdatein/host-new.xml | 1 + tests/networkxml2xmlupdatein/host-updated.xml | 1 + tests/networkxml2xmlupdatein/interface-eth1.xml | 1 + tests/networkxml2xmlupdatein/interface-eth47.xml | 1 + .../networkxml2xmlupdatein/portgroup-alice-new.xml | 10 + tests/networkxml2xmlupdatein/portgroup-alison.xml | 11 + tests/networkxml2xmlupdatein/srv-record-donkey.xml | 1 + .../networkxml2xmlupdatein/srv-record-invalid.xml | 1 + .../networkxml2xmlupdatein/srv-record-protocol.xml | 1 + .../networkxml2xmlupdatein/srv-record-service.xml | 1 + tests/networkxml2xmlupdatein/srv-record.xml | 1 + .../networkxml2xmlupdatein/unparsable-dns-host.xml | 1 + .../dhcp6host-routed-network-another-range.xml | 27 ++ .../dhcp6host-routed-network-range.xml | 27 ++ .../nat-network-dns-more-hosts.xml | 19 ++ .../nat-network-dns-srv-record.xml | 26 ++ .../nat-network-dns-srv-records.xml | 27 ++ .../nat-network-dns-txt-none.xml | 23 ++ .../nat-network-dns-txt-records.xml | 27 ++ .../nat-network-forward-ifaces.xml | 27 ++ .../nat-network-host-updated.xml | 23 ++ .../networkxml2xmlupdateout/nat-network-hosts.xml | 24 ++ .../nat-network-no-forward-ifaces.xml | 24 ++ .../nat-network-no-hosts.xml | 10 + .../nat-network-no-range.xml | 22 ++ .../nat-network-one-host.xml | 22 ++ tests/networkxml2xmlupdateout/nat-network.xml | 23 ++ .../openvswitch-net-modified.xml | 33 ++ .../openvswitch-net-more-portgroups.xml | 44 +++ .../openvswitch-net-without-alice.xml | 23 ++ 47 files changed, 949 insertions(+), 19 deletions(-) create mode 100644 tests/networkxml2xmlupdatetest.c create mode 100644 tests/networkxml2xmlin/nat-network-dns-srv-records.xml create mode 100644 tests/networkxml2xmlout/nat-network-dns-srv-records.xml create mode 100644 tests/networkxml2xmlupdatein/dhcp-range-existing.xml create mode 100644 tests/networkxml2xmlupdatein/dhcp-range.xml create mode 100644 tests/networkxml2xmlupdatein/dns-host-gateway-incomplete.xml create mode 100644 tests/networkxml2xmlupdatein/dns-host-pudding.xml create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-example.xml create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-snowman.xml create mode 100644 tests/networkxml2xmlupdatein/host-existing.xml create mode 100644 tests/networkxml2xmlupdatein/host-incomplete.xml create mode 100644 tests/networkxml2xmlupdatein/host-new-incomplete.xml create mode 100644 tests/networkxml2xmlupdatein/host-new.xml create mode 100644 tests/networkxml2xmlupdatein/host-updated.xml create mode 100644 tests/networkxml2xmlupdatein/interface-eth1.xml create mode 100644 tests/networkxml2xmlupdatein/interface-eth47.xml create mode 100644 tests/networkxml2xmlupdatein/portgroup-alice-new.xml create mode 100644 tests/networkxml2xmlupdatein/portgroup-alison.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-donkey.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-invalid.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-protocol.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-service.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record.xml create mode 100644 tests/networkxml2xmlupdatein/unparsable-dns-host.xml create mode 100644 tests/networkxml2xmlupdateout/dhcp6host-routed-network-another-range.xml create mode 100644 tests/networkxml2xmlupdateout/dhcp6host-routed-network-range.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-more-hosts.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-srv-record.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-srv-records.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-none.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-records.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-forward-ifaces.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-host-updated.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-hosts.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-forward-ifaces.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-hosts.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-range.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-one-host.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network.xml create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-modified.xml create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-more-portgroups.xml create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-without-alice.xml -- 1.8.1.5

This matches the style for dhcp range/host and dns txt entries. nat-network-dns-srv-record{,-minimal}.xml were only used by the network schema test. This change allows them to be used unchanged by network XML->XML test. --- src/conf/network_conf.c | 2 +- tests/networkxml2xmltest.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e3998f3..a0b543c 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2281,7 +2281,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, if (def->srvs[i].weight) virBufferAsprintf(buf, " weight='%d'", def->srvs[i].weight); - virBufferAddLit(buf, "/>\n"); + virBufferAddLit(buf, " />\n"); } } diff --git a/tests/networkxml2xmltest.c b/tests/networkxml2xmltest.c index 0dfed16..bb8a9ad 100644 --- a/tests/networkxml2xmltest.c +++ b/tests/networkxml2xmltest.c @@ -103,6 +103,8 @@ mymain(void) DO_TEST("netboot-network"); DO_TEST("netboot-proxy-network"); DO_TEST("nat-network-dns-txt-record"); + DO_TEST("nat-network-dns-srv-record"); + DO_TEST("nat-network-dns-srv-record-minimal"); DO_TEST("nat-network-dns-hosts"); DO_TEST("8021Qbh-net"); DO_TEST("direct-net"); -- 1.8.1.5

On Wed, Jul 31, 2013 at 13:41:42 +0200, Jano Tomko wrote:
This matches the style for dhcp range/host and dns txt entries.
nat-network-dns-srv-record{,-minimal}.xml were only used by the network schema test. This change allows them to be used unchanged by network XML->XML test. --- src/conf/network_conf.c | 2 +- tests/networkxml2xmltest.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e3998f3..a0b543c 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2281,7 +2281,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, if (def->srvs[i].weight) virBufferAsprintf(buf, " weight='%d'", def->srvs[i].weight);
- virBufferAddLit(buf, "/>\n"); + virBufferAddLit(buf, " />\n"); } }
Hmm, shouldn't we rather remove the space from all other places to match how we normally format XML? Jirka

On Wed, Jul 31, 2013 at 02:27:50PM +0200, Jiri Denemark wrote:
On Wed, Jul 31, 2013 at 13:41:42 +0200, Jano Tomko wrote:
This matches the style for dhcp range/host and dns txt entries.
nat-network-dns-srv-record{,-minimal}.xml were only used by the network schema test. This change allows them to be used unchanged by network XML->XML test. --- src/conf/network_conf.c | 2 +- tests/networkxml2xmltest.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e3998f3..a0b543c 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2281,7 +2281,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, if (def->srvs[i].weight) virBufferAsprintf(buf, " weight='%d'", def->srvs[i].weight);
- virBufferAddLit(buf, "/>\n"); + virBufferAddLit(buf, " />\n"); } }
Hmm, shouldn't we rather remove the space from all other places to match how we normally format XML?
Agreed, we usually avoid space before '/>' Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Before, missing attributes were only OK when adding entries; modification and deletion required all of them. Now, only deletion works with missing attributes, as long as the host is uniquely identified. --- src/conf/network_conf.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index a0b543c..16bdb45 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -3297,6 +3297,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, int ret = -1; virNetworkIpDefPtr ipdef = virNetworkIpDefByIndex(def, parentIndex); virNetworkDHCPHostDef host; + bool isDelete = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE); memset(&host, 0, sizeof(host)); @@ -3307,13 +3308,11 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, if (!ipdef) goto cleanup; - /* parse the xml into a virNetworkDHCPHostDef */ - if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) { + if (virNetworkDHCPHostDefParseXML(def->name, ipdef, ctxt->node, + &host, isDelete) < 0) + goto cleanup; - if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, false) < 0) { - goto cleanup; - } + if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) { /* search for the entry with this (mac|name), * and update the IP+(mac|name) */ @@ -3345,11 +3344,6 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, } else if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) || (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)) { - if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, true) < 0) { - goto cleanup; - } - /* log error if an entry with same name/address/ip already exists */ for (i = 0; i < ipdef->nhosts; i++) { if ((host.mac && @@ -3379,11 +3373,6 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, goto cleanup; } else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) { - if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, false) < 0) { - goto cleanup; - } - /* find matching entry - all specified attributes must match */ for (i = 0; i < ipdef->nhosts; i++) { if ((!host.mac || -- 1.8.1.5

On 07/31/2013 07:41 AM, Ján Tomko wrote:
Before, missing attributes were only OK when adding entries; modification and deletion required all of them.
Now, only deletion works with missing attributes, as long as the host is uniquely identified. --- src/conf/network_conf.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index a0b543c..16bdb45 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -3297,6 +3297,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, int ret = -1; virNetworkIpDefPtr ipdef = virNetworkIpDefByIndex(def, parentIndex); virNetworkDHCPHostDef host; + bool isDelete = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
ACK, but change the name of this bool to partialOkay to match its meaning and be consistent with what it's being named in virNetworkDHCPHostDefParseXML.
memset(&host, 0, sizeof(host));
@@ -3307,13 +3308,11 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, if (!ipdef) goto cleanup;
- /* parse the xml into a virNetworkDHCPHostDef */ - if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) { + if (virNetworkDHCPHostDefParseXML(def->name, ipdef, ctxt->node, + &host, isDelete) < 0) + goto cleanup;
- if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, false) < 0) { - goto cleanup; - } + if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
/* search for the entry with this (mac|name), * and update the IP+(mac|name) */ @@ -3345,11 +3344,6 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, } else if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) || (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)) {
- if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, true) < 0) { - goto cleanup; - } - /* log error if an entry with same name/address/ip already exists */ for (i = 0; i < ipdef->nhosts; i++) { if ((host.mac && @@ -3379,11 +3373,6 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, goto cleanup; } else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
- if (virNetworkDHCPHostDefParseXML(def->name, ipdef, - ctxt->node, &host, false) < 0) { - goto cleanup; - } - /* find matching entry - all specified attributes must match */ for (i = 0; i < ipdef->nhosts; i++) { if ((!host.mac ||

On 08/02/2013 12:10 PM, Laine Stump wrote:
On 07/31/2013 07:41 AM, Ján Tomko wrote:
Before, missing attributes were only OK when adding entries; modification and deletion required all of them.
Now, only deletion works with missing attributes, as long as the host is uniquely identified. --- src/conf/network_conf.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index a0b543c..16bdb45 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -3297,6 +3297,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDefPtr def, int ret = -1; virNetworkIpDefPtr ipdef = virNetworkIpDefByIndex(def, parentIndex); virNetworkDHCPHostDef host; + bool isDelete = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
ACK, but change the name of this bool to partialOkay to match its meaning and be consistent with what it's being named in virNetworkDHCPHostDefParseXML.
Renamed and pushed. Thanks! Jan

Add checks for updating sections of network definition via virNetworkDefUpdateSection. https://bugzilla.redhat.com/show_bug.cgi?id=989569 --- src/conf/network_conf.h | 9 + src/libvirt_private.syms | 1 + src/conf/network_conf.c | 2 +- tests/Makefile.am | 9 +- tests/networkxml2xmltest.c | 1 + tests/networkxml2xmlupdatetest.c | 372 +++++++++++++++++++++ .../nat-network-dns-srv-records.xml | 27 ++ .../nat-network-dns-srv-records.xml | 27 ++ .../networkxml2xmlupdatein/dhcp-range-existing.xml | 1 + tests/networkxml2xmlupdatein/dhcp-range.xml | 1 + .../dns-host-gateway-incomplete.xml | 3 + tests/networkxml2xmlupdatein/dns-host-pudding.xml | 3 + .../dns-txt-record-example.xml | 1 + .../dns-txt-record-snowman.xml | 1 + tests/networkxml2xmlupdatein/host-existing.xml | 1 + tests/networkxml2xmlupdatein/host-incomplete.xml | 1 + .../networkxml2xmlupdatein/host-new-incomplete.xml | 1 + tests/networkxml2xmlupdatein/host-new.xml | 1 + tests/networkxml2xmlupdatein/host-updated.xml | 1 + tests/networkxml2xmlupdatein/interface-eth1.xml | 1 + tests/networkxml2xmlupdatein/interface-eth47.xml | 1 + .../networkxml2xmlupdatein/portgroup-alice-new.xml | 10 + tests/networkxml2xmlupdatein/portgroup-alison.xml | 11 + tests/networkxml2xmlupdatein/srv-record-donkey.xml | 1 + .../networkxml2xmlupdatein/srv-record-invalid.xml | 1 + .../networkxml2xmlupdatein/srv-record-protocol.xml | 1 + .../networkxml2xmlupdatein/srv-record-service.xml | 1 + tests/networkxml2xmlupdatein/srv-record.xml | 1 + .../networkxml2xmlupdatein/unparsable-dns-host.xml | 1 + .../dhcp6host-routed-network-another-range.xml | 27 ++ .../dhcp6host-routed-network-range.xml | 27 ++ .../nat-network-dns-more-hosts.xml | 19 ++ .../nat-network-dns-srv-record.xml | 26 ++ .../nat-network-dns-srv-records.xml | 27 ++ .../nat-network-dns-txt-none.xml | 23 ++ .../nat-network-dns-txt-records.xml | 27 ++ .../nat-network-forward-ifaces.xml | 27 ++ .../nat-network-host-updated.xml | 23 ++ .../networkxml2xmlupdateout/nat-network-hosts.xml | 24 ++ .../nat-network-no-forward-ifaces.xml | 24 ++ .../nat-network-no-hosts.xml | 10 + .../nat-network-no-range.xml | 22 ++ .../nat-network-one-host.xml | 22 ++ tests/networkxml2xmlupdateout/nat-network.xml | 23 ++ .../openvswitch-net-modified.xml | 33 ++ .../openvswitch-net-more-portgroups.xml | 44 +++ .../openvswitch-net-without-alice.xml | 23 ++ 47 files changed, 941 insertions(+), 2 deletions(-) create mode 100644 tests/networkxml2xmlupdatetest.c create mode 100644 tests/networkxml2xmlin/nat-network-dns-srv-records.xml create mode 100644 tests/networkxml2xmlout/nat-network-dns-srv-records.xml create mode 100644 tests/networkxml2xmlupdatein/dhcp-range-existing.xml create mode 100644 tests/networkxml2xmlupdatein/dhcp-range.xml create mode 100644 tests/networkxml2xmlupdatein/dns-host-gateway-incomplete.xml create mode 100644 tests/networkxml2xmlupdatein/dns-host-pudding.xml create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-example.xml create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-snowman.xml create mode 100644 tests/networkxml2xmlupdatein/host-existing.xml create mode 100644 tests/networkxml2xmlupdatein/host-incomplete.xml create mode 100644 tests/networkxml2xmlupdatein/host-new-incomplete.xml create mode 100644 tests/networkxml2xmlupdatein/host-new.xml create mode 100644 tests/networkxml2xmlupdatein/host-updated.xml create mode 100644 tests/networkxml2xmlupdatein/interface-eth1.xml create mode 100644 tests/networkxml2xmlupdatein/interface-eth47.xml create mode 100644 tests/networkxml2xmlupdatein/portgroup-alice-new.xml create mode 100644 tests/networkxml2xmlupdatein/portgroup-alison.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-donkey.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-invalid.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-protocol.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record-service.xml create mode 100644 tests/networkxml2xmlupdatein/srv-record.xml create mode 100644 tests/networkxml2xmlupdatein/unparsable-dns-host.xml create mode 100644 tests/networkxml2xmlupdateout/dhcp6host-routed-network-another-range.xml create mode 100644 tests/networkxml2xmlupdateout/dhcp6host-routed-network-range.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-more-hosts.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-srv-record.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-srv-records.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-none.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-records.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-forward-ifaces.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-host-updated.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-hosts.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-forward-ifaces.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-hosts.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-range.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-one-host.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network.xml create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-modified.xml create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-more-portgroups.xml create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-without-alice.xml diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index a1d3282..b35ab56 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -427,4 +427,13 @@ int virNetworkObjListExport(virConnectPtr conn, virNetworkObjListFilter filter, unsigned int flags); +/* for testing */ +int +virNetworkDefUpdateSection(virNetworkDefPtr def, + unsigned int command, /* virNetworkUpdateCommand */ + unsigned int section, /* virNetworkUpdateSection */ + int parentIndex, + const char *xml, + unsigned int flags); /* virNetworkUpdateFlags */ + #endif /* __NETWORK_CONF_H__ */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 201b2cb..e482de8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -502,6 +502,7 @@ virNetworkDefGetIpByIndex; virNetworkDefParseFile; virNetworkDefParseNode; virNetworkDefParseString; +virNetworkDefUpdateSection; virNetworkDeleteConfig; virNetworkFindByName; virNetworkFindByUUID; diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 16bdb45..f213753 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -3959,7 +3959,7 @@ cleanup: return ret; } -static int +int virNetworkDefUpdateSection(virNetworkDefPtr def, unsigned int command, /* virNetworkUpdateCommand */ unsigned int section, /* virNetworkUpdateSection */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 5ea806e..be5a1b7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -72,6 +72,8 @@ EXTRA_DIST = \ networkxml2xmlin \ networkxml2xmlout \ networkxml2confdata \ + networkxml2xmlupdatein \ + networkxml2xmlupdateout \ nodedevschemadata \ nodedevschematest \ nodeinfodata \ @@ -188,7 +190,7 @@ if WITH_YAJL test_programs += jsontest endif -test_programs += networkxml2xmltest +test_programs += networkxml2xmltest networkxml2xmlupdatetest if WITH_NETWORK test_programs += networkxml2conftest @@ -491,6 +493,11 @@ networkxml2xmltest_SOURCES = \ testutils.c testutils.h networkxml2xmltest_LDADD = $(LDADDS) +networkxml2xmlupdatetest_SOURCES = \ + networkxml2xmlupdatetest.c \ + testutils.c testutils.h +networkxml2xmlupdatetest_LDADD = $(LDADDS) + if WITH_NETWORK networkxml2conftest_SOURCES = \ networkxml2conftest.c \ diff --git a/tests/networkxml2xmltest.c b/tests/networkxml2xmltest.c index bb8a9ad..37c7f3d 100644 --- a/tests/networkxml2xmltest.c +++ b/tests/networkxml2xmltest.c @@ -104,6 +104,7 @@ mymain(void) DO_TEST("netboot-proxy-network"); DO_TEST("nat-network-dns-txt-record"); DO_TEST("nat-network-dns-srv-record"); + DO_TEST("nat-network-dns-srv-records"); DO_TEST("nat-network-dns-srv-record-minimal"); DO_TEST("nat-network-dns-hosts"); DO_TEST("8021Qbh-net"); diff --git a/tests/networkxml2xmlupdatetest.c b/tests/networkxml2xmlupdatetest.c new file mode 100644 index 0000000..e5a17b2 --- /dev/null +++ b/tests/networkxml2xmlupdatetest.c @@ -0,0 +1,372 @@ +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> + +#include <sys/types.h> +#include <fcntl.h> + +#include "internal.h" +#include "testutils.h" +#include "network_conf.h" +#include "testutilsqemu.h" +#include "virstring.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +static int +testCompareXMLToXMLFiles(const char *netxml, const char *updatexml, + const char *outxml, unsigned int flags, + unsigned int command, unsigned int section, + int parentIndex, bool expectFailure) +{ + char *netXmlData = NULL; + char *updateXmlData = NULL; + char *outXmlData = NULL; + char *actual = NULL; + int ret = -1; + virNetworkDefPtr def = NULL; + + if (virtTestLoadFile(netxml, &netXmlData) < 0) + goto error; + if (virtTestLoadFile(updatexml, &updateXmlData) < 0) + goto error; + + if (!(def = virNetworkDefParseString(netXmlData))) + goto fail; + + if (virNetworkDefUpdateSection(def, command, section, parentIndex, + updateXmlData, 0) < 0) + goto fail; + + if (!(actual = virNetworkDefFormat(def, flags))) + goto fail; + + if (!expectFailure) { + if (virtTestLoadFile(outxml, &outXmlData) < 0) + goto error; + + if (STRNEQ(outXmlData, actual)) { + virtTestDifference(stderr, outXmlData, actual); + goto fail; + } + } + + ret = 0; + +fail: + if (expectFailure) { + if (ret == 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", "Failed to fail."); + ret = -1; + } else { + virResetLastError(); + ret = 0; + } + } +error: + VIR_FREE(netXmlData); + VIR_FREE(updateXmlData); + VIR_FREE(outXmlData); + VIR_FREE(actual); + virNetworkDefFree(def); + return ret; +} + +struct testInfo { + const char *name; + const char *updatexml; + const char *netxml; + const char *outxml; + unsigned int command; + unsigned int section; + int parentIndex; + unsigned int flags; + bool expectFailure; +}; + +static int +testCompareXMLToXMLHelper(const void *data) +{ + const struct testInfo *info = data; + int result = -1; + char *netxml = NULL; + char *updatexml = NULL; + char *outxml = NULL; + + if (virAsprintf(&netxml, "%s/networkxml2xmlin/%s.xml", + abs_srcdir, info->netxml) < 0 || + virAsprintf(&updatexml, "%s/networkxml2xmlupdatein/%s.xml", + abs_srcdir, info->updatexml) < 0 || + virAsprintf(&outxml, "%s/networkxml2xmlupdateout/%s.xml", + abs_srcdir, info->outxml) < 0) { + goto cleanup; + } + + result = testCompareXMLToXMLFiles(netxml, updatexml, outxml, info->flags, + info->command, info->section, + info->parentIndex, info->expectFailure); + +cleanup: + VIR_FREE(netxml); + VIR_FREE(updatexml); + VIR_FREE(outxml); + + return result; +} + +static int +mymain(void) +{ + int ret = 0; + unsigned int section; + +#define DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, \ + parentIndex, flags, expectFailure) \ + do { \ + const struct testInfo info = {name, updatexml, netxml, outxml, \ + command, section, flags, \ + parentIndex, expectFailure}; \ + if (virtTestRun("Network XML-2-XML " name, \ + 1, testCompareXMLToXMLHelper, &info) < 0) \ + ret = -1; \ + } while (0) + +#define DO_TEST(name, updatexml, netxml, outxml, command) \ + DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, -12435, \ + 0, false) +#define DO_TEST_FAIL(name, updatexml, netxml, command) \ + DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, -12345, \ + 0, true) + +#define DO_TEST_INDEX(name, updatexml, netxml, outxml, command, index) \ + DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, index, \ + 0, false) +#define DO_TEST_INDEX_FAIL(name, updatexml, netxml, command, index) \ + DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, index, \ + 0, true) + + + section = VIR_NETWORK_SECTION_IP_DHCP_HOST; + DO_TEST_INDEX_FAIL("add-host-incomplete", + "host-incomplete", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, + 0); + DO_TEST_INDEX_FAIL("add-host-new-incomplete", + "host-new-incomplete", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, + 0); + DO_TEST_INDEX_FAIL("add-host-existing", + "host-existing", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, + 0); + DO_TEST_INDEX("add-host-new", + "host-new", + "nat-network", + "nat-network-hosts", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, + 0); + DO_TEST_INDEX_FAIL("modify-host-missing", + "host-new", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_MODIFY, + 0); + DO_TEST_INDEX_FAIL("modify-host-incomplete", + "host-incomplete", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_MODIFY, + 0); + DO_TEST_INDEX("modify-host", + "host-updated", + "nat-network", + "nat-network-host-updated", + VIR_NETWORK_UPDATE_COMMAND_MODIFY, + 0); + DO_TEST_INDEX("delete-host-incomplete", + "host-incomplete", + "nat-network", + "nat-network-one-host", + VIR_NETWORK_UPDATE_COMMAND_DELETE, + 0); + DO_TEST_INDEX("delete-host-existing", + "host-existing", + "nat-network", + "nat-network-one-host", + VIR_NETWORK_UPDATE_COMMAND_DELETE, + 0); + DO_TEST_INDEX_FAIL("delete-host-missing", + "host-new", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_DELETE, + 0); + + + section = VIR_NETWORK_SECTION_IP_DHCP_RANGE; + DO_TEST_INDEX("add-dhcp-range", + "dhcp-range", + "dhcp6host-routed-network", + "dhcp6host-routed-network-range", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST, + 0); + DO_TEST_INDEX("append-dhcp-range", + "dhcp-range", + "dhcp6host-routed-network", + "dhcp6host-routed-network-another-range", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, + 1); + DO_TEST_INDEX("delete-dhcp-range", + "dhcp-range-existing", + "nat-network", + "nat-network-no-range", + VIR_NETWORK_UPDATE_COMMAND_DELETE, + 0); + DO_TEST_INDEX_FAIL("delete-dhcp-range", + "dhcp-range", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_DELETE, + 0); + + + section = VIR_NETWORK_SECTION_FORWARD_INTERFACE; + DO_TEST("insert-forward-interface", + "interface-eth47", + "nat-network-dns-srv-record", + "nat-network-forward-ifaces", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST); + DO_TEST("delete-forward-interface", + "interface-eth1", + "nat-network-dns-srv-record", + "nat-network-no-forward-ifaces", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST_FAIL("delete-forward-interface", + "interface-eth47", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + + + section = VIR_NETWORK_SECTION_PORTGROUP; + DO_TEST("insert-portgroup", + "portgroup-alison", + "openvswitch-net", + "openvswitch-net-more-portgroups", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST); + DO_TEST_FAIL("append-duplicate-portgroup", + "portgroup-alice-new", + "openvswitch-net", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); + DO_TEST("modify-portgroup", + "portgroup-alice-new", + "openvswitch-net", + "openvswitch-net-modified", + VIR_NETWORK_UPDATE_COMMAND_MODIFY); + DO_TEST_FAIL("modify-missing-portgroup", + "portgroup-alison", + "openvswitch-net", + VIR_NETWORK_UPDATE_COMMAND_MODIFY); + DO_TEST("delete-portgroup", + "portgroup-alice-new", + "openvswitch-net", + "openvswitch-net-without-alice", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST_FAIL("delete-missing-portgroup", + "portgroup-alice-new", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + + + section = VIR_NETWORK_SECTION_DNS_HOST; + DO_TEST_FAIL("insert-incomplete-host", + "dns-host-gateway-incomplete", + "nat-network-dns-hosts", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST); + DO_TEST("insert-host", + "dns-host-pudding", + "nat-network-dns-hosts", + "nat-network-dns-more-hosts", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST); + DO_TEST_FAIL("delete-missing-unparsable-dns-host", + "unparsable-dns-host", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST("delete-dns-host", + "dns-host-gateway-incomplete", + "nat-network-dns-hosts", + "nat-network-no-hosts", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + + + section = VIR_NETWORK_SECTION_DNS_TXT; + DO_TEST("insert-dns-txt-record", + "dns-txt-record-snowman", + "nat-network-dns-txt-record", + "nat-network-dns-txt-records", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST); + DO_TEST_FAIL("append-duplicate-dns-txt-record", + "dns-txt-record-example", + "nat-network-dns-txt-record", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); + DO_TEST("delete-dns-txt-record", + "dns-txt-record-example", + "nat-network-dns-txt-record", + "nat-network-dns-txt-none", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST_FAIL("delete-missing-dns-txt-record", + "dns-txt-record-snowman", + "nat-network-dns-txt-record", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + + + section = VIR_NETWORK_SECTION_DNS_SRV; + DO_TEST("insert-first-srv-record-service", + "srv-record", + "nat-network", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST); + DO_TEST("append-first-srv-record-service", + "srv-record", + "nat-network", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); + DO_TEST_FAIL("add-existing-dns-srv-record", + "srv-record", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); + DO_TEST("append-srv-record-service", + "srv-record-donkey", + "nat-network-dns-srv-record", + "nat-network-dns-srv-records", + VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); + + DO_TEST_FAIL("delete-missing-srv-record-service", + "srv-record-service", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST_FAIL("delete-srv-record-invalid", + "srv-record-invalid", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST("delete-srv-record-donkey", + "srv-record-donkey", + "nat-network-dns-srv-records", + "nat-network-dns-srv-record", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST_FAIL("delete-ambiguous-srv-record-service", + "srv-record-service", + "nat-network-dns-srv-records", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST("delete-srv-record-protocol", + "srv-record-protocol", + "nat-network-dns-srv-record", + "nat-network", + VIR_NETWORK_UPDATE_COMMAND_DELETE); + + + return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; +} + +VIRT_TEST_MAIN(mymain) diff --git a/tests/networkxml2xmlin/nat-network-dns-srv-records.xml b/tests/networkxml2xmlin/nat-network-dns-srv-records.xml new file mode 100644 index 0000000..8a757c3 --- /dev/null +++ b/tests/networkxml2xmlin/nat-network-dns-srv-records.xml @@ -0,0 +1,27 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> + <srv service='name' protocol='tcp' domain='donkey' target='.' port='404' priority='10' weight='10' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlout/nat-network-dns-srv-records.xml b/tests/networkxml2xmlout/nat-network-dns-srv-records.xml new file mode 100644 index 0000000..8a757c3 --- /dev/null +++ b/tests/networkxml2xmlout/nat-network-dns-srv-records.xml @@ -0,0 +1,27 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> + <srv service='name' protocol='tcp' domain='donkey' target='.' port='404' priority='10' weight='10' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdatein/dhcp-range-existing.xml b/tests/networkxml2xmlupdatein/dhcp-range-existing.xml new file mode 100644 index 0000000..bb3885d --- /dev/null +++ b/tests/networkxml2xmlupdatein/dhcp-range-existing.xml @@ -0,0 +1 @@ +<range start="192.168.122.2" end="192.168.122.254" /> diff --git a/tests/networkxml2xmlupdatein/dhcp-range.xml b/tests/networkxml2xmlupdatein/dhcp-range.xml new file mode 100644 index 0000000..ed775c8 --- /dev/null +++ b/tests/networkxml2xmlupdatein/dhcp-range.xml @@ -0,0 +1 @@ +<range start='10.0.0.10' end='10.0.0.100'/> diff --git a/tests/networkxml2xmlupdatein/dns-host-gateway-incomplete.xml b/tests/networkxml2xmlupdatein/dns-host-gateway-incomplete.xml new file mode 100644 index 0000000..6972d2e --- /dev/null +++ b/tests/networkxml2xmlupdatein/dns-host-gateway-incomplete.xml @@ -0,0 +1,3 @@ +<host> + <hostname>gateway</hostname> +</host> diff --git a/tests/networkxml2xmlupdatein/dns-host-pudding.xml b/tests/networkxml2xmlupdatein/dns-host-pudding.xml new file mode 100644 index 0000000..0878a4b --- /dev/null +++ b/tests/networkxml2xmlupdatein/dns-host-pudding.xml @@ -0,0 +1,3 @@ +<host ip='f0:0d::f0:0d'> + <hostname>pudding</hostname> +</host> diff --git a/tests/networkxml2xmlupdatein/dns-txt-record-example.xml b/tests/networkxml2xmlupdatein/dns-txt-record-example.xml new file mode 100644 index 0000000..9615918 --- /dev/null +++ b/tests/networkxml2xmlupdatein/dns-txt-record-example.xml @@ -0,0 +1 @@ +<txt name='example' value='example value' /> diff --git a/tests/networkxml2xmlupdatein/dns-txt-record-snowman.xml b/tests/networkxml2xmlupdatein/dns-txt-record-snowman.xml new file mode 100644 index 0000000..0c52ec5 --- /dev/null +++ b/tests/networkxml2xmlupdatein/dns-txt-record-snowman.xml @@ -0,0 +1 @@ +<txt name='snowman' value='water' /> diff --git a/tests/networkxml2xmlupdatein/host-existing.xml b/tests/networkxml2xmlupdatein/host-existing.xml new file mode 100644 index 0000000..ee69aeb --- /dev/null +++ b/tests/networkxml2xmlupdatein/host-existing.xml @@ -0,0 +1 @@ +<host mac="00:16:3e:77:e2:ed" name="a.example.com" ip="192.168.122.10" /> diff --git a/tests/networkxml2xmlupdatein/host-incomplete.xml b/tests/networkxml2xmlupdatein/host-incomplete.xml new file mode 100644 index 0000000..d882e45 --- /dev/null +++ b/tests/networkxml2xmlupdatein/host-incomplete.xml @@ -0,0 +1 @@ +<host mac="00:16:3e:77:e2:ed"/> diff --git a/tests/networkxml2xmlupdatein/host-new-incomplete.xml b/tests/networkxml2xmlupdatein/host-new-incomplete.xml new file mode 100644 index 0000000..42d5188 --- /dev/null +++ b/tests/networkxml2xmlupdatein/host-new-incomplete.xml @@ -0,0 +1 @@ +<host name='tea'/> diff --git a/tests/networkxml2xmlupdatein/host-new.xml b/tests/networkxml2xmlupdatein/host-new.xml new file mode 100644 index 0000000..e84a866 --- /dev/null +++ b/tests/networkxml2xmlupdatein/host-new.xml @@ -0,0 +1 @@ +<host mac="00:16:3e:77:f0:0d" name="m.example.com" ip="192.168.122.12" /> diff --git a/tests/networkxml2xmlupdatein/host-updated.xml b/tests/networkxml2xmlupdatein/host-updated.xml new file mode 100644 index 0000000..cca9ebc --- /dev/null +++ b/tests/networkxml2xmlupdatein/host-updated.xml @@ -0,0 +1 @@ +<host mac="00:16:3e:77:e2:ed" name="a.example.com" ip="192.168.122.47" /> diff --git a/tests/networkxml2xmlupdatein/interface-eth1.xml b/tests/networkxml2xmlupdatein/interface-eth1.xml new file mode 100644 index 0000000..1663a66 --- /dev/null +++ b/tests/networkxml2xmlupdatein/interface-eth1.xml @@ -0,0 +1 @@ +<interface dev='eth1'/> diff --git a/tests/networkxml2xmlupdatein/interface-eth47.xml b/tests/networkxml2xmlupdatein/interface-eth47.xml new file mode 100644 index 0000000..5c244ff --- /dev/null +++ b/tests/networkxml2xmlupdatein/interface-eth47.xml @@ -0,0 +1 @@ +<interface dev='eth47'/> diff --git a/tests/networkxml2xmlupdatein/portgroup-alice-new.xml b/tests/networkxml2xmlupdatein/portgroup-alice-new.xml new file mode 100644 index 0000000..46656c2 --- /dev/null +++ b/tests/networkxml2xmlupdatein/portgroup-alice-new.xml @@ -0,0 +1,10 @@ +<portgroup name='alice'> + <vlan trunk='yes'> + <tag id='888'/> + <tag id='808'/> + <tag id='909'/> + </vlan> + <virtualport> + <parameters profileid='alice-profile'/> + </virtualport> +</portgroup> diff --git a/tests/networkxml2xmlupdatein/portgroup-alison.xml b/tests/networkxml2xmlupdatein/portgroup-alison.xml new file mode 100644 index 0000000..ca6b7c1 --- /dev/null +++ b/tests/networkxml2xmlupdatein/portgroup-alison.xml @@ -0,0 +1,11 @@ +<portgroup name='alison'> + <vlan trunk='yes'> + <tag id='4'/> + <tag id='8'/> + <tag id='13'/> + <tag id='1990'/> + </vlan> + <virtualport> + <parameters profileid='alison-profile'/> + </virtualport> +</portgroup> diff --git a/tests/networkxml2xmlupdatein/srv-record-donkey.xml b/tests/networkxml2xmlupdatein/srv-record-donkey.xml new file mode 100644 index 0000000..1758411 --- /dev/null +++ b/tests/networkxml2xmlupdatein/srv-record-donkey.xml @@ -0,0 +1 @@ +<srv service='name' protocol='tcp' domain='donkey' target='.' port='404' priority='10' weight='10' /> diff --git a/tests/networkxml2xmlupdatein/srv-record-invalid.xml b/tests/networkxml2xmlupdatein/srv-record-invalid.xml new file mode 100644 index 0000000..6a6811d --- /dev/null +++ b/tests/networkxml2xmlupdatein/srv-record-invalid.xml @@ -0,0 +1 @@ +<srv protocol='pudding'/> diff --git a/tests/networkxml2xmlupdatein/srv-record-protocol.xml b/tests/networkxml2xmlupdatein/srv-record-protocol.xml new file mode 100644 index 0000000..87478d0 --- /dev/null +++ b/tests/networkxml2xmlupdatein/srv-record-protocol.xml @@ -0,0 +1 @@ +<srv protocol='tcp'/> diff --git a/tests/networkxml2xmlupdatein/srv-record-service.xml b/tests/networkxml2xmlupdatein/srv-record-service.xml new file mode 100644 index 0000000..5c8c9cd --- /dev/null +++ b/tests/networkxml2xmlupdatein/srv-record-service.xml @@ -0,0 +1 @@ +<srv service='name'/> diff --git a/tests/networkxml2xmlupdatein/srv-record.xml b/tests/networkxml2xmlupdatein/srv-record.xml new file mode 100644 index 0000000..c0ca1fb --- /dev/null +++ b/tests/networkxml2xmlupdatein/srv-record.xml @@ -0,0 +1 @@ +<srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> diff --git a/tests/networkxml2xmlupdatein/unparsable-dns-host.xml b/tests/networkxml2xmlupdatein/unparsable-dns-host.xml new file mode 100644 index 0000000..392c67a --- /dev/null +++ b/tests/networkxml2xmlupdatein/unparsable-dns-host.xml @@ -0,0 +1 @@ +<host protocol='name'/> diff --git a/tests/networkxml2xmlupdateout/dhcp6host-routed-network-another-range.xml b/tests/networkxml2xmlupdateout/dhcp6host-routed-network-another-range.xml new file mode 100644 index 0000000..9d8122d --- /dev/null +++ b/tests/networkxml2xmlupdateout/dhcp6host-routed-network-another-range.xml @@ -0,0 +1,27 @@ +<network> + <name>local</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='route'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr1' stp='on' delay='0' /> + <mac address='12:34:56:78:9a:bc'/> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='10.0.0.10' end='10.0.0.100' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + <dhcp> + <host id='0:4:7e:7d:f0:7d:a8:bc:c5:d2:13:32:11:ed:16:ea:84:63' ip='2001:db8:ac10:fd01::1:20' /> + <host name='paul' ip='2001:db8:ac10:fd01::1:21' /> + <host id='0:3:0:1:0:16:3e:11:22:33' name='peter.xyz' ip='2001:db8:ac10:fd01::1:22' /> + <host id='0:3:0:1:0:16:3e:44:55:33' ip='2001:db8:ac10:fd01::1:23' /> + <host id='0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66' name='badbob' ip='2001:db8:ac10:fd01::1:24' /> + </dhcp> + </ip> + <route address='192.168.222.0' netmask='255.255.255.0' gateway='192.168.122.10'/> + <route family='ipv6' address='2001:db8:ac10:fc00::' prefix='64' gateway='2001:db8:ac10:fd01::1:24'/> +</network> diff --git a/tests/networkxml2xmlupdateout/dhcp6host-routed-network-range.xml b/tests/networkxml2xmlupdateout/dhcp6host-routed-network-range.xml new file mode 100644 index 0000000..9d8122d --- /dev/null +++ b/tests/networkxml2xmlupdateout/dhcp6host-routed-network-range.xml @@ -0,0 +1,27 @@ +<network> + <name>local</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='route'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr1' stp='on' delay='0' /> + <mac address='12:34:56:78:9a:bc'/> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='10.0.0.10' end='10.0.0.100' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + <dhcp> + <host id='0:4:7e:7d:f0:7d:a8:bc:c5:d2:13:32:11:ed:16:ea:84:63' ip='2001:db8:ac10:fd01::1:20' /> + <host name='paul' ip='2001:db8:ac10:fd01::1:21' /> + <host id='0:3:0:1:0:16:3e:11:22:33' name='peter.xyz' ip='2001:db8:ac10:fd01::1:22' /> + <host id='0:3:0:1:0:16:3e:44:55:33' ip='2001:db8:ac10:fd01::1:23' /> + <host id='0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66' name='badbob' ip='2001:db8:ac10:fd01::1:24' /> + </dhcp> + </ip> + <route address='192.168.222.0' netmask='255.255.255.0' gateway='192.168.122.10'/> + <route family='ipv6' address='2001:db8:ac10:fc00::' prefix='64' gateway='2001:db8:ac10:fd01::1:24'/> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-dns-more-hosts.xml b/tests/networkxml2xmlupdateout/nat-network-dns-more-hosts.xml new file mode 100644 index 0000000..ae29646 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-dns-more-hosts.xml @@ -0,0 +1,19 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9c</uuid> + <forward dev='eth0' mode='nat'> + <interface dev='eth0'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <host ip='f0:d::f0:d'> + <hostname>pudding</hostname> + </host> + <host ip='192.168.122.1'> + <hostname>host</hostname> + <hostname>gateway</hostname> + </host> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-dns-srv-record.xml b/tests/networkxml2xmlupdateout/nat-network-dns-srv-record.xml new file mode 100644 index 0000000..4be85b5 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-dns-srv-record.xml @@ -0,0 +1,26 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-dns-srv-records.xml b/tests/networkxml2xmlupdateout/nat-network-dns-srv-records.xml new file mode 100644 index 0000000..8a757c3 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-dns-srv-records.xml @@ -0,0 +1,27 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> + <srv service='name' protocol='tcp' domain='donkey' target='.' port='404' priority='10' weight='10' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-dns-txt-none.xml b/tests/networkxml2xmlupdateout/nat-network-dns-txt-none.xml new file mode 100644 index 0000000..02d6849 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-dns-txt-none.xml @@ -0,0 +1,23 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-dns-txt-records.xml b/tests/networkxml2xmlupdateout/nat-network-dns-txt-records.xml new file mode 100644 index 0000000..01b1510 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-dns-txt-records.xml @@ -0,0 +1,27 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <txt name='snowman' value='water' /> + <txt name='example' value='example value' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-forward-ifaces.xml b/tests/networkxml2xmlupdateout/nat-network-forward-ifaces.xml new file mode 100644 index 0000000..7624135 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-forward-ifaces.xml @@ -0,0 +1,27 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth47' mode='nat'> + <interface dev='eth47'/> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-host-updated.xml b/tests/networkxml2xmlupdateout/nat-network-host-updated.xml new file mode 100644 index 0000000..bf498ac --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-host-updated.xml @@ -0,0 +1,23 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.47' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-hosts.xml b/tests/networkxml2xmlupdateout/nat-network-hosts.xml new file mode 100644 index 0000000..e9bc9ec --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-hosts.xml @@ -0,0 +1,24 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + <host mac='00:16:3e:77:f0:0d' name='m.example.com' ip='192.168.122.12' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-no-forward-ifaces.xml b/tests/networkxml2xmlupdateout/nat-network-no-forward-ifaces.xml new file mode 100644 index 0000000..07b4e88 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-no-forward-ifaces.xml @@ -0,0 +1,24 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward mode='nat'/> + <bridge name='virbr0' stp='on' delay='0' /> + <dns> + <srv service='name' protocol='tcp' domain='test-domain-name' target='.' port='1024' priority='10' weight='10' /> + </dns> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-no-hosts.xml b/tests/networkxml2xmlupdateout/nat-network-no-hosts.xml new file mode 100644 index 0000000..e9d6121 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-no-hosts.xml @@ -0,0 +1,10 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9c</uuid> + <forward dev='eth0' mode='nat'> + <interface dev='eth0'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-no-range.xml b/tests/networkxml2xmlupdateout/nat-network-no-range.xml new file mode 100644 index 0000000..bfaf2dd --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-no-range.xml @@ -0,0 +1,22 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network-one-host.xml b/tests/networkxml2xmlupdateout/nat-network-one-host.xml new file mode 100644 index 0000000..d5cfc5b --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-one-host.xml @@ -0,0 +1,22 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/nat-network.xml b/tests/networkxml2xmlupdateout/nat-network.xml new file mode 100644 index 0000000..02d6849 --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network.xml @@ -0,0 +1,23 @@ +<network> + <name>default</name> + <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid> + <forward dev='eth1' mode='nat'> + <interface dev='eth1'/> + </forward> + <bridge name='virbr0' stp='on' delay='0' /> + <ip address='192.168.122.1' netmask='255.255.255.0'> + <dhcp> + <range start='192.168.122.2' end='192.168.122.254' /> + <host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10' /> + <host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11' /> + </dhcp> + </ip> + <ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fe01::1' prefix='64'> + </ip> + <ip family='ipv6' address='2001:db8:ac10:fd01::1' prefix='64'> + </ip> + <ip family='ipv4' address='10.24.10.1'> + </ip> +</network> diff --git a/tests/networkxml2xmlupdateout/openvswitch-net-modified.xml b/tests/networkxml2xmlupdateout/openvswitch-net-modified.xml new file mode 100644 index 0000000..cc0c344 --- /dev/null +++ b/tests/networkxml2xmlupdateout/openvswitch-net-modified.xml @@ -0,0 +1,33 @@ +<network> + <name>openvswitch-net</name> + <uuid>81ff0d90-c92e-6742-64da-4a736edb9a8b</uuid> + <forward mode='bridge'/> + <virtualport type='openvswitch'/> + <portgroup name='bob' default='yes'> + <vlan trunk='yes'> + <tag id='666'/> + </vlan> + <virtualport> + <parameters profileid='bob-profile'/> + </virtualport> + </portgroup> + <portgroup name='alice'> + <vlan trunk='yes'> + <tag id='888'/> + <tag id='808'/> + <tag id='909'/> + </vlan> + <virtualport> + <parameters profileid='alice-profile'/> + </virtualport> + </portgroup> + <portgroup name='native'> + <vlan trunk='yes'> + <tag id='123' nativeMode='tagged'/> + <tag id='444'/> + </vlan> + <virtualport> + <parameters profileid='native-profile'/> + </virtualport> + </portgroup> +</network> diff --git a/tests/networkxml2xmlupdateout/openvswitch-net-more-portgroups.xml b/tests/networkxml2xmlupdateout/openvswitch-net-more-portgroups.xml new file mode 100644 index 0000000..7c19ad9 --- /dev/null +++ b/tests/networkxml2xmlupdateout/openvswitch-net-more-portgroups.xml @@ -0,0 +1,44 @@ +<network> + <name>openvswitch-net</name> + <uuid>81ff0d90-c92e-6742-64da-4a736edb9a8b</uuid> + <forward mode='bridge'/> + <virtualport type='openvswitch'/> + <portgroup name='alison'> + <vlan trunk='yes'> + <tag id='4'/> + <tag id='8'/> + <tag id='13'/> + <tag id='1990'/> + </vlan> + <virtualport> + <parameters profileid='alison-profile'/> + </virtualport> + </portgroup> + <portgroup name='bob' default='yes'> + <vlan trunk='yes'> + <tag id='666'/> + </vlan> + <virtualport> + <parameters profileid='bob-profile'/> + </virtualport> + </portgroup> + <portgroup name='alice'> + <vlan trunk='yes'> + <tag id='777'/> + <tag id='888'/> + <tag id='999'/> + </vlan> + <virtualport> + <parameters profileid='alice-profile'/> + </virtualport> + </portgroup> + <portgroup name='native'> + <vlan trunk='yes'> + <tag id='123' nativeMode='tagged'/> + <tag id='444'/> + </vlan> + <virtualport> + <parameters profileid='native-profile'/> + </virtualport> + </portgroup> +</network> diff --git a/tests/networkxml2xmlupdateout/openvswitch-net-without-alice.xml b/tests/networkxml2xmlupdateout/openvswitch-net-without-alice.xml new file mode 100644 index 0000000..4104424 --- /dev/null +++ b/tests/networkxml2xmlupdateout/openvswitch-net-without-alice.xml @@ -0,0 +1,23 @@ +<network> + <name>openvswitch-net</name> + <uuid>81ff0d90-c92e-6742-64da-4a736edb9a8b</uuid> + <forward mode='bridge'/> + <virtualport type='openvswitch'/> + <portgroup name='bob' default='yes'> + <vlan trunk='yes'> + <tag id='666'/> + </vlan> + <virtualport> + <parameters profileid='bob-profile'/> + </virtualport> + </portgroup> + <portgroup name='native'> + <vlan trunk='yes'> + <tag id='123' nativeMode='tagged'/> + <tag id='444'/> + </vlan> + <virtualport> + <parameters profileid='native-profile'/> + </virtualport> + </portgroup> +</network> -- 1.8.1.5
participants (4)
-
Daniel P. Berrange
-
Jiri Denemark
-
Ján Tomko
-
Laine Stump