BUG-611 : clusterId and originatorId moved to groupings 88/8688/2
authorDana Kutenicsova <dkutenic@cisco.com>
Fri, 4 Jul 2014 16:45:40 +0000 (18:45 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Fri, 4 Jul 2014 17:11:06 +0000 (19:11 +0200)
- to register their serializers in order to Activator

Change-Id: I87c32eec43fb2e983eb3c33394a4358d6ae7d295
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
bgp/parser-api/src/main/yang/bgp-message.yang
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/BGPActivator.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/BGPUpdateMessageParser.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/ClusterIdAttributeParser.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/OriginatorIdAttributeParser.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPUpdateAttributesSerializationTest.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPObjectComparator.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BestPathSelectionTest.java

index 982a35d7ed38fd052f37de30fa69c996a45c0bb4..7d064a8f231795d609e38ba60602362d4829964b 100644 (file)
@@ -37,6 +37,18 @@ module bgp-message {
         }
     }
 
+    grouping originator-id {
+        leaf originator {
+            type inet:ipv4-address;
+        }
+    }
+
+    grouping cluster-id {
+        leaf-list cluster {
+            type bgp-t:cluster-identifier;
+        }
+    }
+
     notification open {
         description "Open Message";
         reference "http://tools.ietf.org/html/rfc4271#section-4.2";
@@ -112,11 +124,11 @@ module bgp-message {
         list extended-communities {
             uses bgp-t:extended-community;
         }
-        leaf originator-id {
-            type inet:ipv4-address;
+        container originator-id {
+            uses originator-id;
         }
-        leaf-list cluster-id {
-            type bgp-t:cluster-identifier;
+        container cluster-id {
+            uses cluster-id;
         }
     }
 
index 3c952884060a34fe2a4239cfe8adef720f0d79a4..82d8c8b3a1352224bdb7c04e850580d5306f218d 100644 (file)
@@ -54,11 +54,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Aggregator;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AtomicAggregate;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Communities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPref;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDisc;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Origin;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginatorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.WithdrawnRoutes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.GracefulRestartCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.MultiprotocolCase;
@@ -127,9 +129,11 @@ public final class BGPActivator extends AbstractBGPExtensionProviderActivator {
         regs.add(context.registerAttributeParser(CommunitiesAttributeParser.TYPE, communitiesAttributeParser));
 
         final OriginatorIdAttributeParser originatorIdAttributeParser = new OriginatorIdAttributeParser();
+        regs.add(context.registerAttributeSerializer(OriginatorId.class, originatorIdAttributeParser));
         regs.add(context.registerAttributeParser(OriginatorIdAttributeParser.TYPE, originatorIdAttributeParser));
 
         final ClusterIdAttributeParser clusterIdAttributeParser = new ClusterIdAttributeParser();
+        regs.add(context.registerAttributeSerializer(ClusterId.class, clusterIdAttributeParser));
         regs.add(context.registerAttributeParser(ClusterIdAttributeParser.TYPE, clusterIdAttributeParser));
 
         MPReachAttributeParser mpReachAttributeParser = new MPReachAttributeParser(nlriReg);
index 13d8037934046ac8d08f01065a3312401e13c950..b25a2bb510bc0a8994a5861c1659fd4eab2a197c 100644 (file)
@@ -9,16 +9,17 @@ package org.opendaylight.protocol.bgp.parser.impl.message;
 
 
 import com.google.common.base.Preconditions;
+
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
 import io.netty.buffer.Unpooled;
+
 import java.util.Arrays;
 import java.util.List;
+
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPError;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
-import org.opendaylight.protocol.bgp.parser.impl.message.update.ClusterIdAttributeParser;
-import org.opendaylight.protocol.bgp.parser.impl.message.update.OriginatorIdAttributeParser;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
 import org.opendaylight.protocol.bgp.parser.spi.MessageSerializer;
@@ -130,12 +131,6 @@ public class BGPUpdateMessageParser implements MessageParser, MessageSerializer
         if (update.getPathAttributes() != null) {
             ByteBuf pathAttributesBuf = Unpooled.buffer();
             this.reg.serializeAttribute(update.getPathAttributes(), pathAttributesBuf);
-            ClusterIdAttributeParser clusterIdAttributeParser = new ClusterIdAttributeParser();
-            clusterIdAttributeParser.serializeAttribute(update.getPathAttributes(), pathAttributesBuf);
-
-            OriginatorIdAttributeParser originatorIdAttributeParser = new OriginatorIdAttributeParser();
-            originatorIdAttributeParser.serializeAttribute(update.getPathAttributes(), pathAttributesBuf);
-
             messageBody.writeShort(pathAttributesBuf.writerIndex());
             messageBody.writeBytes(pathAttributesBuf);
         } else {
index 3ad14c97afbc122e96febdd392c137997954a8bf..6faf68d97d64e31d41c06876e04696830ae66456 100644 (file)
@@ -19,6 +19,8 @@ import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeUtil;
 import org.opendaylight.protocol.util.Ipv4Util;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterIdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.ClusterIdentifier;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -34,17 +36,17 @@ public final class ClusterIdAttributeParser implements AttributeParser, Attribut
         while (buffer.isReadable()) {
             list.add(new ClusterIdentifier(Ipv4Util.addressForByteBuf(buffer)));
         }
-        builder.setClusterId(list);
+        builder.setClusterId(new ClusterIdBuilder().setCluster(list).build());
     }
 
     @Override
     public void serializeAttribute(final DataObject attribute, final ByteBuf byteAggregator) {
-        final PathAttributes pathAttributes = (PathAttributes) attribute;
-        if (pathAttributes.getClusterId() == null) {
+        final ClusterId cid = ((PathAttributes) attribute).getClusterId();
+        if (cid == null) {
             return;
         }
         final ByteBuf clusterIdBuffer = Unpooled.buffer();
-        for (final ClusterIdentifier clusterIdentifier : pathAttributes.getClusterId()) {
+        for (final ClusterIdentifier clusterIdentifier : cid.getCluster()) {
             clusterIdBuffer.writeBytes(Ipv4Util.bytesForAddress(clusterIdentifier));
         }
         AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, TYPE, clusterIdBuffer, byteAggregator);
index d977a4e9095e69f6537a039ae273d3c7cb49fe3f..3520d66c5fe838dbeaf15e578a5f7bae56eabfb2 100644 (file)
@@ -16,12 +16,12 @@ import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeUtil;
 import org.opendaylight.protocol.util.Ipv4Util;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.OriginatorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginatorIdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
-
 public final class OriginatorIdAttributeParser implements AttributeParser,AttributeSerializer {
 
     public static final int TYPE = 9;
@@ -29,17 +29,17 @@ public final class OriginatorIdAttributeParser implements AttributeParser,Attrib
     @Override
     public void parseAttribute(final ByteBuf buffer, final PathAttributesBuilder builder) {
         Preconditions.checkArgument(buffer.readableBytes() == Ipv4Util.IP4_LENGTH, "Length of byte array for ORIGINATOR_ID should be %s, but is %s", Ipv4Util.IP4_LENGTH, buffer.readableBytes());
-        builder.setOriginatorId(Ipv4Util.addressForByteBuf(buffer));
+        builder.setOriginatorId(new OriginatorIdBuilder().setOriginator(Ipv4Util.addressForByteBuf(buffer)).build());
     }
 
     @Override
     public void serializeAttribute(final DataObject attribute, final ByteBuf byteAggregator) {
-        final Ipv4Address originator = ((PathAttributes) attribute).getOriginatorId();
+        final OriginatorId originator = ((PathAttributes) attribute).getOriginatorId();
         if (originator == null) {
             return;
         }
         final ByteBuf originatorIdBuf = Unpooled.buffer();
-        originatorIdBuf.writeBytes(Ipv4Util.bytesForAddress(originator));
+        originatorIdBuf.writeBytes(Ipv4Util.bytesForAddress(originator.getOriginator()));
         AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, TYPE, originatorIdBuf, byteAggregator);
     }
 }
index bc86b0b6f6154cbfb496eea1cff5ea1e722481d8..1651d7f6cb73376709b28498ad532e37512ec03c 100644 (file)
@@ -72,12 +72,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AggregatorBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPathBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AtomicAggregateBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterIdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Communities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunitiesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPrefBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDiscBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginatorIdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.as.path.Segments;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.as.path.SegmentsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.Nlri;
@@ -369,10 +371,10 @@ public class BGPParserTest {
         paBuilder.setMultiExitDisc(new MultiExitDiscBuilder().setMed((long) 0).build());
         assertEquals(paBuilder.getMultiExitDisc(), attrs.getMultiExitDisc());
 
-        paBuilder.setOriginatorId(new Ipv4Address("127.0.0.1"));
+        paBuilder.setOriginatorId(new OriginatorIdBuilder().setOriginator(new Ipv4Address("127.0.0.1")).build());
         assertEquals(paBuilder.getOriginatorId(), attrs.getOriginatorId());
 
-        paBuilder.setClusterId(clusters);
+        paBuilder.setClusterId(new ClusterIdBuilder().setCluster(clusters).build());
         assertEquals(paBuilder.getClusterId(), attrs.getClusterId());
 
         final MpReachNlriBuilder mpBuilder = new MpReachNlriBuilder();
index 26518370ff3254f4407ebe1eef88a8a0888cf742..b3c9c46796439ac506c1d549c29d897c0776b5c0 100644 (file)
@@ -104,7 +104,7 @@ public class BGPUpdateAttributesSerializationTest {
             assertEquals(left.getAtomicAggregate() != null, right.getAtomicAggregate() != null);
         }
         if (left.getClusterId() != null) {
-            assertEqualsClusterId(left.getClusterId(), right.getClusterId());
+            assertEqualsClusterId(left.getClusterId().getCluster(), right.getClusterId().getCluster());
         }
         if (left.getLocalPref() != null) {
             assertEquals(left.getLocalPref().getPref(), right.getLocalPref().getPref());
@@ -116,7 +116,7 @@ public class BGPUpdateAttributesSerializationTest {
             assertEquals(left.getOrigin().getValue().getIntValue(), right.getOrigin().getValue().getIntValue());
         }
         if (left.getOriginatorId() != null) {
-            assertEquals(left.getOriginatorId().getValue(), right.getOriginatorId().getValue());
+            assertEquals(left.getOriginatorId().getOriginator().getValue(), right.getOriginatorId().getOriginator().getValue());
         }
         if (left.getAugmentation(PathAttributes1.class) != null) {
             assertNotNull(right.getAugmentation(PathAttributes1.class));
index 8df356f44734ecd3d755218564800135a4efc277..dff584d5bf432101a62a4a9810d61401f771b855 100644 (file)
@@ -120,10 +120,10 @@ final class BGPObjectComparator implements Comparator<PathAttributes> {
         byte[] oid1 = this.localId;
         byte[] oid2 = this.remoteId;
         if (o1.getOriginatorId() != null) {
-            oid1 = InetAddresses.forString(o1.getOriginatorId().getValue()).getAddress();
+            oid1 = InetAddresses.forString(o1.getOriginatorId().getOriginator().getValue()).getAddress();
         }
         if (o2.getOriginatorId() != null) {
-            oid2 = InetAddresses.forString(o2.getOriginatorId().getValue()).getAddress();
+            oid2 = InetAddresses.forString(o2.getOriginatorId().getOriginator().getValue()).getAddress();
         }
         if (!Arrays.equals(oid1, oid2)) {
             return compareByteArrays(oid1, oid2);
@@ -132,10 +132,10 @@ final class BGPObjectComparator implements Comparator<PathAttributes> {
         int cluster1 = 0;
         int cluster2 = 0;
         if (o1.getClusterId() != null) {
-            cluster1 = o1.getClusterId().size();
+            cluster1 = o1.getClusterId().getCluster().size();
         }
         if (o2.getClusterId() != null) {
-            cluster2 = o2.getClusterId().size();
+            cluster2 = o2.getClusterId().getCluster().size();
         }
         if (cluster1 != cluster2) {
             return ((Integer) cluster1).compareTo(cluster2);
index 63cc2dcae64867ec6fac7ad4c8d859859262daed..4620f09e51cd0acd91ff9b0ebf24a7daf5283f37 100644 (file)
@@ -20,6 +20,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterIdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPrefBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDiscBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginBuilder;
@@ -84,9 +85,9 @@ public class BestPathSelectionTest {
         builder.setMultiExitDisc(new MultiExitDiscBuilder().setMed(12L).build());
         this.attr5 = builder.build();
         builder.setAsPath(new AsPathBuilder().setSegments(new ArrayList<Segments>()).build());
-        builder.setClusterId(new ArrayList<ClusterIdentifier>());
+        builder.setClusterId(new ClusterIdBuilder().setCluster(new ArrayList<ClusterIdentifier>()).build());
         this.attr6 = builder.build();
-        builder.setClusterId(clusters);
+        builder.setClusterId(new ClusterIdBuilder().setCluster(clusters).build());
         this.attr7 = builder.build();
     }