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
9 package org.opendaylight.openflowplugin.test;
11 import com.google.common.util.concurrent.CheckedFuture;
12 import com.google.common.util.concurrent.FutureCallback;
13 import com.google.common.util.concurrent.Futures;
14 import java.util.ArrayList;
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.controller.md.sal.binding.api.DataBroker;
19 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
20 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
21 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
22 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
75 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
76 import org.osgi.framework.BundleContext;
78 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
80 private DataBroker dataBroker;
81 private ProviderContext pc;
82 private final BundleContext ctx;
83 private Group testGroup;
84 private Group testGroup2;
85 private Node testNode;
86 private final String originalGroupName = "Foo";
87 private final String updatedGroupName = "Bar";
89 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
93 public void onSessionInitiated(ProviderContext session) {
95 dataBroker = session.getSALService(DataBroker.class);
96 ctx.registerService(CommandProvider.class.getName(), this, null);
100 private void createUserNode(String nodeRef) {
101 NodeRef nodeOne = createNodeRef(nodeRef);
102 NodeBuilder builder = new NodeBuilder();
103 builder.setId(new NodeId(nodeRef));
104 builder.setKey(new NodeKey(builder.getId()));
105 testNode = builder.build();
108 private void createTestNode() {
109 NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
110 NodeBuilder builder = new NodeBuilder();
111 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
112 builder.setKey(new NodeKey(builder.getId()));
113 testNode = builder.build();
116 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
117 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.getKey());
120 private GroupBuilder createTestGroup(String actiontype, String type, String mod) {
121 // Sample data , committing to DataStore
123 String GroupType = type;
124 String ActionType = actiontype;
125 String Groupmod = mod;
128 GroupKey key = new GroupKey(new GroupId(id));
129 GroupBuilder group = new GroupBuilder();
130 BucketBuilder bucket = new BucketBuilder();
131 bucket.setBucketId(new BucketId((long) 12));
132 bucket.setKey(new BucketKey(new BucketId((long) 12)));
134 if (GroupType == null) {
137 if (ActionType == null) {
143 group.setGroupType(GroupTypes.GroupSelect);
146 group.setGroupType(GroupTypes.GroupAll);
149 group.setGroupType(GroupTypes.GroupIndirect);
152 group.setGroupType(GroupTypes.GroupFf);
156 switch (ActionType) {
158 bucket.setAction(createPopVlanAction());
161 bucket.setAction(createPushVlanAction());
164 bucket.setAction(createPushMplsAction());
167 bucket.setAction(createPopMplsAction());
170 bucket.setAction(createPopPbbAction());
173 bucket.setAction(createPushPbbAction());
176 bucket.setAction(createPushPbbAction());
179 bucket.setAction(createCopyTtlInAction());
182 bucket.setAction(createCopyTtlOutAction());
185 bucket.setAction(createDecMplsTtlAction());
188 bucket.setAction(createDecNwTtlAction());
191 bucket.setAction(createSetQueueAction());
194 bucket.setAction(createSetNwTtlAction());
197 bucket.setAction(createGroupAction());
200 bucket.setAction(createSetMplsTtlAction());
203 bucket.setAction(createFloodOutputAction());
206 bucket.setAction(createAllOutputAction());
209 bucket.setAction(createNormalOutputAction());
212 bucket.setAction(creatTableOutputAction());
215 bucket.setAction(createControllerAction());
218 bucket.setAction(createLocalOutputAction());
221 bucket.setAction(createAnyOutputAction());
224 bucket.setAction(createInportOutputAction());
227 bucket.setAction(null);
230 bucket.setAction(createNonAppyOutputAction());
233 bucket.setAction(createNonAppyPushMplsAction());
236 bucket.setAction(createNonAppyPushPbbAction());
239 bucket.setAction(createNonAppyPushVlanAction());
244 if (Groupmod == "add") {
245 bucket.setWatchGroup((long) 14);
246 bucket.setWatchPort((long) 1234);
247 bucket.setWeight(50);
249 bucket.setWatchGroup((long) 13);
250 bucket.setWatchPort((long) 134);
251 bucket.setWeight(30);
254 // group.setInstall(false);
255 group.setGroupId(new GroupId(id));
256 group.setGroupName(originalGroupName);
257 group.setBarrier(false);
258 BucketsBuilder value = new BucketsBuilder();
259 List<Bucket> value1 = new ArrayList<Bucket>();
260 value1.add(bucket.build());
261 value.setBucket(value1);
262 group.setBuckets(value.build());
263 testGroup = group.build();
268 private List<Action> createPopVlanAction() {
269 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
270 ActionBuilder action = new ActionBuilder();
271 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
272 action.setKey(new ActionKey(0));
273 List<Action> actions = new ArrayList<Action>();
274 actions.add(action.build());
278 private List<Action> createPushVlanAction() {
279 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
280 vlan.setEthernetType(0x8100);
281 ActionBuilder action = new ActionBuilder();
282 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
283 List<Action> actions = new ArrayList<Action>();
284 actions.add(action.build());
288 private List<Action> createPushMplsAction() {
289 PushMplsActionBuilder push = new PushMplsActionBuilder();
290 push.setEthernetType(0x8847);
291 ActionBuilder action = new ActionBuilder();
292 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
293 List<Action> actions = new ArrayList<Action>();
294 actions.add(action.build());
298 private List<Action> createPopMplsAction() {
299 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
300 popMplsActionBuilder.setEthernetType(0XB);
301 ActionBuilder action = new ActionBuilder();
302 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
303 List<Action> actions = new ArrayList<Action>();
304 actions.add(action.build());
308 private List<Action> createPopPbbAction() {
309 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
310 ActionBuilder action = new ActionBuilder();
311 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
312 List<Action> actions = new ArrayList<Action>();
313 actions.add(action.build());
317 private List<Action> createPushPbbAction() {
318 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
319 pbb.setEthernetType(0x88E7);
320 ActionBuilder action = new ActionBuilder();
321 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
322 List<Action> actions = new ArrayList<Action>();
323 actions.add(action.build());
327 private List<Action> createSetMplsTtlAction() {
328 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
329 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
330 ActionBuilder action = new ActionBuilder();
331 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
332 List<Action> actions = new ArrayList<Action>();
333 actions.add(action.build());
337 private List<Action> createSetNwTtlAction() {
338 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
339 setNwTtlActionBuilder.setNwTtl((short) 1);
340 ActionBuilder action = new ActionBuilder();
341 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
342 List<Action> actions = new ArrayList<Action>();
343 actions.add(action.build());
347 private List<Action> createSetQueueAction() {
348 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
349 setQueueActionBuilder.setQueueId(1L);
350 ActionBuilder action = new ActionBuilder();
351 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
352 action.setKey(new ActionKey(0));
353 List<Action> actions = new ArrayList<Action>();
354 actions.add(action.build());
359 private List<Action> createCopyTtlInAction() {
360 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
361 ActionBuilder action = new ActionBuilder();
362 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
363 List<Action> actions = new ArrayList<Action>();
364 actions.add(action.build());
368 private List<Action> createCopyTtlOutAction() {
369 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
370 ActionBuilder action = new ActionBuilder();
371 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
372 List<Action> actions = new ArrayList<Action>();
373 actions.add(action.build());
377 private List<Action> createDecMplsTtlAction() {
378 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
379 ActionBuilder action = new ActionBuilder();
380 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
381 List<Action> actions = new ArrayList<Action>();
382 actions.add(action.build());
386 private List<Action> createDecNwTtlAction() {
387 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
388 ActionBuilder action = new ActionBuilder();
389 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
390 List<Action> actions = new ArrayList<Action>();
392 ActionBuilder ab = new ActionBuilder();
393 OutputActionBuilder output = new OutputActionBuilder();
394 // output.setMaxLength(30);
395 Uri value = new Uri("2");
396 output.setOutputNodeConnector(value);
397 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
398 ab.setKey(new ActionKey(0));
400 actions.add(ab.build());
401 actions.add(action.build());
405 private List<Action> createFloodOutputAction() {
407 List<Action> actions = new ArrayList<Action>();
408 ActionBuilder ab = new ActionBuilder();
409 OutputActionBuilder output = new OutputActionBuilder();
410 output.setMaxLength(30);
411 Uri value = new Uri(OutputPortValues.FLOOD.toString());
412 output.setOutputNodeConnector(value);
413 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
414 ab.setKey(new ActionKey(0));
415 actions.add(ab.build());
419 private List<Action> createAllOutputAction() {
421 List<Action> actions = new ArrayList<Action>();
422 ActionBuilder ab = new ActionBuilder();
423 OutputActionBuilder output = new OutputActionBuilder();
424 output.setMaxLength(30);
425 Uri value = new Uri(OutputPortValues.ALL.toString());
426 output.setOutputNodeConnector(value);
427 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
428 ab.setKey(new ActionKey(0));
429 actions.add(ab.build());
433 private List<Action> createAnyOutputAction() {
435 List<Action> actions = new ArrayList<Action>();
436 ActionBuilder ab = new ActionBuilder();
437 OutputActionBuilder output = new OutputActionBuilder();
438 output.setMaxLength(30);
439 Uri value = new Uri(OutputPortValues.ANY.toString());
440 output.setOutputNodeConnector(value);
441 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
442 ab.setKey(new ActionKey(0));
443 actions.add(ab.build());
447 private List<Action> createNormalOutputAction() {
449 List<Action> actions = new ArrayList<Action>();
450 ActionBuilder ab = new ActionBuilder();
451 OutputActionBuilder output = new OutputActionBuilder();
452 output.setMaxLength(30);
453 Uri value = new Uri(OutputPortValues.NORMAL.toString());
454 output.setOutputNodeConnector(value);
455 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
456 ab.setKey(new ActionKey(0));
457 actions.add(ab.build());
461 private List<Action> createInportOutputAction() {
463 List<Action> actions = new ArrayList<Action>();
464 ActionBuilder ab = new ActionBuilder();
465 OutputActionBuilder output = new OutputActionBuilder();
466 output.setMaxLength(30);
467 Uri value = new Uri(OutputPortValues.INPORT.toString());
468 output.setOutputNodeConnector(value);
469 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
470 ab.setKey(new ActionKey(0));
471 actions.add(ab.build());
475 private List<Action> creatTableOutputAction() {
477 List<Action> actions = new ArrayList<Action>();
478 ActionBuilder ab = new ActionBuilder();
479 OutputActionBuilder output = new OutputActionBuilder();
480 output.setMaxLength(30);
481 Uri value = new Uri(OutputPortValues.TABLE.toString());
482 output.setOutputNodeConnector(value);
483 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
484 ab.setKey(new ActionKey(0));
485 actions.add(ab.build());
489 private List<Action> createControllerAction() {
491 List<Action> actions = new ArrayList<Action>();
492 ActionBuilder ab = new ActionBuilder();
493 OutputActionBuilder output = new OutputActionBuilder();
494 output.setMaxLength(30);
495 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
496 output.setOutputNodeConnector(value);
497 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
498 ab.setKey(new ActionKey(0));
499 actions.add(ab.build());
503 private List<Action> createLocalOutputAction() {
505 List<Action> actions = new ArrayList<Action>();
506 ActionBuilder ab = new ActionBuilder();
507 OutputActionBuilder output = new OutputActionBuilder();
508 output.setMaxLength(30);
509 Uri value = new Uri(OutputPortValues.LOCAL.toString());
510 output.setOutputNodeConnector(value);
511 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
512 ab.setKey(new ActionKey(0));
513 actions.add(ab.build());
517 private List<Action> createGroupAction() {
519 GroupActionBuilder groupActionB = new GroupActionBuilder();
520 groupActionB.setGroupId(1L);
521 groupActionB.setGroup("0");
522 ActionBuilder action = new ActionBuilder();
523 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
524 action.setKey(new ActionKey(0));
525 List<Action> actions = new ArrayList<Action>();
526 actions.add(action.build());
530 private static List<Action> createNonAppyOutputAction() {
532 List<Action> actionList = new ArrayList<Action>();
533 ActionBuilder ab = new ActionBuilder();
534 OutputActionBuilder output = new OutputActionBuilder();
535 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
536 output.setOutputNodeConnector(value);
537 //output.setMaxLength(null);
538 output.setMaxLength(66000);
539 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
540 actionList.add(ab.build());
544 private static List<Action> createNonAppyPushMplsAction() {
546 List<Action> actionList = new ArrayList<Action>();
547 ActionBuilder ab = new ActionBuilder();
548 PushMplsActionBuilder push = new PushMplsActionBuilder();
549 push.setEthernetType(0x8849);
550 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
551 actionList.add(ab.build());
556 private static List<Action> createNonAppyPushPbbAction() {
558 List<Action> actionList = new ArrayList<Action>();
559 ActionBuilder ab = new ActionBuilder();
560 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
561 pbb.setEthernetType(0x88E8);
562 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
563 actionList.add(ab.build());
569 private static List<Action> createNonAppyPushVlanAction() {
571 List<Action> actionList = new ArrayList<Action>();
572 ActionBuilder ab = new ActionBuilder();
573 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
574 vlan.setEthernetType(0x8101);
575 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
576 actionList.add(ab.build());
582 private GroupBuilder createTestRemoveGroup() {
584 GroupKey key = new GroupKey(new GroupId(id));
585 GroupBuilder group = new GroupBuilder();
586 /* BucketBuilder bucket = new BucketBuilder();
587 bucket.setBucketId(new BucketId((long) 12));
588 bucket.setKey(new BucketKey(new BucketId((long) 12))); */
590 // group.setInstall(false);
592 group.setGroupId(new GroupId(id));
593 /* PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
594 ActionBuilder action = new ActionBuilder();
595 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
596 List<Action> actions = new ArrayList<Action>();
597 actions.add(action.build()); */
598 /* bucket.setAction(actions);
599 bucket.setWatchGroup((long) 14);
600 bucket.setWatchPort((long) 1234);
601 bucket.setWeight(15); */
602 // group.setGroupType(GroupTypes.GroupSelect);
603 // group.setGroupName(originalGroupName);
604 // group.setBarrier(false);
605 // BucketsBuilder value = new BucketsBuilder();
606 // List<Bucket> value1 = new ArrayList<Bucket>();
607 // value1.add(bucket.build());
608 // value.setBucket(value1);
609 // group.setBuckets(value.build());
610 testGroup2 = group.build();
615 public void _removeGroup(final CommandInterpreter ci) {
616 String nref = ci.nextArgument();
619 ci.println("test node added");
622 ci.println("User node added" + nref);
623 createUserNode(nref);
625 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
626 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
627 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.getKey())
628 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
629 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
630 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
631 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
633 public void onSuccess(Void aVoid) {
634 ci.println("Status of Group Data Loaded Transaction: success.");
638 public void onFailure(Throwable throwable) {
639 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
644 public void _addGroup(CommandInterpreter ci) {
645 String nref = ci.nextArgument();
648 ci.println("test node added");
651 ci.println("User node added" + nref);
652 createUserNode(nref);
654 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
655 writeGroup(ci, testGroup);
658 private void writeGroup(final CommandInterpreter ci, Group group) {
659 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
660 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
661 .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
662 .child(Group.class, new GroupKey(group.getGroupId()));
663 modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
664 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
665 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
666 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
668 public void onSuccess(Void aVoid) {
669 ci.println("Status of Group Data Loaded Transaction: success.");
673 public void onFailure(Throwable throwable) {
674 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
679 public void _modifyGroup(CommandInterpreter ci) {
680 String nref = ci.nextArgument();
683 ci.println("test node added");
686 ci.println("User node added" + nref);
687 createUserNode(nref);
689 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
690 writeGroup(ci, group.build());
692 // group.setGroupName(originalGroupName);
693 // writeGroup(ci, group.build());
697 public String getHelp() {
698 StringBuilder help = new StringBuilder();
699 help.append("---FRM MD-SAL Group test module---\n");
700 help.append("\t addGroup <node id> - node ref\n");
701 help.append("\t modifyGroup <node id> - node ref\n");
702 help.append("\t removeGroup <node id> - node ref\n");
704 return help.toString();
707 private static NodeRef createNodeRef(String string) {
708 NodeKey key = new NodeKey(new NodeId(string));
709 InstanceIdentifier<Node> path =
710 InstanceIdentifier.create(Nodes.class).child(Node.class, key);
712 return new NodeRef(path);