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.List;
15 import org.eclipse.osgi.framework.console.CommandInterpreter;
16 import org.eclipse.osgi.framework.console.CommandProvider;
17 import org.opendaylight.mdsal.binding.api.DataBroker;
18 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
19 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
71 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
72 import org.osgi.framework.BundleContext;
74 @SuppressWarnings("checkstyle:MethodName")
75 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
76 private static final String ORIGINAL_GROUP_NAME = "Foo";
78 private final DataBroker dataBroker;
79 private final BundleContext ctx;
80 private Group testGroup;
81 private Node testNode;
83 public OpenflowpluginGroupTestCommandProvider(DataBroker dataBroker, BundleContext ctx) {
84 this.dataBroker = dataBroker;
89 ctx.registerService(CommandProvider.class.getName(), this, null);
93 private void createUserNode(String nodeRef) {
94 NodeBuilder builder = new NodeBuilder();
95 builder.setId(new NodeId(nodeRef));
96 builder.withKey(new NodeKey(builder.getId()));
97 testNode = builder.build();
100 private void createTestNode() {
101 NodeBuilder builder = new NodeBuilder();
102 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
103 builder.withKey(new NodeKey(builder.getId()));
104 testNode = builder.build();
107 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
108 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key());
111 private GroupBuilder createTestGroup(String actionType, String groupType, String groupMod) {
112 // Sample data , committing to DataStore
114 GroupBuilder group = new GroupBuilder();
115 BucketBuilder bucket = new BucketBuilder();
116 bucket.setBucketId(new BucketId((long) 12));
117 bucket.withKey(new BucketKey(new BucketId((long) 12)));
119 if (groupType == null) {
122 if (actionType == null) {
128 group.setGroupType(GroupTypes.GroupSelect);
131 group.setGroupType(GroupTypes.GroupAll);
134 group.setGroupType(GroupTypes.GroupIndirect);
137 group.setGroupType(GroupTypes.GroupFf);
143 switch (actionType) {
145 bucket.setAction(createPopVlanAction());
148 bucket.setAction(createPushVlanAction());
151 bucket.setAction(createPushMplsAction());
154 bucket.setAction(createPopMplsAction());
157 bucket.setAction(createPopPbbAction());
161 bucket.setAction(createPushPbbAction());
164 bucket.setAction(createCopyTtlInAction());
167 bucket.setAction(createCopyTtlOutAction());
170 bucket.setAction(createDecMplsTtlAction());
173 bucket.setAction(createDecNwTtlAction());
176 bucket.setAction(createSetQueueAction());
179 bucket.setAction(createSetNwTtlAction());
182 bucket.setAction(createGroupAction());
185 bucket.setAction(createSetMplsTtlAction());
188 bucket.setAction(createFloodOutputAction());
191 bucket.setAction(createAllOutputAction());
194 bucket.setAction(createNormalOutputAction());
197 bucket.setAction(creatTableOutputAction());
200 bucket.setAction(createControllerAction());
203 bucket.setAction(createLocalOutputAction());
206 bucket.setAction(createAnyOutputAction());
209 bucket.setAction(createInportOutputAction());
212 bucket.setAction(null);
215 bucket.setAction(createNonAppyOutputAction());
218 bucket.setAction(createNonAppyPushMplsAction());
221 bucket.setAction(createNonAppyPushPbbAction());
224 bucket.setAction(createNonAppyPushVlanAction());
230 if ("add".equals(groupMod)) {
231 bucket.setWatchGroup((long) 14);
232 bucket.setWatchPort((long) 1234);
233 bucket.setWeight(50);
235 bucket.setWatchGroup((long) 13);
236 bucket.setWatchPort((long) 134);
237 bucket.setWeight(30);
241 GroupKey key = new GroupKey(new GroupId(id));
243 // group.setInstall(false);
244 group.setGroupId(new GroupId(id));
245 group.setGroupName(ORIGINAL_GROUP_NAME);
246 group.setBarrier(false);
247 BucketsBuilder value = new BucketsBuilder();
248 List<Bucket> value1 = new ArrayList<>();
249 value1.add(bucket.build());
250 value.setBucket(value1);
251 group.setBuckets(value.build());
252 testGroup = group.build();
257 private List<Action> createPopVlanAction() {
258 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
259 ActionBuilder action = new ActionBuilder();
260 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
261 action.withKey(new ActionKey(0));
262 List<Action> actions = new ArrayList<>();
263 actions.add(action.build());
267 private List<Action> createPushVlanAction() {
268 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
269 vlan.setEthernetType(0x8100);
270 ActionBuilder action = new ActionBuilder();
271 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
272 List<Action> actions = new ArrayList<>();
273 actions.add(action.build());
277 private List<Action> createPushMplsAction() {
278 PushMplsActionBuilder push = new PushMplsActionBuilder();
279 push.setEthernetType(0x8847);
280 ActionBuilder action = new ActionBuilder();
281 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
282 List<Action> actions = new ArrayList<>();
283 actions.add(action.build());
287 private List<Action> createPopMplsAction() {
288 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
289 popMplsActionBuilder.setEthernetType(0XB);
290 ActionBuilder action = new ActionBuilder();
291 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
292 List<Action> actions = new ArrayList<>();
293 actions.add(action.build());
297 private List<Action> createPopPbbAction() {
298 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
299 ActionBuilder action = new ActionBuilder();
300 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
301 List<Action> actions = new ArrayList<>();
302 actions.add(action.build());
306 private List<Action> createPushPbbAction() {
307 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
308 pbb.setEthernetType(0x88E7);
309 ActionBuilder action = new ActionBuilder();
310 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
311 List<Action> actions = new ArrayList<>();
312 actions.add(action.build());
316 private List<Action> createSetMplsTtlAction() {
317 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
318 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
319 ActionBuilder action = new ActionBuilder();
320 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(
321 setMplsTtlActionBuilder.build()).build());
322 List<Action> actions = new ArrayList<>();
323 actions.add(action.build());
327 private List<Action> createSetNwTtlAction() {
328 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
329 setNwTtlActionBuilder.setNwTtl((short) 1);
330 ActionBuilder action = new ActionBuilder();
331 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
332 List<Action> actions = new ArrayList<>();
333 actions.add(action.build());
337 private List<Action> createSetQueueAction() {
338 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
339 setQueueActionBuilder.setQueueId(1L);
340 ActionBuilder action = new ActionBuilder();
341 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
342 action.withKey(new ActionKey(0));
343 List<Action> actions = new ArrayList<>();
344 actions.add(action.build());
349 private List<Action> createCopyTtlInAction() {
350 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
351 ActionBuilder action = new ActionBuilder();
352 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
353 List<Action> actions = new ArrayList<>();
354 actions.add(action.build());
358 private List<Action> createCopyTtlOutAction() {
359 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
360 ActionBuilder action = new ActionBuilder();
361 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
362 List<Action> actions = new ArrayList<>();
363 actions.add(action.build());
367 private List<Action> createDecMplsTtlAction() {
368 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
369 ActionBuilder action = new ActionBuilder();
370 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
371 List<Action> actions = new ArrayList<>();
372 actions.add(action.build());
376 private List<Action> createDecNwTtlAction() {
377 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
378 ActionBuilder action = new ActionBuilder();
379 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
381 ActionBuilder ab = new ActionBuilder();
382 OutputActionBuilder output = new OutputActionBuilder();
383 // output.setMaxLength(30);
384 Uri value = new Uri("2");
385 output.setOutputNodeConnector(value);
386 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
387 ab.withKey(new ActionKey(0));
390 List<Action> actions = new ArrayList<>();
391 actions.add(ab.build());
392 actions.add(action.build());
396 private List<Action> createFloodOutputAction() {
397 ActionBuilder ab = new ActionBuilder();
398 OutputActionBuilder output = new OutputActionBuilder();
399 output.setMaxLength(30);
400 Uri value = new Uri(OutputPortValues.FLOOD.toString());
401 output.setOutputNodeConnector(value);
402 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
403 ab.withKey(new ActionKey(0));
405 List<Action> actions = new ArrayList<>();
406 actions.add(ab.build());
410 private List<Action> createAllOutputAction() {
411 ActionBuilder ab = new ActionBuilder();
412 OutputActionBuilder output = new OutputActionBuilder();
413 output.setMaxLength(30);
414 Uri value = new Uri(OutputPortValues.ALL.toString());
415 output.setOutputNodeConnector(value);
416 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
417 ab.withKey(new ActionKey(0));
419 List<Action> actions = new ArrayList<>();
420 actions.add(ab.build());
424 private List<Action> createAnyOutputAction() {
425 ActionBuilder ab = new ActionBuilder();
426 OutputActionBuilder output = new OutputActionBuilder();
427 output.setMaxLength(30);
428 Uri value = new Uri(OutputPortValues.ANY.toString());
429 output.setOutputNodeConnector(value);
430 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
431 ab.withKey(new ActionKey(0));
433 List<Action> actions = new ArrayList<>();
434 actions.add(ab.build());
438 private List<Action> createNormalOutputAction() {
439 ActionBuilder ab = new ActionBuilder();
440 OutputActionBuilder output = new OutputActionBuilder();
441 output.setMaxLength(30);
442 Uri value = new Uri(OutputPortValues.NORMAL.toString());
443 output.setOutputNodeConnector(value);
444 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
445 ab.withKey(new ActionKey(0));
447 List<Action> actions = new ArrayList<>();
448 actions.add(ab.build());
452 private List<Action> createInportOutputAction() {
453 ActionBuilder ab = new ActionBuilder();
454 OutputActionBuilder output = new OutputActionBuilder();
455 output.setMaxLength(30);
456 Uri value = new Uri(OutputPortValues.INPORT.toString());
457 output.setOutputNodeConnector(value);
458 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
459 ab.withKey(new ActionKey(0));
461 List<Action> actions = new ArrayList<>();
462 actions.add(ab.build());
466 private List<Action> creatTableOutputAction() {
467 ActionBuilder ab = new ActionBuilder();
468 OutputActionBuilder output = new OutputActionBuilder();
469 output.setMaxLength(30);
470 Uri value = new Uri(OutputPortValues.TABLE.toString());
471 output.setOutputNodeConnector(value);
472 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
473 ab.withKey(new ActionKey(0));
475 List<Action> actions = new ArrayList<>();
476 actions.add(ab.build());
480 private List<Action> createControllerAction() {
481 ActionBuilder ab = new ActionBuilder();
482 OutputActionBuilder output = new OutputActionBuilder();
483 output.setMaxLength(30);
484 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
485 output.setOutputNodeConnector(value);
486 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
487 ab.withKey(new ActionKey(0));
489 List<Action> actions = new ArrayList<>();
490 actions.add(ab.build());
494 private List<Action> createLocalOutputAction() {
495 ActionBuilder ab = new ActionBuilder();
496 OutputActionBuilder output = new OutputActionBuilder();
497 output.setMaxLength(30);
498 Uri value = new Uri(OutputPortValues.LOCAL.toString());
499 output.setOutputNodeConnector(value);
500 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
501 ab.withKey(new ActionKey(0));
503 List<Action> actions = new ArrayList<>();
504 actions.add(ab.build());
508 private List<Action> createGroupAction() {
509 GroupActionBuilder groupActionB = new GroupActionBuilder();
510 groupActionB.setGroupId(1L);
511 groupActionB.setGroup("0");
512 ActionBuilder action = new ActionBuilder();
513 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
514 action.withKey(new ActionKey(0));
515 List<Action> actions = new ArrayList<>();
516 actions.add(action.build());
520 private static List<Action> createNonAppyOutputAction() {
521 ActionBuilder ab = new ActionBuilder();
522 OutputActionBuilder output = new OutputActionBuilder();
523 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
524 output.setOutputNodeConnector(value);
525 //output.setMaxLength(null);
526 output.setMaxLength(66000);
527 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
529 List<Action> actionList = new ArrayList<>();
530 actionList.add(ab.build());
534 private static List<Action> createNonAppyPushMplsAction() {
536 List<Action> actionList = new ArrayList<>();
537 ActionBuilder ab = new ActionBuilder();
538 PushMplsActionBuilder push = new PushMplsActionBuilder();
539 push.setEthernetType(0x8849);
540 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
541 actionList.add(ab.build());
545 private static List<Action> createNonAppyPushPbbAction() {
547 List<Action> actionList = new ArrayList<>();
548 ActionBuilder ab = new ActionBuilder();
549 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
550 pbb.setEthernetType(0x88E8);
551 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
552 actionList.add(ab.build());
558 private static List<Action> createNonAppyPushVlanAction() {
560 List<Action> actionList = new ArrayList<>();
561 ActionBuilder ab = new ActionBuilder();
562 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
563 vlan.setEthernetType(0x8101);
564 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
565 actionList.add(ab.build());
569 public void _removeGroup(final CommandInterpreter ci) {
570 String nref = ci.nextArgument();
573 ci.println("test node added");
576 ci.println("User node added" + nref);
577 createUserNode(nref);
579 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
580 ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
581 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key())
582 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
583 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
584 modification.commit().addCallback(new FutureCallback<Object>() {
586 public void onSuccess(Object notUsed) {
587 ci.println("Status of Group Data Loaded Transaction: success.");
591 public void onFailure(Throwable throwable) {
592 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
594 }, MoreExecutors.directExecutor());
597 public void _addGroup(CommandInterpreter ci) {
598 String nref = ci.nextArgument();
601 ci.println("test node added");
604 ci.println("User node added" + nref);
605 createUserNode(nref);
607 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
608 writeGroup(ci, testGroup);
611 private void writeGroup(final CommandInterpreter ci, Group group) {
612 ReadWriteTransaction modification = Preconditions.checkNotNull(dataBroker).newReadWriteTransaction();
613 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
614 .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class)
615 .child(Group.class, new GroupKey(group.getGroupId()));
616 modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
617 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
618 modification.commit().addCallback(new FutureCallback<Object>() {
620 public void onSuccess(Object notUsed) {
621 ci.println("Status of Group Data Loaded Transaction: success.");
625 public void onFailure(Throwable throwable) {
626 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
628 }, MoreExecutors.directExecutor());
631 public void _modifyGroup(CommandInterpreter ci) {
632 String nref = ci.nextArgument();
635 ci.println("test node added");
638 ci.println("User node added" + nref);
639 createUserNode(nref);
641 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
642 writeGroup(ci, group.build());
644 // group.setGroupName(originalGroupName);
645 // writeGroup(ci, group.build());
649 public String getHelp() {
650 StringBuilder help = new StringBuilder();
651 help.append("---FRM MD-SAL Group test module---\n");
652 help.append("\t addGroup <node id> - node ref\n");
653 help.append("\t modifyGroup <node id> - node ref\n");
654 help.append("\t removeGroup <node id> - node ref\n");
656 return help.toString();