BUG-2383 : finish up LinkstateRIBSupport 66/18166/2
authorDana Kutenicsova <dkutenic@cisco.com>
Sat, 11 Apr 2015 16:26:52 +0000 (18:26 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Mon, 13 Apr 2015 13:44:48 +0000 (15:44 +0200)
Change-Id: I6a787866e99238412fd83b6267f7c915dbbb5680
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
bgp/linkstate/pom.xml
bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/LinkstateRIBSupport.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserToSalTest.java

index 34270a553c23c6f055f1dccf60a7a01761c0179c..cafd81c7bafb3a7108025089f42c232ec6be15be 100644 (file)
@@ -90,7 +90,6 @@
             <groupId>org.opendaylight.yangtools.model</groupId>
             <artifactId>ietf-inet-types</artifactId>
         </dependency>
-
          <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>config-api</artifactId>
         <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>sal-common-api</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.controller</groupId>
index ecd440760f3958b0a648757e66caf9ebd3d7535d..ca8f5533d0ac5dc33ff02a13062339f18ed50fcb 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableSet;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
 import org.opendaylight.protocol.bgp.linkstate.nlri.LinkstateNlriParser;
 import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupport;
@@ -32,10 +33,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,13 +48,29 @@ final class LinkstateRIBSupport extends AbstractRIBSupport {
         abstract void apply(DOMDataWriteTransaction tx, YangInstanceIdentifier base, NodeIdentifierWithPredicates routeKey, DataContainerNode<?> route, final ContainerNode attributes);
     }
 
-    private final class PutRoute extends ApplyRoute {
+    private static final class DeleteRoute extends ApplyRoute {
+        @Override
+        void apply(final DOMDataWriteTransaction tx, final YangInstanceIdentifier base, final NodeIdentifierWithPredicates routeKey, final DataContainerNode<?> route, final ContainerNode attributes) {
+            tx.delete(LogicalDatastoreType.OPERATIONAL, base.node(routeKey));
+        }
+    }
 
+    private final class PutRoute extends ApplyRoute {
         @Override
         void apply(final DOMDataWriteTransaction tx, final YangInstanceIdentifier base, final NodeIdentifierWithPredicates routeKey,
             final DataContainerNode<?> route, final ContainerNode attributes) {
-            // TODO Auto-generated method stub
+            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> b = ImmutableNodes.mapEntryBuilder();
+            b.withNodeIdentifier(routeKey);
 
+            // FIXME: All route children, there should be a utility somewhere to do this
+            for (final DataContainerChild<? extends PathArgument, ?> child : route.getValue()) {
+                b.withChild(child);
+            }
+            // Add attributes
+            final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> cb = Builders.containerBuilder(attributes);
+            cb.withNodeIdentifier(routeAttributesIdentifier());
+            b.withChild(cb.build());
+            tx.put(LogicalDatastoreType.OPERATIONAL, base.node(routeKey), b.build());
         }
     }
 
@@ -58,6 +78,8 @@ final class LinkstateRIBSupport extends AbstractRIBSupport {
 
     private static final QName ROUTE_KEY = QName.cachedReference(QName.create(LinkstateRoute.QNAME, "route-key"));
     private static final LinkstateRIBSupport SINGLETON = new LinkstateRIBSupport();
+    private static final ApplyRoute DELETE_ROUTE = new DeleteRoute();
+
     private final ChoiceNode emptyRoutes = Builders.choiceBuilder()
         .withNodeIdentifier(new NodeIdentifier(Routes.QNAME))
         .addChild(Builders.containerBuilder()
@@ -66,7 +88,6 @@ final class LinkstateRIBSupport extends AbstractRIBSupport {
     private final NodeIdentifier destination = new NodeIdentifier(DestinationLinkstate.QNAME);
     private final NodeIdentifier route = new NodeIdentifier(LinkstateRoute.QNAME);
     private final NodeIdentifier nlriRoutesList = new NodeIdentifier(CLinkstateDestination.QNAME);
-    private final NodeIdentifier routeKeyLeaf = new NodeIdentifier(ROUTE_KEY);
     private final ApplyRoute putRoute = new PutRoute();
 
     private LinkstateRIBSupport() {
@@ -95,8 +116,7 @@ final class LinkstateRIBSupport extends AbstractRIBSupport {
     @Override
     protected void deleteDestinationRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tablePath,
         final ContainerNode destination) {
-        // TODO Auto-generated method stub
-
+        processDestination(tx, tablePath, destination, null, DELETE_ROUTE);
     }
 
     private void processDestination(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tablePath,
index 81edb501f0683c47cbecfa092d4df19073314bf3..9dff00b997a989111f17728f56525a65690e45b5 100644 (file)
@@ -134,7 +134,6 @@ public class ParserToSalTest extends AbstractDataBrokerTest {
         reg.close();
     }
 
-    // FIXME: Re-enable once linkstate RIB is introduced.
     @Test
     public void testWithLinkstate() throws InterruptedException, ExecutionException {
         final List<BgpTableType> tables = ImmutableList.of(