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
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;
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);
}
@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);
}
@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);
}
@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);
}
@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);
}
@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);
}
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
}
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();
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)
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);
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
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());
}
if (flow.getInstructions() != null) {
- flowMod.setInstructions(toInstructions(flow.getInstructions()));
+ flowMod.setInstructions(toInstructions(flow.getInstructions(), version));
}
-
+ flowMod.setVersion(version);
return flowMod.build();
}
}
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();
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());
}
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());
}
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());
}
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)
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();
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);
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.
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;
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
- }
+ }
+ }
}
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;
*/
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();
}
pbbActionData();
setFieldData();
setExperimenterData();
- List<ActionsList> OFActionsList = ActionConvertor.getActionList(actions);
+ List<ActionsList> OFActionsList = ActionConvertor.getActionList(actions, (short) 0X4);
OutputActions(OFActionsList);
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());
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;
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();
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);
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)
{
Assert.assertEquals((long)23, (long)((MeterBandExperimenter) meterBand).getExperimenter());
}
-
- }
-
-
+
+ }
+
+
}
-
+
}