From 861779f448d096151aad4e3df306b2a43c17e3e8 Mon Sep 17 00:00:00 2001 From: Madhu Venugopal Date: Wed, 13 Aug 2014 13:40:01 -0700 Subject: [PATCH] Added Nsi Utility method & resolved a multi-augmentation extension issue If a MatchBuilder carries more than 1 extension, the last extension overrides all others. Resolved the issue by creating an extensionList as and when the MatchBuilder is populated. Change-Id: I0ef4260fd1635bd57f09b2c5e72aee970ce4e829 Signed-off-by: Madhu Venugopal --- .../mdsalopenflow13/OF13MdSalMatch.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/mdsalopenflow13/OF13MdSalMatch.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/mdsalopenflow13/OF13MdSalMatch.java index 3e8eb87f6..cf6095259 100644 --- a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/mdsalopenflow13/OF13MdSalMatch.java +++ b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/mdsalopenflow13/OF13MdSalMatch.java @@ -11,6 +11,7 @@ package org.opendaylight.ovsdb.openstack.netvirt.providers.mdsalopenflow13; import java.math.BigInteger; import java.util.ArrayList; +import java.util.List; import org.opendaylight.ovsdb.openstack.netvirt.providers.OF13Provider; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; @@ -62,10 +63,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.tun.id.grouping.NxmNxTunIdBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxmNxNspKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.nxm.nx.nsp.grouping.NxmNxNspBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxmNxNsiKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.nxm.nx.nsi.grouping.NxmNxNsiBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; public class OF13MdSalMatch extends OF13Provider { private static final Logger logger = LoggerFactory.getLogger(OF13MdSalMatch.class); @@ -425,16 +429,39 @@ public class OF13MdSalMatch extends OF13Provider { .setValue(nsp) .build()) .build(); + addExtension(match, NxmNxNspKey.class, am); + } - GeneralAugMatchNodesNodeTableFlow m = - new GeneralAugMatchNodesNodeTableFlowBuilder() - .setExtensionList(ImmutableList.of(new ExtensionListBuilder() - .setExtensionKey(NxmNxNspKey.class) - .setExtension(new ExtensionBuilder() - .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxAugMatchNodesNodeTableFlow.class, am) + public static void addNxNsi(MatchBuilder match, short nsi) { + org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxAugMatchNodesNodeTableFlow am = + new org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxAugMatchNodesNodeTableFlowBuilder() + .setNxmNxNsi(new NxmNxNsiBuilder() + .setNsi(nsi) .build()) - .build())) .build(); + addExtension(match, NxmNxNsiKey.class, am); + } + + private static void addExtension (MatchBuilder match, Class extensionKey, org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxAugMatchNodesNodeTableFlow am) { + GeneralAugMatchNodesNodeTableFlow existingAugmentations = match.getAugmentation(GeneralAugMatchNodesNodeTableFlow.class); + List extensions = null; + if (existingAugmentations != null ) { + extensions = existingAugmentations.getExtensionList(); + } + if (extensions == null) { + extensions = Lists.newArrayList(); + } + + extensions.add(new ExtensionListBuilder() + .setExtensionKey(extensionKey) + .setExtension(new ExtensionBuilder() + .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.match.rev140714.NxAugMatchNodesNodeTableFlow.class, am) + .build()) + .build()); + + GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder() + .setExtensionList(extensions) + .build(); match.addAugmentation(GeneralAugMatchNodesNodeTableFlow.class, m); } -- 2.36.6