comments: get version from session context and 72/3072/3
authorusha <usha.m.s@ericsson.com>
Mon, 25 Nov 2013 18:27:20 +0000 (23:57 +0530)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 27 Nov 2013 21:32:42 +0000 (21:32 +0000)
setting it corresponding builders(flow,action,meter,group and port) for the OF Plugin usage

Signed-off-by: usha <usha.m.s@ericsson.com>
Change-Id: I696f98adf7d9dd0f919c529018afad87afe9a087

openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImpl.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/FlowConvertor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertor.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertorTest.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java

index b05aacd7534027841bee0f71d247d70b27fd39e6..f469aa73c24c866ed4bd65e86b251e17c3540e1a 100644 (file)
@@ -22,14 +22,12 @@ import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeFlow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput;
@@ -74,150 +72,152 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch {
     private static final Logger LOG = org.slf4j.LoggerFactory
             .getLogger(ModelDrivenSwitchImpl.class);
     private final NodeId nodeId;
-    private IMessageDispatchService messageService ;
+    private final IMessageDispatchService messageService ;
+    private short version = 0;
 
     protected ModelDrivenSwitchImpl(NodeId nodeId,
             InstanceIdentifier<Node> identifier, SessionContext context) {
         super(identifier, context);
         this.nodeId = nodeId;
         messageService = sessionContext.getMessageDispatchService() ;
+        version = context.getPrimaryConductor().getVersion();
     }
 
     @Override
     public Future<RpcResult<AddFlowOutput>> addFlow(AddFlowInput input) {
-       // Convert the AddFlowInput to FlowModInput 
-       FlowModInput ofFlowModInput = FlowConvertor.toFlowModInput(input) ;
-                       
-       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the AddFlowInput to FlowModInput
+        FlowModInput ofFlowModInput = FlowConvertor.toFlowModInput(input, version);
+
+       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
                Future<RpcResult<UpdateFlowOutput>> resultFromOFLib = messageService.flowMod(ofFlowModInput, cookie) ;
-               
+
                RpcResult<UpdateFlowOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for AddFlow RPC" + ex.getMessage());
        }
-       
+
        UpdateFlowOutput updateFlowOutput = rpcResultFromOFLib.getResult() ;
-       
+
        AddFlowOutputBuilder addFlowOutput = new AddFlowOutputBuilder() ;
        addFlowOutput.setTransactionId(updateFlowOutput.getTransactionId()) ;
        AddFlowOutput result = addFlowOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<AddFlowOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-        
+        RpcResult<AddFlowOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
        LOG.debug("Returning the Add Flow RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
 
     @Override
     public Future<RpcResult<AddGroupOutput>> addGroup(AddGroupInput input) {
-       // Convert the AddGroupInput to GroupModInput 
-       GroupModInput ofGroupModInput = GroupConvertor.toGroupModInput(input) ;
-       
-               
-       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the AddGroupInput to GroupModInput
+        GroupModInput ofGroupModInput = GroupConvertor.toGroupModInput(input, version);
+
+
+       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the GroupMod RPC method on MessageDispatchService");
        Future<RpcResult<UpdateGroupOutput>> resultFromOFLib = messageService.groupMod(ofGroupModInput, cookie) ;
-       
+
        RpcResult<UpdateGroupOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for AddGroup RPC" + ex.getMessage());
        }
-       
+
        UpdateGroupOutput updateGroupOutput = rpcResultFromOFLib.getResult() ;
-       
+
        AddGroupOutputBuilder addGroupOutput = new AddGroupOutputBuilder() ;
        addGroupOutput.setTransactionId(updateGroupOutput.getTransactionId()) ;
        AddGroupOutput result = addGroupOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<AddGroupOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-       
+        RpcResult<AddGroupOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
         LOG.debug("Returning the Add Group RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
 
     @Override
     public Future<RpcResult<AddMeterOutput>> addMeter(AddMeterInput input) {
-       // Convert the AddMeterInput to MeterModInput 
-       MeterModInput ofMeterModInput = MeterConvertor.toMeterModInput(input) ;
-       
-               
-       // For Meter provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the AddMeterInput to MeterModInput
+        MeterModInput ofMeterModInput = MeterConvertor.toMeterModInput(input, version);
+
+
+       // For Meter provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the MeterMod RPC method on MessageDispatchService");
        Future<RpcResult<UpdateMeterOutput>> resultFromOFLib = messageService.meterMod(ofMeterModInput, cookie) ;
-       
+
        RpcResult<UpdateMeterOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for AddMeter RPC" + ex.getMessage());
        }
-       
+
        UpdateMeterOutput updateMeterOutput = rpcResultFromOFLib.getResult() ;
-       
+
        AddMeterOutputBuilder addMeterOutput = new AddMeterOutputBuilder() ;
        addMeterOutput.setTransactionId(updateMeterOutput.getTransactionId()) ;
        AddMeterOutput result = addMeterOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<AddMeterOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-       
+        RpcResult<AddMeterOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
         LOG.debug("Returning the Add Meter RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
 
     @Override
     public Future<RpcResult<RemoveFlowOutput>> removeFlow(RemoveFlowInput input) {
-       // Convert the RemoveFlowInput to FlowModInput 
-       FlowModInput ofFlowModInput = FlowConvertor.toFlowModInput(input) ;
-       
-               
-       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the RemoveFlowInput to FlowModInput
+        FlowModInput ofFlowModInput = FlowConvertor.toFlowModInput(input, version);
+
+
+       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
                Future<RpcResult<UpdateFlowOutput>> resultFromOFLib = messageService.flowMod(ofFlowModInput, cookie) ;
-    
+
                RpcResult<UpdateFlowOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for remove Flow RPC" + ex.getMessage());
        }
-       
+
        UpdateFlowOutput updateFlowOutput = rpcResultFromOFLib.getResult() ;
-       
+
        RemoveFlowOutputBuilder removeFlowOutput = new RemoveFlowOutputBuilder() ;
        removeFlowOutput.setTransactionId(updateFlowOutput.getTransactionId()) ;
        RemoveFlowOutput result = removeFlowOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<RemoveFlowOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-        
+        RpcResult<RemoveFlowOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
        LOG.debug("Returning the Remove Flow RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
@@ -225,35 +225,35 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch {
     @Override
     public Future<RpcResult<RemoveGroupOutput>> removeGroup(
             RemoveGroupInput input) {
-       // Convert the RemoveGroupInput to GroupModInput 
-       GroupModInput ofGroupModInput = GroupConvertor.toGroupModInput(input.getUpdatedGroup()) ;
-       
-               
-       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the RemoveGroupInput to GroupModInput
+        GroupModInput ofGroupModInput = GroupConvertor.toGroupModInput(input.getUpdatedGroup(), version);
+
+
+       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the GroupMod RPC method on MessageDispatchService");
        Future<RpcResult<UpdateGroupOutput>> resultFromOFLib = messageService.groupMod(ofGroupModInput, cookie) ;
-       
+
        RpcResult<UpdateGroupOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for RemoveGroup RPC" + ex.getMessage());
        }
-       
+
        UpdateGroupOutput updateGroupOutput = rpcResultFromOFLib.getResult() ;
-       
+
        RemoveGroupOutputBuilder removeGroupOutput = new RemoveGroupOutputBuilder() ;
        removeGroupOutput.setTransactionId(updateGroupOutput.getTransactionId()) ;
        RemoveGroupOutput result = removeGroupOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<RemoveGroupOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-       
+        RpcResult<RemoveGroupOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
         LOG.debug("Returning the Remove Group RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
@@ -261,35 +261,35 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch {
     @Override
     public Future<RpcResult<RemoveMeterOutput>> removeMeter(
             RemoveMeterInput input) {
-       // Convert the RemoveMeterInput to MeterModInput 
-       MeterModInput ofMeterModInput = MeterConvertor.toMeterModInput(input) ;
-       
-               
-       // For Meter provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the RemoveMeterInput to MeterModInput
+        MeterModInput ofMeterModInput = MeterConvertor.toMeterModInput(input, version);
+
+
+       // For Meter provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the MeterMod RPC method on MessageDispatchService");
        Future<RpcResult<UpdateMeterOutput>> resultFromOFLib = messageService.meterMod(ofMeterModInput, cookie) ;
-       
+
        RpcResult<UpdateMeterOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for RemoveMeter RPC" + ex.getMessage());
        }
-       
+
        UpdateMeterOutput updatemeterOutput = rpcResultFromOFLib.getResult() ;
-       
+
        RemoveMeterOutputBuilder removeMeterOutput = new RemoveMeterOutputBuilder() ;
        removeMeterOutput.setTransactionId(updatemeterOutput.getTransactionId()) ;
        RemoveMeterOutput result = removeMeterOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<RemoveMeterOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-       
+        RpcResult<RemoveMeterOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
         LOG.debug("Returning the Remove Meter RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
@@ -328,36 +328,36 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch {
 
     @Override
     public Future<RpcResult<UpdateFlowOutput>> updateFlow(UpdateFlowInput input) {
-       // Convert the UpdateFlowInput to FlowModInput 
-       FlowModInput ofFlowModInput = FlowConvertor.toFlowModInput(input.getUpdatedFlow()) ;
-       
+       // Convert the UpdateFlowInput to FlowModInput
+        FlowModInput ofFlowModInput = FlowConvertor.toFlowModInput(input.getUpdatedFlow(), version);
+
        // Call the RPC method on MessageDispatchService
-               
-       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so  
+
+       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
                Future<RpcResult<UpdateFlowOutput>> resultFromOFLib = messageService.flowMod(ofFlowModInput, cookie) ;
-       
+
                RpcResult<UpdateFlowOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for UpdateFlow RPC" + ex.getMessage());
        }
-       
+
        UpdateFlowOutput updateFlowOutputOFLib = rpcResultFromOFLib.getResult() ;
-       
+
        UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder() ;
        updateFlowOutput.setTransactionId(updateFlowOutputOFLib.getTransactionId()) ;
        UpdateFlowOutput result = updateFlowOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<UpdateFlowOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-        
+        RpcResult<UpdateFlowOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
        LOG.debug("Returning the Update Flow RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
@@ -365,35 +365,35 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch {
     @Override
     public Future<RpcResult<UpdateGroupOutput>> updateGroup(
             UpdateGroupInput input) {
-       // Convert the UpdateGroupInput to GroupModInput 
-       GroupModInput ofGroupModInput = GroupConvertor.toGroupModInput(input.getUpdatedGroup()) ;
-       
-               
-       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the UpdateGroupInput to GroupModInput
+        GroupModInput ofGroupModInput = GroupConvertor.toGroupModInput(input.getUpdatedGroup(), version);
+
+
+       // For Flow provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the GroupMod RPC method on MessageDispatchService");
        Future<RpcResult<UpdateGroupOutput>> resultFromOFLib = messageService.groupMod(ofGroupModInput, cookie) ;
-       
+
        RpcResult<UpdateGroupOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for updateGroup RPC" + ex.getMessage());
        }
-       
+
        UpdateGroupOutput updateGroupOutputOFLib = rpcResultFromOFLib.getResult() ;
-       
+
        UpdateGroupOutputBuilder updateGroupOutput = new UpdateGroupOutputBuilder() ;
        updateGroupOutput.setTransactionId(updateGroupOutputOFLib.getTransactionId()) ;
        UpdateGroupOutput result = updateGroupOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<UpdateGroupOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-       
+        RpcResult<UpdateGroupOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
         LOG.debug("Returning the Update Group RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
@@ -401,35 +401,35 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch {
     @Override
     public Future<RpcResult<UpdateMeterOutput>> updateMeter(
             UpdateMeterInput input) {
-       // Convert the UpdateMeterInput to MeterModInput 
-       MeterModInput ofMeterModInput = MeterConvertor.toMeterModInput(input.getUpdatedMeter()) ;
-       
-               
-       // For Meter provisioning, the SwitchConnectionDistinguisher is set to null so  
+       // Convert the UpdateMeterInput to MeterModInput
+        MeterModInput ofMeterModInput = MeterConvertor.toMeterModInput(input.getUpdatedMeter(), version);
+
+
+       // For Meter provisioning, the SwitchConnectionDistinguisher is set to null so
        // the request can be routed through any connection to the switch
-       
+
        SwitchConnectionDistinguisher cookie = null ;
-       
+
        LOG.debug("Calling the MeterMod RPC method on MessageDispatchService");
        Future<RpcResult<UpdateMeterOutput>> resultFromOFLib = messageService.meterMod(ofMeterModInput, cookie) ;
-       
+
        RpcResult<UpdateMeterOutput> rpcResultFromOFLib = null ;
-       
-       try { 
+
+       try {
                rpcResultFromOFLib = resultFromOFLib.get();
        } catch( Exception ex ) {
                LOG.error( " Error while getting result for UpdateMeter RPC" + ex.getMessage());
        }
-       
+
        UpdateMeterOutput updateMeterOutputFromOFLib = rpcResultFromOFLib.getResult() ;
-       
+
        UpdateMeterOutputBuilder updateMeterOutput = new UpdateMeterOutputBuilder() ;
        updateMeterOutput.setTransactionId(updateMeterOutputFromOFLib.getTransactionId()) ;
        UpdateMeterOutput result = updateMeterOutput.build();
-       
+
        Collection<RpcError> errors = rpcResultFromOFLib.getErrors() ;
-        RpcResult<UpdateMeterOutput> rpcResult = Rpcs.getRpcResult(true, result, errors); 
-       
+        RpcResult<UpdateMeterOutput> rpcResult = Rpcs.getRpcResult(true, result, errors);
+
         LOG.debug("Returning the Update Meter RPC result to MD-SAL");
         return Futures.immediateFuture(rpcResult);
     }
index 6c0a9ed6d90a99b32d4cd78c35f232b6bc24341a..9048eaecd23a71afc7d282661aed46cc4f2b8a86 100644 (file)
@@ -55,18 +55,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValues;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValuesV10;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.openflow.protocol.OFPort;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
-
-
-
-
-
 /**
  * @author usha@ericsson Action List:This class takes data from SAL layer and
  *         converts into OF Data
@@ -80,7 +76,8 @@ public final class ActionConvertor {
     }
 
     public static List<ActionsList> getActionList(
-            List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actions)
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actions,
+            short version)
 
     {
         ActionBuilder  actionBuilder = new ActionBuilder();
@@ -94,7 +91,7 @@ public final class ActionConvertor {
                     actionItem).getAction();
 
             if (action instanceof OutputAction)
-               actionsList.add(salToOFOutputAction(action,actionBuilder,actionsListBuilder));
+                actionsList.add(salToOFOutputAction(action, actionBuilder, actionsListBuilder, version));
             else if (action instanceof GroupAction)
                 actionsList.add(SalToOFGroupAction(action, actionBuilder, actionsListBuilder));
             else if (action instanceof CopyTtlOut)
@@ -351,7 +348,7 @@ public final class ActionConvertor {
     private static ActionsList salToOFOutputAction(
             org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
             ActionBuilder actionBuilder,
           ActionsListBuilder actionsListBuilder) {
ActionsListBuilder actionsListBuilder, short version) {
 
 
         OutputAction outputAction = ((OutputAction) action);
@@ -384,9 +381,14 @@ public final class ActionConvertor {
 
             if (uri.getValue() == NodeConnectorIDType.CONTROLLER) {
 
-            // portAction.setPort(new PortNumber((long)
-            // OFPort.OFPP_CONTROLLER.getValue()));
+            if (version == 0X4) {
+                // TODO:To remove the and operation once the BitContent is in
+                // place in OF Plugin .
+                portAction.setPort(new PortNumber(PortNumberValues.CONTROLLER.getIntValue() & 0x00000000ffffffffL));
+            } else {
+                portAction.setPort(new PortNumber((long) PortNumberValuesV10.CONTROLLER.getIntValue()));
 
+            }
         }
 
         actionBuilder
index 1b143579ea51c577200b04c328949ac4b2a68185..b08a3728d7fd4315a57ca67d34cbb6c3d9d6330a 100644 (file)
@@ -163,7 +163,7 @@ public class FlowConvertor {
     private static final Logger logger = LoggerFactory.getLogger(FlowConvertor.class);
     private static final String PREFIX_SEPARATOR = "/";
 
-    public static FlowModInput toFlowModInput(Flow flow) {
+    public static FlowModInput toFlowModInput(Flow flow, short version) {
         FlowModInputBuilder flowMod = new FlowModInputBuilder();
 
         flowMod.setCookie(flow.getCookie());
@@ -219,9 +219,9 @@ public class FlowConvertor {
         }
 
         if (flow.getInstructions() != null) {
-            flowMod.setInstructions(toInstructions(flow.getInstructions()));
+            flowMod.setInstructions(toInstructions(flow.getInstructions(), version));
         }
-
+        flowMod.setVersion(version);
         return flowMod.build();
     }
 
@@ -688,7 +688,8 @@ public class FlowConvertor {
     }
 
     private static List<Instructions> toInstructions(
-            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions instructions) {
+            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions instructions,
+            short version) {
         List<Instructions> instructionsList = new ArrayList<>();
         InstructionsBuilder instructionBuilder = new InstructionsBuilder();
 
@@ -720,7 +721,8 @@ public class FlowConvertor {
                 instructionBuilder
                         .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.WriteActions.class);
                 ActionsInstructionBuilder actionsInstructionBuilder = new ActionsInstructionBuilder();
-                actionsInstructionBuilder.setActionsList(ActionConvertor.getActionList(writeActions.getAction()));
+                actionsInstructionBuilder.setActionsList(ActionConvertor.getActionList(writeActions.getAction(),
+                        version));
                 instructionBuilder.addAugmentation(ActionsInstruction.class, actionsInstructionBuilder.build());
             }
 
@@ -729,7 +731,8 @@ public class FlowConvertor {
                 instructionBuilder
                         .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.ApplyActions.class);
                 ActionsInstructionBuilder actionsInstructionBuilder = new ActionsInstructionBuilder();
-                actionsInstructionBuilder.setActionsList(ActionConvertor.getActionList(applyActions.getAction()));
+                actionsInstructionBuilder.setActionsList(ActionConvertor.getActionList(applyActions.getAction(),
+                        version));
                 instructionBuilder.addAugmentation(ActionsInstruction.class, actionsInstructionBuilder.build());
             }
 
@@ -738,7 +741,8 @@ public class FlowConvertor {
                 instructionBuilder
                         .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.ClearActions.class);
                 ActionsInstructionBuilder actionsInstructionBuilder = new ActionsInstructionBuilder();
-                actionsInstructionBuilder.setActionsList(ActionConvertor.getActionList(clearActions.getAction()));
+                actionsInstructionBuilder.setActionsList(ActionConvertor.getActionList(clearActions.getAction(),
+                        version));
                 instructionBuilder.addAugmentation(ActionsInstruction.class, actionsInstructionBuilder.build());
             }
 
index 3abfeaa6d8a9a77eccdee066ee9cbcebb48d211f..2dc2e89b9857e612120d997db1a0160b89b39c94 100644 (file)
@@ -30,7 +30,7 @@ public final class GroupConvertor {
 
     public static GroupModInput toGroupModInput(
 
-            org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group source) {
+    org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group source, short version) {
         List<BucketsList> bucketLists = new ArrayList<BucketsList>();
         GroupModInputBuilder groupModInputBuilder = new GroupModInputBuilder();
         if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput)
@@ -54,14 +54,14 @@ public final class GroupConvertor {
 
         groupModInputBuilder.setGroupId(source.getGroupId().getValue());
 
-        getbucketList(source.getBuckets(), bucketLists);
+        getbucketList(source.getBuckets(), bucketLists, version);
         groupModInputBuilder.setBucketsList(bucketLists);
-
+        groupModInputBuilder.setVersion(version);
         return groupModInputBuilder.build();
 
     }
 
-    private static void getbucketList(Buckets buckets, List<BucketsList> bucketLists) {
+    private static void getbucketList(Buckets buckets, List<BucketsList> bucketLists, short version) {
 
         Iterator<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> groupBucketIterator = buckets
                 .getBucket().iterator();
@@ -76,7 +76,7 @@ public final class GroupConvertor {
             bucketBuilder.setWatchGroup(groupBucket.getWatchGroup());
             bucketBuilder.setWatchPort(new PortNumber(groupBucket.getWatchPort()));
 
-            List<ActionsList> bucketActionList = ActionConvertor.getActionList(groupBucket.getAction());
+            List<ActionsList> bucketActionList = ActionConvertor.getActionList(groupBucket.getAction(), version);
             bucketBuilder.setActionsList(bucketActionList);
             BucketsList bucket = bucketBuilder.build();
             bucketLists.add(bucket);
index 18d26c1a13a991741fb42b54beafa4fc7c22f8cd..98abf6c1db3f8f698908a272c5f7e57ed1b0fadf 100644 (file)
@@ -1,4 +1,5 @@
 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+
 /****
  *
  * This class is used for converting the data from SAL layer to OF Library Layer for Meter Mod Command.
@@ -9,7 +10,6 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags.Flags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter;
@@ -27,126 +27,98 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.BandsBuilder;
-//import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
 
+//import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
 
 public final class MeterConvertor {
 
-        private static List<Bands> bands;
-        private static MeterModInputBuilder meterModInputBuilder;
-        private static MeterFlags flags;
-        private MeterConvertor(){
-
-        }
-
-        //Get all the data for the meter from the Yang/SAL-Layer
-        /**
-        * @param Yang Data source
-        * @return MeterModInput required by OF Library
-        */
-       public static MeterModInput  toMeterModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter source ) {
-
-                meterModInputBuilder = new MeterModInputBuilder();
-
-
-                if(source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput)
-                                meterModInputBuilder.setCommand(MeterModCommand.OFPMCADD);
-                       if(source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInput)
-                               meterModInputBuilder.setCommand(MeterModCommand.OFPMCDELETE);
-                       if(source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInput)
-                               meterModInputBuilder.setCommand(MeterModCommand.OFPMCMODIFY);
-
-                       meterModInputBuilder.setMeterId(new MeterId(source.getMeterId().getValue()));
-
-                       getFlagsFromSAL(source.getFlags());
-                               meterModInputBuilder.setFlags(flags);
-                       getBandsFromSAL(source.getMeterBandHeaders());
-                                meterModInputBuilder.setBands(bands);
-                return meterModInputBuilder.build();
-        }
-
-
-
-        private static void getBandsFromSAL(MeterBandHeaders meterBandHeaders) {
-
-               Iterator <MeterBandHeader> bandHeadersIterator  = meterBandHeaders.getMeterBandHeader().iterator();
-               MeterBandHeader meterBandHeader;
+    private MeterConvertor() {
 
-               BandsBuilder bandsB = null;
-               //MeterBandHeaderBuilder meterBandHeaderBuilder = null ;
-               bands = new ArrayList<Bands>();
-               while(bandHeadersIterator.hasNext())
-               {
-                               meterBandHeader = bandHeadersIterator.next();
-                               MeterBand meterBandItem = null;
-                               //The band types :drop,DSCP_Remark or experimenter.
-                               //meterBandHeaderBuilder = new MeterBandHeaderBuilder();
+    }
 
+    // Get all the data for the meter from the Yang/SAL-Layer
+    /**
+     * @param version
+     * @param Yang
+     *            Data source
+     * @return MeterModInput required by OF Library
+     */
+    public static MeterModInput toMeterModInput(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter source, short version) {
 
-                               if(meterBandHeader.getMeterBandTypes().getFlags().isOfpmbtDrop()){
+        MeterModInputBuilder meterModInputBuilder = new MeterModInputBuilder();
 
-                                       MeterBandDropBuilder meterBandDropBuilder = new MeterBandDropBuilder();
-                                       meterBandDropBuilder.setType(MeterBandType.OFPMBTDROP);
+        List<Bands> bands = new ArrayList<Bands>();
+        MeterFlags flags = null;
+        if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput)
+            meterModInputBuilder.setCommand(MeterModCommand.OFPMCADD);
+        if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInput)
+            meterModInputBuilder.setCommand(MeterModCommand.OFPMCDELETE);
+        if (source instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInput)
+            meterModInputBuilder.setCommand(MeterModCommand.OFPMCMODIFY);
 
-                                       Drop drop = (Drop)meterBandHeader.getBandType();
+        meterModInputBuilder.setMeterId(new MeterId(source.getMeterId().getValue()));
 
-                                       meterBandDropBuilder.setBurstSize(drop.getRate());
-                                       meterBandDropBuilder.setRate(drop.getBurstSize());
-                                       meterBandItem= meterBandDropBuilder.build();
+        meterModInputBuilder.setFlags(flags = new MeterFlags(source.getFlags().isMeterBurst(), source.getFlags()
+                .isMeterKbps(), source.getFlags().isMeterPktps(), source.getFlags().isMeterStats()));
+        getBandsFromSAL(source.getMeterBandHeaders(), bands);
+        meterModInputBuilder.setBands(bands);
+        meterModInputBuilder.setVersion(version);
+        return meterModInputBuilder.build();
+    }
 
-                               }
-                               else if(meterBandHeader.getMeterBandTypes().getFlags().isOfpmbtDscpRemark())
-                               {
-                                       MeterBandDscpRemarkBuilder meterBandDscpRemarkBuilder = new MeterBandDscpRemarkBuilder();
-                                       meterBandDscpRemarkBuilder.setType(MeterBandType.OFPMBTDSCPREMARK);
+    private static void getBandsFromSAL(MeterBandHeaders meterBandHeaders, List<Bands> bands) {
 
-                                       DscpRemark dscpRemark = (DscpRemark)meterBandHeader.getBandType();
+        Iterator<MeterBandHeader> bandHeadersIterator = meterBandHeaders.getMeterBandHeader().iterator();
+        MeterBandHeader meterBandHeader;
 
-                                       meterBandDscpRemarkBuilder.setBurstSize(dscpRemark.getBurstSize());
-                                       meterBandDscpRemarkBuilder.setRate(dscpRemark.getRate());
-                                       meterBandDscpRemarkBuilder.setPrecLevel(dscpRemark.getPercLevel());
-                                       meterBandItem = meterBandDscpRemarkBuilder.build();
+        BandsBuilder bandsB = null;
 
-                               }
-                               else if(meterBandHeader.getMeterBandTypes().getFlags().isOfpmbtExperimenter())
-                               {
-                                       MeterBandExperimenterBuilder meterBandExperimenterBuilder = new MeterBandExperimenterBuilder();
-                                       meterBandExperimenterBuilder.setType(MeterBandType.OFPMBTEXPERIMENTER);
-                                       Experimenter experimenter = (Experimenter)meterBandHeader.getBandType();
-                                       meterBandExperimenterBuilder.setBurstSize(experimenter.getBurstSize());
-                                       meterBandExperimenterBuilder.setRate(experimenter.getRate());
-                                       meterBandExperimenterBuilder.setExperimenter(experimenter.getExperimenter());
-                                       meterBandItem = meterBandExperimenterBuilder.build();
+        while (bandHeadersIterator.hasNext()) {
+            meterBandHeader = bandHeadersIterator.next();
+            MeterBand meterBandItem = null;
+            // The band types :drop,DSCP_Remark or experimenter.
 
-                               }
+            if (meterBandHeader.getMeterBandTypes().getFlags().isOfpmbtDrop()) {
 
-                               bandsB = new BandsBuilder();
-                               bandsB.setMeterBand(meterBandItem).build();
+                MeterBandDropBuilder meterBandDropBuilder = new MeterBandDropBuilder();
+                meterBandDropBuilder.setType(MeterBandType.OFPMBTDROP);
 
-                               bands.add(bandsB.build()); //Bands list
+                Drop drop = (Drop) meterBandHeader.getBandType();
 
+                meterBandDropBuilder.setBurstSize(drop.getRate());
+                meterBandDropBuilder.setRate(drop.getBurstSize());
+                meterBandItem = meterBandDropBuilder.build();
 
-                       }
+            } else if (meterBandHeader.getMeterBandTypes().getFlags().isOfpmbtDscpRemark()) {
+                MeterBandDscpRemarkBuilder meterBandDscpRemarkBuilder = new MeterBandDscpRemarkBuilder();
+                meterBandDscpRemarkBuilder.setType(MeterBandType.OFPMBTDSCPREMARK);
 
-       }
+                DscpRemark dscpRemark = (DscpRemark) meterBandHeader.getBandType();
 
-        //get it from plugin(SAL) layer
-        private static void getFlagsFromSAL(Flags flags2) {
-                               boolean meterBurst_SAL = false;
-                               boolean meterKbps_SAL = false;
-                               boolean meterPktps_SAL = false;
-                               boolean meterStats_SAL = false;
+                meterBandDscpRemarkBuilder.setBurstSize(dscpRemark.getBurstSize());
+                meterBandDscpRemarkBuilder.setRate(dscpRemark.getRate());
+                meterBandDscpRemarkBuilder.setPrecLevel(dscpRemark.getPercLevel());
+                meterBandItem = meterBandDscpRemarkBuilder.build();
 
+            } else if (meterBandHeader.getMeterBandTypes().getFlags().isOfpmbtExperimenter()) {
+                MeterBandExperimenterBuilder meterBandExperimenterBuilder = new MeterBandExperimenterBuilder();
+                meterBandExperimenterBuilder.setType(MeterBandType.OFPMBTEXPERIMENTER);
+                Experimenter experimenter = (Experimenter) meterBandHeader.getBandType();
+                meterBandExperimenterBuilder.setBurstSize(experimenter.getBurstSize());
+                meterBandExperimenterBuilder.setRate(experimenter.getRate());
+                meterBandExperimenterBuilder.setExperimenter(experimenter.getExperimenter());
+                meterBandItem = meterBandExperimenterBuilder.build();
 
-                               if(flags2.isMeterBurst())       meterBurst_SAL = true;
-                               if(flags2.isMeterKbps())  meterKbps_SAL = true;
-                               if(flags2.isMeterPktps()) meterPktps_SAL = true;
-                               if(flags2.isMeterStats()) meterStats_SAL = true;
+            }
 
-                               flags = new MeterFlags(meterBurst_SAL,meterKbps_SAL,meterPktps_SAL,meterStats_SAL);
+            bandsB = new BandsBuilder();
+            bandsB.setMeterBand(meterBandItem).build();
 
+            bands.add(bandsB.build()); // Bands list
 
-               }
+        }
 
+    }
 
 }
index 2581eedee245e868c41353170600df698c116ef6..ea10c1ac77fdf5638d19891c229b5f2d0180d74c 100644 (file)
@@ -1,9 +1,6 @@
 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
 
-import java.util.List;
-
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
@@ -35,22 +32,22 @@ public final class PortConvertor {
      */
 
     public static PortModInput toPortModInput(
-            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortMod input) {
+            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port source,
+            short version) {
 
-        List<Port> source = input.getPort().getPort();
 
         PortConfig config = null;
 
         PortModInputBuilder portModInputBuilder = new PortModInputBuilder();
-        portModInputBuilder.setAdvertise(getPortFeatures(source.get(0).getAdvertisedFeatures()));
-        portModInputBuilder.setPortNo(new PortNumber(source.get(0).getPortNumber()));
-        maskPortConfigFields(source.get(0).getConfiguration(), config);
+        portModInputBuilder.setAdvertise(getPortFeatures(source.getAdvertisedFeatures()));
+        portModInputBuilder.setPortNo(new PortNumber(source.getPortNumber()));
+        maskPortConfigFields(source.getConfiguration(), config);
         portModInputBuilder.setConfig(config);
-        portModInputBuilder.setHwAddress(new MacAddress(source.get(0).getHardwareAddress()));
+        portModInputBuilder.setHwAddress(new MacAddress(source.getHardwareAddress()));
         config = null;
-        maskPortConfigFields(source.get(0).getMask(), config);
+        maskPortConfigFields(source.getMask(), config);
         portModInputBuilder.setMask(config);
-
+        portModInputBuilder.setVersion(version);
         return portModInputBuilder.build();
 
     }
index bf1c514d8eea34d2b29ecee9229e668818a2f889..fd93dd3b490cfb3af74522bc66bc1de4dcfc81bc 100644 (file)
@@ -67,7 +67,7 @@ public class ActionConvertorTest {
         pbbActionData();
         setFieldData();
         setExperimenterData();
-        List<ActionsList> OFActionsList = ActionConvertor.getActionList(actions);
+        List<ActionsList> OFActionsList = ActionConvertor.getActionList(actions, (short) 0X4);
 
         OutputActions(OFActionsList);
 
index 9c79690eff13bd5357e5291781b8e0ba8e0b6085..63ef29ab70436d34d9dc5bc9326860a14e54070e 100644 (file)
@@ -103,7 +103,7 @@ public class GroupConvertorTest {
 
         addGroupBuilder.setBuckets(buckets);
 
-        GroupModInput outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build());
+        GroupModInput outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4);
 
         Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
         Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
index 2f80002bc596b73a4f7bd807e3445328e022a562..5d08a19eeac56ff0f1df27504fcc5fa67bb9635c 100644 (file)
@@ -5,19 +5,10 @@ import java.util.List;
 
 import junit.framework.Assert;
 
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
-
-
-
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags.Flags;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.BandType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
@@ -26,40 +17,30 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
-
-
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
-
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
 
 
 public class MeterConvertorTest {
-       
 
-        
+
+
 @Test
 public void testMeterModCommandConvertorwithAllParameters()
 {
 
-       /// DROP Band 
+       /// DROP Band
        MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
        MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
-       
+
        org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(true, false, false);
        meterBandTypesB.setFlags(bandFlag);//_ofpmbtDrop
        DropBuilder drop = new DropBuilder();
@@ -68,34 +49,34 @@ public void testMeterModCommandConvertorwithAllParameters()
        Drop drp = drop.build();
        meterBandHeaderBuilder.setBandType(drp);
        meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
-       
-       
-       
+
+
+
        MeterBandHeader meterBH = meterBandHeaderBuilder.build();
-               
+
        //DSCP Mark
        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
        MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
        org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false, true, false);
-       
+
        meterBandTypesB1.setFlags(bandFlag1);
        DscpRemarkBuilder dscp = new DscpRemarkBuilder();
        dscp.setBurstSize(11L);
        dscp.setRate(21L);
        dscp.setPercLevel((short)1);
-       DscpRemark dscpRemark = dscp.build();   
+       DscpRemark dscpRemark = dscp.build();
        meterBandHeaderBuilder1.setBandType(dscpRemark);
        meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
-       
+
        MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
-       
+
        //Experimental
-       
+
                MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
                MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
                org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag2 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false,false, true);
                meterBandTypesB2.setFlags(bandFlag2);
-               
+
                ExperimenterBuilder exp = new ExperimenterBuilder();
                exp.setBurstSize(12L);
                exp.setRate(22L);
@@ -104,63 +85,63 @@ public void testMeterModCommandConvertorwithAllParameters()
                meterBandHeaderBuilder2.setBandType(experimenter);
                meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
                MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
-               
-       
+
+
        List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
        meterBandList.add(0,meterBH);
        meterBandList.add(1,meterBH1);
        meterBandList.add(2,meterBH2);
-       
+
        //Constructing List of Bands
        MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
        meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
-       
-       MeterBandHeaders meterBandHeaders =meterBandHeadersBuilder.build(); 
-       
+
+       MeterBandHeaders meterBandHeaders =meterBandHeadersBuilder.build();
+
 
        AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
 
-       
+
        addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); //MeterBands added to the meter command.
 Long temp = 10L;
-       
+
         //NodeKey key = new NodeKey(new NodeId("24"));
      //InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key).toInstance();
-        
+
        addMeterFromSAL.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
 
-               
+
                Flags flagV = new Flags(true, true, true,true);
                addMeterFromSAL.setFlags(flagV);
-               
+
        AddMeterInput meterInputCommand = addMeterFromSAL.build();
-       MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand);
-       
-       
-       
-       
+        MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
+
+
+
+
         Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
-       Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST()); 
+       Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
        Assert.assertEquals(temp,outMeterModInput.getMeterId().getValue());
        //BandInformation starts here:
-       
+
              List<Bands> bands =  outMeterModInput.getBands();
                        for (Bands currentBand : bands) {
                    MeterBand meterBand = currentBand.getMeterBand();
                        if(meterBand instanceof MeterBandDrop){
-                               
+
                                        Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP, ((MeterBandDrop) meterBand).getType());
                                        Assert.assertEquals((long)20,(long)((MeterBandDrop) meterBand).getBurstSize());
                                        Assert.assertEquals((long)10, (long)((MeterBandDrop) meterBand).getRate());
-                       
-                       }                                       
+
+                       }
                        if(meterBand instanceof MeterBandDscpRemark)
                        {
                                Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK, ((MeterBandDscpRemark) meterBand).getType());
                                Assert.assertEquals((long)11,(long)((MeterBandDscpRemark) meterBand).getBurstSize());
                                Assert.assertEquals((long)21, (long)((MeterBandDscpRemark) meterBand).getRate());
                                Assert.assertEquals((short)1, (short)((MeterBandDscpRemark) meterBand).getPrecLevel());
-                               
+
                        }
                        if(meterBand instanceof MeterBandExperimenter)
                        {
@@ -170,12 +151,12 @@ Long temp = 10L;
                                Assert.assertEquals((long)23, (long)((MeterBandExperimenter) meterBand).getExperimenter());
 
                        }
-                   
-                   }    
-                       
-                       
+
+                   }
+
+
 }
 
 
-       
+
 }