2 * Copyright (c) 2013, 2015 IBM Corporation and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.test;
10 import com.google.common.base.Preconditions;
11 import com.google.common.util.concurrent.FutureCallback;
12 import com.google.common.util.concurrent.MoreExecutors;
13 import java.util.ArrayList;
14 import java.util.Collections;
15 import java.util.List;
16 import org.eclipse.osgi.framework.console.CommandInterpreter;
17 import org.eclipse.osgi.framework.console.CommandProvider;
18 import org.opendaylight.mdsal.binding.api.DataBroker;
19 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
20 import org.opendaylight.mdsal.common.api.CommitInfo;
21 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
73 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
74 import org.opendaylight.yangtools.yang.common.Uint16;
75 import org.opendaylight.yangtools.yang.common.Uint32;
76 import org.opendaylight.yangtools.yang.common.Uint8;
77 import org.osgi.framework.BundleContext;
79 @SuppressWarnings("checkstyle:MethodName")
80 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
81 private static final String ORIGINAL_GROUP_NAME = "Foo";
83 private final DataBroker dataBroker;
84 private final BundleContext ctx;
85 private Group testGroup;
86 private Node testNode;
88 public OpenflowpluginGroupTestCommandProvider(DataBroker dataBroker, BundleContext ctx) {
89 this.dataBroker = dataBroker;
94 ctx.registerService(CommandProvider.class.getName(), this, null);
98 private void createUserNode(String nodeRef) {
99 NodeBuilder builder = new NodeBuilder();
100 builder.setId(new NodeId(nodeRef));
101 builder.withKey(new NodeKey(builder.getId()));
102 testNode = builder.build();
105 private void createTestNode() {
106 NodeBuilder builder = new NodeBuilder();
107 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
108 builder.withKey(new NodeKey(builder.getId()));
109 testNode = builder.build();
112 private static InstanceIdentifier<Node> nodeToInstanceId(Node node) {
113 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key());
116 private GroupBuilder createTestGroup(String actionType, String groupType, String groupMod) {
117 // Sample data , committing to DataStore
119 GroupBuilder group = new GroupBuilder();
120 BucketBuilder bucket = new BucketBuilder().withKey(new BucketKey(new BucketId(Uint32.valueOf(12))));
122 if (groupType == null) {
125 if (actionType == null) {
131 group.setGroupType(GroupTypes.GroupSelect);
134 group.setGroupType(GroupTypes.GroupAll);
137 group.setGroupType(GroupTypes.GroupIndirect);
140 group.setGroupType(GroupTypes.GroupFf);
146 switch (actionType) {
148 bucket.setAction(createPopVlanAction());
151 bucket.setAction(createPushVlanAction());
154 bucket.setAction(createPushMplsAction());
157 bucket.setAction(createPopMplsAction());
160 bucket.setAction(createPopPbbAction());
164 bucket.setAction(createPushPbbAction());
167 bucket.setAction(createCopyTtlInAction());
170 bucket.setAction(createCopyTtlOutAction());
173 bucket.setAction(createDecMplsTtlAction());
176 bucket.setAction(createDecNwTtlAction());
179 bucket.setAction(createSetQueueAction());
182 bucket.setAction(createSetNwTtlAction());
185 bucket.setAction(createGroupAction());
188 bucket.setAction(createSetMplsTtlAction());
191 bucket.setAction(createFloodOutputAction());
194 bucket.setAction(createAllOutputAction());
197 bucket.setAction(createNormalOutputAction());
200 bucket.setAction(creatTableOutputAction());
203 bucket.setAction(createControllerAction());
206 bucket.setAction(createLocalOutputAction());
209 bucket.setAction(createAnyOutputAction());
212 bucket.setAction(createInportOutputAction());
215 bucket.setAction(Collections.emptyList());
218 bucket.setAction(createNonAppyOutputAction());
221 bucket.setAction(createNonAppyPushMplsAction());
224 bucket.setAction(createNonAppyPushPbbAction());
227 bucket.setAction(createNonAppyPushVlanAction());
233 if ("add".equals(groupMod)) {
234 bucket.setWatchGroup(Uint32.valueOf(14));
235 bucket.setWatchPort(Uint32.valueOf(1234));
236 bucket.setWeight(Uint16.valueOf(50));
238 bucket.setWatchGroup(Uint32.valueOf(13));
239 bucket.setWatchPort(Uint32.valueOf(134));
240 bucket.setWeight(Uint16.valueOf(30));
243 GroupKey key = new GroupKey(new GroupId(Uint32.ONE));
245 // group.setInstall(false);
246 group.setGroupName(ORIGINAL_GROUP_NAME);
247 group.setBarrier(false);
248 BucketsBuilder value = new BucketsBuilder();
249 List<Bucket> value1 = new ArrayList<>();
250 value1.add(bucket.build());
251 value.setBucket(value1);
252 group.setBuckets(value.build());
253 testGroup = group.build();
258 private static List<Action> createPopVlanAction() {
259 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
260 ActionBuilder action = new ActionBuilder();
261 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
262 action.withKey(new ActionKey(0));
263 List<Action> actions = new ArrayList<>();
264 actions.add(action.build());
268 private static List<Action> createPushVlanAction() {
269 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
270 vlan.setEthernetType(Uint16.valueOf(0x8100));
271 ActionBuilder action = new ActionBuilder();
272 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
273 List<Action> actions = new ArrayList<>();
274 actions.add(action.build());
278 private static List<Action> createPushMplsAction() {
279 PushMplsActionBuilder push = new PushMplsActionBuilder();
280 push.setEthernetType(Uint16.valueOf(0x8847));
281 ActionBuilder action = new ActionBuilder();
282 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
283 List<Action> actions = new ArrayList<>();
284 actions.add(action.build());
288 private static List<Action> createPopMplsAction() {
289 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
290 popMplsActionBuilder.setEthernetType(Uint16.valueOf(0XB));
291 ActionBuilder action = new ActionBuilder();
292 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
293 List<Action> actions = new ArrayList<>();
294 actions.add(action.build());
298 private static List<Action> createPopPbbAction() {
299 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
300 ActionBuilder action = new ActionBuilder();
301 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
302 List<Action> actions = new ArrayList<>();
303 actions.add(action.build());
307 private static List<Action> createPushPbbAction() {
308 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
309 pbb.setEthernetType(Uint16.valueOf(0x88E7));
310 ActionBuilder action = new ActionBuilder();
311 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
312 List<Action> actions = new ArrayList<>();
313 actions.add(action.build());
317 private static List<Action> createSetMplsTtlAction() {
318 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
319 setMplsTtlActionBuilder.setMplsTtl(Uint8.ONE);
320 ActionBuilder action = new ActionBuilder();
321 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(
322 setMplsTtlActionBuilder.build()).build());
323 List<Action> actions = new ArrayList<>();
324 actions.add(action.build());
328 private static List<Action> createSetNwTtlAction() {
329 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
330 setNwTtlActionBuilder.setNwTtl(Uint8.ONE);
331 ActionBuilder action = new ActionBuilder();
332 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
333 List<Action> actions = new ArrayList<>();
334 actions.add(action.build());
338 private static List<Action> createSetQueueAction() {
339 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
340 setQueueActionBuilder.setQueueId(Uint32.ONE);
341 ActionBuilder action = new ActionBuilder();
342 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
343 action.withKey(new ActionKey(0));
344 List<Action> actions = new ArrayList<>();
345 actions.add(action.build());
350 private static List<Action> createCopyTtlInAction() {
351 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
352 ActionBuilder action = new ActionBuilder();
353 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
354 List<Action> actions = new ArrayList<>();
355 actions.add(action.build());
359 private static List<Action> createCopyTtlOutAction() {
360 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
361 ActionBuilder action = new ActionBuilder();
362 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
363 List<Action> actions = new ArrayList<>();
364 actions.add(action.build());
368 private static List<Action> createDecMplsTtlAction() {
369 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
370 ActionBuilder action = new ActionBuilder();
371 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
372 List<Action> actions = new ArrayList<>();
373 actions.add(action.build());
377 private static List<Action> createDecNwTtlAction() {
378 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
379 ActionBuilder action = new ActionBuilder();
380 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
382 ActionBuilder ab = new ActionBuilder();
383 OutputActionBuilder output = new OutputActionBuilder();
384 // output.setMaxLength(30);
385 Uri value = new Uri("2");
386 output.setOutputNodeConnector(value);
387 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
388 ab.withKey(new ActionKey(0));
391 List<Action> actions = new ArrayList<>();
392 actions.add(ab.build());
393 actions.add(action.build());
397 private static List<Action> createFloodOutputAction() {
398 ActionBuilder ab = new ActionBuilder();
399 OutputActionBuilder output = new OutputActionBuilder();
400 output.setMaxLength(Uint16.valueOf(30));
401 Uri value = new Uri(OutputPortValues.FLOOD.toString());
402 output.setOutputNodeConnector(value);
403 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
404 ab.withKey(new ActionKey(0));
406 List<Action> actions = new ArrayList<>();
407 actions.add(ab.build());
411 private static List<Action> createAllOutputAction() {
412 ActionBuilder ab = new ActionBuilder();
413 OutputActionBuilder output = new OutputActionBuilder();
414 output.setMaxLength(Uint16.valueOf(30));
415 Uri value = new Uri(OutputPortValues.ALL.toString());
416 output.setOutputNodeConnector(value);
417 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
418 ab.withKey(new ActionKey(0));
420 List<Action> actions = new ArrayList<>();
421 actions.add(ab.build());
425 private static List<Action> createAnyOutputAction() {
426 ActionBuilder ab = new ActionBuilder();
427 OutputActionBuilder output = new OutputActionBuilder();
428 output.setMaxLength(Uint16.valueOf(30));
429 Uri value = new Uri(OutputPortValues.ANY.toString());
430 output.setOutputNodeConnector(value);
431 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
432 ab.withKey(new ActionKey(0));
434 List<Action> actions = new ArrayList<>();
435 actions.add(ab.build());
439 private static List<Action> createNormalOutputAction() {
440 ActionBuilder ab = new ActionBuilder();
441 OutputActionBuilder output = new OutputActionBuilder();
442 output.setMaxLength(Uint16.valueOf(30));
443 Uri value = new Uri(OutputPortValues.NORMAL.toString());
444 output.setOutputNodeConnector(value);
445 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
446 ab.withKey(new ActionKey(0));
448 List<Action> actions = new ArrayList<>();
449 actions.add(ab.build());
453 private static List<Action> createInportOutputAction() {
454 ActionBuilder ab = new ActionBuilder();
455 OutputActionBuilder output = new OutputActionBuilder();
456 output.setMaxLength(Uint16.valueOf(30));
457 Uri value = new Uri(OutputPortValues.INPORT.toString());
458 output.setOutputNodeConnector(value);
459 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
460 ab.withKey(new ActionKey(0));
462 List<Action> actions = new ArrayList<>();
463 actions.add(ab.build());
467 private static List<Action> creatTableOutputAction() {
468 ActionBuilder ab = new ActionBuilder();
469 OutputActionBuilder output = new OutputActionBuilder();
470 output.setMaxLength(Uint16.valueOf(30));
471 Uri value = new Uri(OutputPortValues.TABLE.toString());
472 output.setOutputNodeConnector(value);
473 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
474 ab.withKey(new ActionKey(0));
476 List<Action> actions = new ArrayList<>();
477 actions.add(ab.build());
481 private static List<Action> createControllerAction() {
482 ActionBuilder ab = new ActionBuilder();
483 OutputActionBuilder output = new OutputActionBuilder();
484 output.setMaxLength(Uint16.valueOf(30));
485 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
486 output.setOutputNodeConnector(value);
487 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
488 ab.withKey(new ActionKey(0));
490 List<Action> actions = new ArrayList<>();
491 actions.add(ab.build());
495 private static List<Action> createLocalOutputAction() {
496 ActionBuilder ab = new ActionBuilder();
497 OutputActionBuilder output = new OutputActionBuilder();
498 output.setMaxLength(Uint16.valueOf(30));
499 Uri value = new Uri(OutputPortValues.LOCAL.toString());
500 output.setOutputNodeConnector(value);
501 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
502 ab.withKey(new ActionKey(0));
504 List<Action> actions = new ArrayList<>();
505 actions.add(ab.build());
509 private static List<Action> createGroupAction() {
510 GroupActionBuilder groupActionB = new GroupActionBuilder();
511 groupActionB.setGroupId(Uint32.ONE);
512 groupActionB.setGroup("0");
513 ActionBuilder action = new ActionBuilder();
514 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
515 action.withKey(new ActionKey(0));
516 List<Action> actions = new ArrayList<>();
517 actions.add(action.build());
521 private static List<Action> createNonAppyOutputAction() {
522 ActionBuilder ab = new ActionBuilder();
523 OutputActionBuilder output = new OutputActionBuilder();
524 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
525 output.setOutputNodeConnector(value);
526 //output.setMaxLength(null);
527 output.setMaxLength(Uint16.valueOf(66000));
528 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
530 List<Action> actionList = new ArrayList<>();
531 actionList.add(ab.build());
535 private static List<Action> createNonAppyPushMplsAction() {
536 List<Action> actionList = new ArrayList<>();
537 ActionBuilder ab = new ActionBuilder();
538 PushMplsActionBuilder push = new PushMplsActionBuilder();
539 push.setEthernetType(Uint16.valueOf(0x8849));
540 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
541 actionList.add(ab.build());
545 private static List<Action> createNonAppyPushPbbAction() {
546 List<Action> actionList = new ArrayList<>();
547 ActionBuilder ab = new ActionBuilder();
548 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
549 pbb.setEthernetType(Uint16.valueOf(0x88E8));
550 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
551 actionList.add(ab.build());
555 private static List<Action> createNonAppyPushVlanAction() {
556 List<Action> actionList = new ArrayList<>();
557 ActionBuilder ab = new ActionBuilder();
558 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
559 vlan.setEthernetType(Uint16.valueOf(0x8101));
560 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
561 actionList.add(ab.build());
565 public void _removeGroup(final CommandInterpreter ci) {
566 String nref = ci.nextArgument();
569 ci.println("test node added");
572 ci.println("User node added" + nref);
573 createUserNode(nref);
575 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
576 ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
577 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key())
578 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
579 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
580 modification.commit().addCallback(new FutureCallback<CommitInfo>() {
582 public void onSuccess(CommitInfo notUsed) {
583 ci.println("Status of Group Data Loaded Transaction: success.");
587 public void onFailure(Throwable throwable) {
588 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
590 }, MoreExecutors.directExecutor());
593 public void _addGroup(CommandInterpreter ci) {
594 String nref = ci.nextArgument();
597 ci.println("test node added");
600 ci.println("User node added" + nref);
601 createUserNode(nref);
603 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
604 writeGroup(ci, testGroup);
607 private void writeGroup(final CommandInterpreter ci, Group group) {
608 ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
609 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
610 .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class)
611 .child(Group.class, new GroupKey(group.getGroupId()));
612 modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode),
614 modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, path1, group);
615 modification.commit().addCallback(new FutureCallback<CommitInfo>() {
617 public void onSuccess(CommitInfo notUsed) {
618 ci.println("Status of Group Data Loaded Transaction: success.");
622 public void onFailure(Throwable throwable) {
623 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
625 }, MoreExecutors.directExecutor());
628 public void _modifyGroup(CommandInterpreter ci) {
629 String nref = ci.nextArgument();
632 ci.println("test node added");
635 ci.println("User node added" + nref);
636 createUserNode(nref);
638 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
639 writeGroup(ci, group.build());
641 // group.setGroupName(originalGroupName);
642 // writeGroup(ci, group.build());
646 public String getHelp() {
647 StringBuilder help = new StringBuilder();
648 help.append("---FRM MD-SAL Group test module---\n");
649 help.append("\t addGroup <node id> - node ref\n");
650 help.append("\t modifyGroup <node id> - node ref\n");
651 help.append("\t removeGroup <node id> - node ref\n");
653 return help.toString();