Bug 1186 - of-flow: pop-mpls-action different in config and operational data store 31/8131/1
authorAnilkumar Vishnoi <avishnoi@in.ibm.com>
Wed, 18 Jun 2014 19:25:46 +0000 (00:55 +0530)
committerAnilkumar Vishnoi <avishnoi@in.ibm.com>
Wed, 18 Jun 2014 19:25:46 +0000 (00:55 +0530)
Change-Id: I9b13cd917200504c24b2892590661a85824899cb
Signed-off-by: Anilkumar Vishnoi <avishnoi@in.ibm.com>
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertorTest.java

index efd14bd7fd590ea81adf17855bd489bcdd258164..a5d6a69c9b7422cb484cb4f64eb4b60b6e370eb2 100644 (file)
@@ -735,12 +735,11 @@ public final class ActionConvertor {
 
             } else if (action.getType().equals(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushMpls.class)) {
-                bucketActions.add(ofToSALPushVlanAction(action));
+                bucketActions.add(ofToSALPushMplsAction(action));
 
             } else if (action.getType().equals(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopMpls.class)) {
-                PopMplsActionBuilder popMpls = new PopMplsActionBuilder();
-                bucketActions.add(new PopMplsActionCaseBuilder().setPopMplsAction(popMpls.build()).build());
+                bucketActions.add(ofToSALPopMplsAction(action));
 
             } else if (action.getType().equals(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetQueue.class)) {
@@ -870,6 +869,22 @@ public final class ActionConvertor {
         return new PushMplsActionCaseBuilder().setPushMplsAction(pushMplsAction.build()).build();
     }
 
+    /**
+     * Method converts OF PopMpls action to SAL PopMpls action.
+     *
+     * @param action
+     * @return PopMplsActionCase
+     */
+    public static PopMplsActionCase ofToSALPopMplsAction(Action action) {
+
+        PopMplsActionBuilder popMplsAction = new PopMplsActionBuilder();
+
+        EthertypeAction etherType = action.getAugmentation(EthertypeAction.class);
+        popMplsAction.setEthernetType(etherType.getEthertype().getValue());
+
+        return new PopMplsActionCaseBuilder().setPopMplsAction(popMplsAction.build()).build();
+    }
+
     /**
      * Method converts OF SetQueue action to SAL SetQueue action.
      *
index 5adba4d7b2a56817f2597f65d5678859950a4d6d..8f0571c89b6235347c12df6bcf52cb691be6e06e 100644 (file)
@@ -587,6 +587,24 @@ public class ActionConvertorTest {
         Assert.assertEquals("2001:0db8:85a3:0042:1000:8a2e:0370:7334", matchEntry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address().getValue());
     }
 
+    /**
+     * testing {@link ActionConvertor#ofToSALPopMplsAction(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action)}
+     * with OF-1.3, IPv6 
+     */
+    @Test
+    public void testOFtoSALPopMplsAction() {
+        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder 
+        = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
+        
+        actionBuilder.setType(PopMpls.class);
+        EthertypeActionBuilder ethertypeActionBuilder = new EthertypeActionBuilder();
+        ethertypeActionBuilder.setEthertype(new EtherType(new Integer(34888)));
+        actionBuilder.addAugmentation(EthertypeAction.class, ethertypeActionBuilder.build());
+        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action action = actionBuilder.build(); 
+
+        Assert.assertEquals(34888, ActionConvertor.ofToSALPopMplsAction(action).getPopMplsAction().getEthernetType().intValue());
+    }
+
     private static SetNwDstActionCase provisionNwDstActionBuilder(Address address) {
         SetNwDstAction nwDstAction = new SetNwDstActionBuilder().setAddress(address).build();
         SetNwDstActionCase action = new SetNwDstActionCaseBuilder()