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.base.Preconditions;
12 import com.google.common.util.concurrent.CheckedFuture;
13 import com.google.common.util.concurrent.FutureCallback;
14 import com.google.common.util.concurrent.Futures;
15 import com.google.common.util.concurrent.MoreExecutors;
16 import java.util.ArrayList;
17 import java.util.List;
18 import org.eclipse.osgi.framework.console.CommandInterpreter;
19 import org.eclipse.osgi.framework.console.CommandProvider;
20 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
21 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
22 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
23 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
24 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
76 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
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 DataBroker dataBroker;
84 private final BundleContext ctx;
85 private Group testGroup;
86 private Node testNode;
88 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
92 public void onSessionInitiated(ProviderContext session) {
93 dataBroker = session.getSALService(DataBroker.class);
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.setKey(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.setKey(new NodeKey(builder.getId()));
109 testNode = builder.build();
112 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
113 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.getKey());
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();
121 bucket.setBucketId(new BucketId((long) 12));
122 bucket.setKey(new BucketKey(new BucketId((long) 12)));
124 if (groupType == null) {
127 if (actionType == null) {
133 group.setGroupType(GroupTypes.GroupSelect);
136 group.setGroupType(GroupTypes.GroupAll);
139 group.setGroupType(GroupTypes.GroupIndirect);
142 group.setGroupType(GroupTypes.GroupFf);
148 switch (actionType) {
150 bucket.setAction(createPopVlanAction());
153 bucket.setAction(createPushVlanAction());
156 bucket.setAction(createPushMplsAction());
159 bucket.setAction(createPopMplsAction());
162 bucket.setAction(createPopPbbAction());
166 bucket.setAction(createPushPbbAction());
169 bucket.setAction(createCopyTtlInAction());
172 bucket.setAction(createCopyTtlOutAction());
175 bucket.setAction(createDecMplsTtlAction());
178 bucket.setAction(createDecNwTtlAction());
181 bucket.setAction(createSetQueueAction());
184 bucket.setAction(createSetNwTtlAction());
187 bucket.setAction(createGroupAction());
190 bucket.setAction(createSetMplsTtlAction());
193 bucket.setAction(createFloodOutputAction());
196 bucket.setAction(createAllOutputAction());
199 bucket.setAction(createNormalOutputAction());
202 bucket.setAction(creatTableOutputAction());
205 bucket.setAction(createControllerAction());
208 bucket.setAction(createLocalOutputAction());
211 bucket.setAction(createAnyOutputAction());
214 bucket.setAction(createInportOutputAction());
217 bucket.setAction(null);
220 bucket.setAction(createNonAppyOutputAction());
223 bucket.setAction(createNonAppyPushMplsAction());
226 bucket.setAction(createNonAppyPushPbbAction());
229 bucket.setAction(createNonAppyPushVlanAction());
235 if ("add".equals(groupMod)) {
236 bucket.setWatchGroup((long) 14);
237 bucket.setWatchPort((long) 1234);
238 bucket.setWeight(50);
240 bucket.setWatchGroup((long) 13);
241 bucket.setWatchPort((long) 134);
242 bucket.setWeight(30);
246 GroupKey key = new GroupKey(new GroupId(id));
248 // group.setInstall(false);
249 group.setGroupId(new GroupId(id));
250 group.setGroupName(ORIGINAL_GROUP_NAME);
251 group.setBarrier(false);
252 BucketsBuilder value = new BucketsBuilder();
253 List<Bucket> value1 = new ArrayList<>();
254 value1.add(bucket.build());
255 value.setBucket(value1);
256 group.setBuckets(value.build());
257 testGroup = group.build();
262 private List<Action> createPopVlanAction() {
263 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
264 ActionBuilder action = new ActionBuilder();
265 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
266 action.setKey(new ActionKey(0));
267 List<Action> actions = new ArrayList<>();
268 actions.add(action.build());
272 private List<Action> createPushVlanAction() {
273 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
274 vlan.setEthernetType(0x8100);
275 ActionBuilder action = new ActionBuilder();
276 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
277 List<Action> actions = new ArrayList<>();
278 actions.add(action.build());
282 private List<Action> createPushMplsAction() {
283 PushMplsActionBuilder push = new PushMplsActionBuilder();
284 push.setEthernetType(0x8847);
285 ActionBuilder action = new ActionBuilder();
286 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
287 List<Action> actions = new ArrayList<>();
288 actions.add(action.build());
292 private List<Action> createPopMplsAction() {
293 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
294 popMplsActionBuilder.setEthernetType(0XB);
295 ActionBuilder action = new ActionBuilder();
296 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
297 List<Action> actions = new ArrayList<>();
298 actions.add(action.build());
302 private List<Action> createPopPbbAction() {
303 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
304 ActionBuilder action = new ActionBuilder();
305 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
306 List<Action> actions = new ArrayList<>();
307 actions.add(action.build());
311 private List<Action> createPushPbbAction() {
312 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
313 pbb.setEthernetType(0x88E7);
314 ActionBuilder action = new ActionBuilder();
315 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
316 List<Action> actions = new ArrayList<>();
317 actions.add(action.build());
321 private List<Action> createSetMplsTtlAction() {
322 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
323 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
324 ActionBuilder action = new ActionBuilder();
325 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(
326 setMplsTtlActionBuilder.build()).build());
327 List<Action> actions = new ArrayList<>();
328 actions.add(action.build());
332 private List<Action> createSetNwTtlAction() {
333 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
334 setNwTtlActionBuilder.setNwTtl((short) 1);
335 ActionBuilder action = new ActionBuilder();
336 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
337 List<Action> actions = new ArrayList<>();
338 actions.add(action.build());
342 private List<Action> createSetQueueAction() {
343 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
344 setQueueActionBuilder.setQueueId(1L);
345 ActionBuilder action = new ActionBuilder();
346 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
347 action.setKey(new ActionKey(0));
348 List<Action> actions = new ArrayList<>();
349 actions.add(action.build());
354 private List<Action> createCopyTtlInAction() {
355 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
356 ActionBuilder action = new ActionBuilder();
357 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
358 List<Action> actions = new ArrayList<>();
359 actions.add(action.build());
363 private List<Action> createCopyTtlOutAction() {
364 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
365 ActionBuilder action = new ActionBuilder();
366 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
367 List<Action> actions = new ArrayList<>();
368 actions.add(action.build());
372 private List<Action> createDecMplsTtlAction() {
373 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
374 ActionBuilder action = new ActionBuilder();
375 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
376 List<Action> actions = new ArrayList<>();
377 actions.add(action.build());
381 private List<Action> createDecNwTtlAction() {
382 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
383 ActionBuilder action = new ActionBuilder();
384 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
386 ActionBuilder ab = new ActionBuilder();
387 OutputActionBuilder output = new OutputActionBuilder();
388 // output.setMaxLength(30);
389 Uri value = new Uri("2");
390 output.setOutputNodeConnector(value);
391 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
392 ab.setKey(new ActionKey(0));
395 List<Action> actions = new ArrayList<>();
396 actions.add(ab.build());
397 actions.add(action.build());
401 private List<Action> createFloodOutputAction() {
402 ActionBuilder ab = new ActionBuilder();
403 OutputActionBuilder output = new OutputActionBuilder();
404 output.setMaxLength(30);
405 Uri value = new Uri(OutputPortValues.FLOOD.toString());
406 output.setOutputNodeConnector(value);
407 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
408 ab.setKey(new ActionKey(0));
410 List<Action> actions = new ArrayList<>();
411 actions.add(ab.build());
415 private List<Action> createAllOutputAction() {
416 ActionBuilder ab = new ActionBuilder();
417 OutputActionBuilder output = new OutputActionBuilder();
418 output.setMaxLength(30);
419 Uri value = new Uri(OutputPortValues.ALL.toString());
420 output.setOutputNodeConnector(value);
421 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
422 ab.setKey(new ActionKey(0));
424 List<Action> actions = new ArrayList<>();
425 actions.add(ab.build());
429 private List<Action> createAnyOutputAction() {
430 ActionBuilder ab = new ActionBuilder();
431 OutputActionBuilder output = new OutputActionBuilder();
432 output.setMaxLength(30);
433 Uri value = new Uri(OutputPortValues.ANY.toString());
434 output.setOutputNodeConnector(value);
435 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
436 ab.setKey(new ActionKey(0));
438 List<Action> actions = new ArrayList<>();
439 actions.add(ab.build());
443 private List<Action> createNormalOutputAction() {
444 ActionBuilder ab = new ActionBuilder();
445 OutputActionBuilder output = new OutputActionBuilder();
446 output.setMaxLength(30);
447 Uri value = new Uri(OutputPortValues.NORMAL.toString());
448 output.setOutputNodeConnector(value);
449 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
450 ab.setKey(new ActionKey(0));
452 List<Action> actions = new ArrayList<>();
453 actions.add(ab.build());
457 private List<Action> createInportOutputAction() {
458 ActionBuilder ab = new ActionBuilder();
459 OutputActionBuilder output = new OutputActionBuilder();
460 output.setMaxLength(30);
461 Uri value = new Uri(OutputPortValues.INPORT.toString());
462 output.setOutputNodeConnector(value);
463 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
464 ab.setKey(new ActionKey(0));
466 List<Action> actions = new ArrayList<>();
467 actions.add(ab.build());
471 private List<Action> creatTableOutputAction() {
472 ActionBuilder ab = new ActionBuilder();
473 OutputActionBuilder output = new OutputActionBuilder();
474 output.setMaxLength(30);
475 Uri value = new Uri(OutputPortValues.TABLE.toString());
476 output.setOutputNodeConnector(value);
477 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
478 ab.setKey(new ActionKey(0));
480 List<Action> actions = new ArrayList<>();
481 actions.add(ab.build());
485 private List<Action> createControllerAction() {
486 ActionBuilder ab = new ActionBuilder();
487 OutputActionBuilder output = new OutputActionBuilder();
488 output.setMaxLength(30);
489 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
490 output.setOutputNodeConnector(value);
491 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
492 ab.setKey(new ActionKey(0));
494 List<Action> actions = new ArrayList<>();
495 actions.add(ab.build());
499 private List<Action> createLocalOutputAction() {
500 ActionBuilder ab = new ActionBuilder();
501 OutputActionBuilder output = new OutputActionBuilder();
502 output.setMaxLength(30);
503 Uri value = new Uri(OutputPortValues.LOCAL.toString());
504 output.setOutputNodeConnector(value);
505 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
506 ab.setKey(new ActionKey(0));
508 List<Action> actions = new ArrayList<>();
509 actions.add(ab.build());
513 private List<Action> createGroupAction() {
514 GroupActionBuilder groupActionB = new GroupActionBuilder();
515 groupActionB.setGroupId(1L);
516 groupActionB.setGroup("0");
517 ActionBuilder action = new ActionBuilder();
518 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
519 action.setKey(new ActionKey(0));
520 List<Action> actions = new ArrayList<>();
521 actions.add(action.build());
525 private static List<Action> createNonAppyOutputAction() {
526 ActionBuilder ab = new ActionBuilder();
527 OutputActionBuilder output = new OutputActionBuilder();
528 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
529 output.setOutputNodeConnector(value);
530 //output.setMaxLength(null);
531 output.setMaxLength(66000);
532 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
534 List<Action> actionList = new ArrayList<>();
535 actionList.add(ab.build());
539 private static List<Action> createNonAppyPushMplsAction() {
541 List<Action> actionList = new ArrayList<>();
542 ActionBuilder ab = new ActionBuilder();
543 PushMplsActionBuilder push = new PushMplsActionBuilder();
544 push.setEthernetType(0x8849);
545 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
546 actionList.add(ab.build());
550 private static List<Action> createNonAppyPushPbbAction() {
552 List<Action> actionList = new ArrayList<>();
553 ActionBuilder ab = new ActionBuilder();
554 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
555 pbb.setEthernetType(0x88E8);
556 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
557 actionList.add(ab.build());
563 private static List<Action> createNonAppyPushVlanAction() {
565 List<Action> actionList = new ArrayList<>();
566 ActionBuilder ab = new ActionBuilder();
567 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
568 vlan.setEthernetType(0x8101);
569 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
570 actionList.add(ab.build());
574 public void _removeGroup(final CommandInterpreter ci) {
575 String nref = ci.nextArgument();
578 ci.println("test node added");
581 ci.println("User node added" + nref);
582 createUserNode(nref);
584 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
585 ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
586 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.getKey())
587 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
588 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
589 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
590 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
592 public void onSuccess(Void notUsed) {
593 ci.println("Status of Group Data Loaded Transaction: success.");
597 public void onFailure(Throwable throwable) {
598 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
600 }, MoreExecutors.directExecutor());
603 public void _addGroup(CommandInterpreter ci) {
604 String nref = ci.nextArgument();
607 ci.println("test node added");
610 ci.println("User node added" + nref);
611 createUserNode(nref);
613 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
614 writeGroup(ci, testGroup);
617 private void writeGroup(final CommandInterpreter ci, Group group) {
618 ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
619 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
620 .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
621 .child(Group.class, new GroupKey(group.getGroupId()));
622 modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
623 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
624 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
625 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
627 public void onSuccess(Void notUsed) {
628 ci.println("Status of Group Data Loaded Transaction: success.");
632 public void onFailure(Throwable throwable) {
633 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
635 }, MoreExecutors.directExecutor());
638 public void _modifyGroup(CommandInterpreter ci) {
639 String nref = ci.nextArgument();
642 ci.println("test node added");
645 ci.println("User node added" + nref);
646 createUserNode(nref);
648 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
649 writeGroup(ci, group.build());
651 // group.setGroupName(originalGroupName);
652 // writeGroup(ci, group.build());
656 public String getHelp() {
657 StringBuilder help = new StringBuilder();
658 help.append("---FRM MD-SAL Group test module---\n");
659 help.append("\t addGroup <node id> - node ref\n");
660 help.append("\t modifyGroup <node id> - node ref\n");
661 help.append("\t removeGroup <node id> - node ref\n");
663 return help.toString();