use of org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder in project openflowplugin by opendaylight.
the class Test method testFlow.
@Override
public Future<RpcResult<Void>> testFlow(TestFlowInput input) {
AddFlowInputBuilder flow = new AddFlowInputBuilder();
flow.setPriority(2);
flow.setMatch(createMatchBld().build());
flow.setInstructions(createDecNwTtlInstructionsBld().build());
flow.setBarrier(Boolean.FALSE);
BigInteger value = BigInteger.valueOf(10L);
flow.setCookie(new FlowCookie(value));
flow.setCookieMask(new FlowCookie(value));
flow.setHardTimeout(0);
flow.setIdleTimeout(0);
flow.setInstallHw(false);
flow.setStrict(false);
flow.setContainerName(null);
flow.setFlags(new FlowModFlags(false, false, false, false, true));
flow.setTableId((short) 0);
flow.setFlowName("NiciraFLOW");
// Construct the flow instance id
final InstanceIdentifier<Node> flowInstanceId = InstanceIdentifier.builder(// File under nodes
Nodes.class).child(Node.class, new NodeKey(new NodeId("openflow:1"))).build();
flow.setNode(new NodeRef(flowInstanceId));
pushFlowViaRpc(flow.build());
return Futures.immediateFuture(RpcResultBuilder.<Void>status(true).build());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder in project openflowplugin by opendaylight.
the class SingleLayerFlowServiceTest method buildRequest.
@Test
public void buildRequest() throws Exception {
final AddFlowInput input = new AddFlowInputBuilder().setTableId(TABLE_ID).build();
final OfHeader ofHeader = service.buildRequest(DUMMY_XID, input);
assertEquals(FlowMessage.class, ofHeader.getImplementedInterface());
final FlowMessage result = FlowMessage.class.cast(ofHeader);
assertEquals(FlowModCommand.OFPFCADD, result.getCommand());
assertEquals(TABLE_ID, result.getTableId().shortValue());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder in project openflowplugin by opendaylight.
the class SimpleDropFirewallCli method createTcpFlow.
/**
* Form of input is: node name node-connector number source ip-address destinatinon ip-address.
*
* @param cliInput
* Parsed input from CLI
*/
public AddFlowInput createTcpFlow(final List<String> cliInput) {
AddFlowInputBuilder ret = new AddFlowInputBuilder();
ret.setNode(nodeFromString(cliInput.get(0)));
// We construct a match
MatchBuilder match = new MatchBuilder();
Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
ipv4Match.setIpv4Source(new Ipv4Prefix(cliInput.get(3)));
ipv4Match.setIpv4Destination(new Ipv4Prefix(cliInput.get(4)));
match.setLayer3Match(ipv4Match.build());
match.setLayer4Match(new TcpMatchBuilder().build());
ret.setMatch(match.build());
DropActionCase dropAction = new DropActionCaseBuilder().build();
ActionBuilder action = new ActionBuilder();
action.setAction(dropAction);
List<Action> actions = Collections.singletonList(action.build());
//
ApplyActionsCaseBuilder aaBldr = new ApplyActionsCaseBuilder();
aaBldr.setApplyActions(new ApplyActionsBuilder().setAction(actions).build());
InstructionBuilder instructionBldr = new InstructionBuilder();
instructionBldr.setInstruction(aaBldr.build());
List<Instruction> isntructions = Collections.singletonList(instructionBldr.build());
InstructionsBuilder instructionsBldr = new InstructionsBuilder();
instructionsBldr.setInstruction(isntructions);
ret.setInstructions(instructionsBldr.build());
return ret.build();
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder in project openflowplugin by opendaylight.
the class SalFlowsBatchServiceImpl method addFlowsBatch.
@Override
public Future<RpcResult<AddFlowsBatchOutput>> addFlowsBatch(final AddFlowsBatchInput input) {
LOG.trace("Adding flows @ {} : {}", PathUtil.extractNodeId(input.getNode()), input.getBatchAddFlows().size());
final ArrayList<ListenableFuture<RpcResult<AddFlowOutput>>> resultsLot = new ArrayList<>();
for (BatchFlowInputGrouping batchFlow : input.getBatchAddFlows()) {
final AddFlowInput addFlowInput = new AddFlowInputBuilder(batchFlow).setFlowRef(createFlowRef(input.getNode(), batchFlow)).setNode(input.getNode()).build();
resultsLot.add(JdkFutureAdapters.listenInPoolThread(salFlowService.addFlow(addFlowInput)));
}
final ListenableFuture<RpcResult<List<BatchFailedFlowsOutput>>> commonResult = Futures.transform(Futures.successfulAsList(resultsLot), FlowUtil.<AddFlowOutput>createCumulatingFunction(input.getBatchAddFlows()), MoreExecutors.directExecutor());
ListenableFuture<RpcResult<AddFlowsBatchOutput>> addFlowsBulkFuture = Futures.transform(commonResult, FlowUtil.FLOW_ADD_TRANSFORM, MoreExecutors.directExecutor());
if (input.isBarrierAfter()) {
addFlowsBulkFuture = BarrierUtil.chainBarrier(addFlowsBulkFuture, input.getNode(), transactionService, FlowUtil.FLOW_ADD_COMPOSING_TRANSFORM);
}
return addFlowsBulkFuture;
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder in project openflowplugin by opendaylight.
the class SalFlowServiceImplTest method addFlow.
private void addFlow(short version) throws ExecutionException, InterruptedException {
AddFlowInput mockedAddFlowInput = new AddFlowInputBuilder().setMatch(match).setTableId((short) 1).build();
SalFlowServiceImpl salFlowService = mockSalFlowService(version);
mockingFlowRegistryLookup();
verifyOutput(salFlowService.addFlow(mockedAddFlowInput));
}
Aggregations