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 com.google.common.util.concurrent.MoreExecutors;
15 import java.util.ArrayList;
16 import java.util.List;
17 import org.eclipse.osgi.framework.console.CommandInterpreter;
18 import org.eclipse.osgi.framework.console.CommandProvider;
19 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
20 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
21 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
22 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
23 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
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 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
81 private DataBroker dataBroker;
82 private ProviderContext pc;
83 private final BundleContext ctx;
84 private Group testGroup;
85 private Group testGroup2;
86 private Node testNode;
87 private final String originalGroupName = "Foo";
88 private final String updatedGroupName = "Bar";
90 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
94 public void onSessionInitiated(ProviderContext session) {
96 dataBroker = session.getSALService(DataBroker.class);
97 ctx.registerService(CommandProvider.class.getName(), this, null);
101 private void createUserNode(String nodeRef) {
102 NodeRef nodeOne = createNodeRef(nodeRef);
103 NodeBuilder builder = new NodeBuilder();
104 builder.setId(new NodeId(nodeRef));
105 builder.setKey(new NodeKey(builder.getId()));
106 testNode = builder.build();
109 private void createTestNode() {
110 NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
111 NodeBuilder builder = new NodeBuilder();
112 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
113 builder.setKey(new NodeKey(builder.getId()));
114 testNode = builder.build();
117 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
118 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.getKey());
121 private GroupBuilder createTestGroup(String actiontype, String type, String mod) {
122 // Sample data , committing to DataStore
124 String GroupType = type;
125 String ActionType = actiontype;
126 String Groupmod = mod;
129 GroupKey key = new GroupKey(new GroupId(id));
130 GroupBuilder group = new GroupBuilder();
131 BucketBuilder bucket = new BucketBuilder();
132 bucket.setBucketId(new BucketId((long) 12));
133 bucket.setKey(new BucketKey(new BucketId((long) 12)));
135 if (GroupType == null) {
138 if (ActionType == null) {
144 group.setGroupType(GroupTypes.GroupSelect);
147 group.setGroupType(GroupTypes.GroupAll);
150 group.setGroupType(GroupTypes.GroupIndirect);
153 group.setGroupType(GroupTypes.GroupFf);
157 switch (ActionType) {
159 bucket.setAction(createPopVlanAction());
162 bucket.setAction(createPushVlanAction());
165 bucket.setAction(createPushMplsAction());
168 bucket.setAction(createPopMplsAction());
171 bucket.setAction(createPopPbbAction());
174 bucket.setAction(createPushPbbAction());
177 bucket.setAction(createPushPbbAction());
180 bucket.setAction(createCopyTtlInAction());
183 bucket.setAction(createCopyTtlOutAction());
186 bucket.setAction(createDecMplsTtlAction());
189 bucket.setAction(createDecNwTtlAction());
192 bucket.setAction(createSetQueueAction());
195 bucket.setAction(createSetNwTtlAction());
198 bucket.setAction(createGroupAction());
201 bucket.setAction(createSetMplsTtlAction());
204 bucket.setAction(createFloodOutputAction());
207 bucket.setAction(createAllOutputAction());
210 bucket.setAction(createNormalOutputAction());
213 bucket.setAction(creatTableOutputAction());
216 bucket.setAction(createControllerAction());
219 bucket.setAction(createLocalOutputAction());
222 bucket.setAction(createAnyOutputAction());
225 bucket.setAction(createInportOutputAction());
228 bucket.setAction(null);
231 bucket.setAction(createNonAppyOutputAction());
234 bucket.setAction(createNonAppyPushMplsAction());
237 bucket.setAction(createNonAppyPushPbbAction());
240 bucket.setAction(createNonAppyPushVlanAction());
245 if (Groupmod == "add") {
246 bucket.setWatchGroup((long) 14);
247 bucket.setWatchPort((long) 1234);
248 bucket.setWeight(50);
250 bucket.setWatchGroup((long) 13);
251 bucket.setWatchPort((long) 134);
252 bucket.setWeight(30);
255 // group.setInstall(false);
256 group.setGroupId(new GroupId(id));
257 group.setGroupName(originalGroupName);
258 group.setBarrier(false);
259 BucketsBuilder value = new BucketsBuilder();
260 List<Bucket> value1 = new ArrayList<Bucket>();
261 value1.add(bucket.build());
262 value.setBucket(value1);
263 group.setBuckets(value.build());
264 testGroup = group.build();
269 private List<Action> createPopVlanAction() {
270 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
271 ActionBuilder action = new ActionBuilder();
272 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
273 action.setKey(new ActionKey(0));
274 List<Action> actions = new ArrayList<Action>();
275 actions.add(action.build());
279 private List<Action> createPushVlanAction() {
280 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
281 vlan.setEthernetType(0x8100);
282 ActionBuilder action = new ActionBuilder();
283 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
284 List<Action> actions = new ArrayList<Action>();
285 actions.add(action.build());
289 private List<Action> createPushMplsAction() {
290 PushMplsActionBuilder push = new PushMplsActionBuilder();
291 push.setEthernetType(0x8847);
292 ActionBuilder action = new ActionBuilder();
293 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
294 List<Action> actions = new ArrayList<Action>();
295 actions.add(action.build());
299 private List<Action> createPopMplsAction() {
300 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
301 popMplsActionBuilder.setEthernetType(0XB);
302 ActionBuilder action = new ActionBuilder();
303 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
304 List<Action> actions = new ArrayList<Action>();
305 actions.add(action.build());
309 private List<Action> createPopPbbAction() {
310 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
311 ActionBuilder action = new ActionBuilder();
312 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
313 List<Action> actions = new ArrayList<Action>();
314 actions.add(action.build());
318 private List<Action> createPushPbbAction() {
319 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
320 pbb.setEthernetType(0x88E7);
321 ActionBuilder action = new ActionBuilder();
322 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
323 List<Action> actions = new ArrayList<Action>();
324 actions.add(action.build());
328 private List<Action> createSetMplsTtlAction() {
329 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
330 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
331 ActionBuilder action = new ActionBuilder();
332 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
333 List<Action> actions = new ArrayList<Action>();
334 actions.add(action.build());
338 private List<Action> createSetNwTtlAction() {
339 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
340 setNwTtlActionBuilder.setNwTtl((short) 1);
341 ActionBuilder action = new ActionBuilder();
342 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
343 List<Action> actions = new ArrayList<Action>();
344 actions.add(action.build());
348 private List<Action> createSetQueueAction() {
349 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
350 setQueueActionBuilder.setQueueId(1L);
351 ActionBuilder action = new ActionBuilder();
352 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
353 action.setKey(new ActionKey(0));
354 List<Action> actions = new ArrayList<Action>();
355 actions.add(action.build());
360 private List<Action> createCopyTtlInAction() {
361 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
362 ActionBuilder action = new ActionBuilder();
363 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
364 List<Action> actions = new ArrayList<Action>();
365 actions.add(action.build());
369 private List<Action> createCopyTtlOutAction() {
370 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
371 ActionBuilder action = new ActionBuilder();
372 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
373 List<Action> actions = new ArrayList<Action>();
374 actions.add(action.build());
378 private List<Action> createDecMplsTtlAction() {
379 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
380 ActionBuilder action = new ActionBuilder();
381 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
382 List<Action> actions = new ArrayList<Action>();
383 actions.add(action.build());
387 private List<Action> createDecNwTtlAction() {
388 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
389 ActionBuilder action = new ActionBuilder();
390 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
391 List<Action> actions = new ArrayList<Action>();
393 ActionBuilder ab = new ActionBuilder();
394 OutputActionBuilder output = new OutputActionBuilder();
395 // output.setMaxLength(30);
396 Uri value = new Uri("2");
397 output.setOutputNodeConnector(value);
398 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
399 ab.setKey(new ActionKey(0));
401 actions.add(ab.build());
402 actions.add(action.build());
406 private List<Action> createFloodOutputAction() {
408 List<Action> actions = new ArrayList<Action>();
409 ActionBuilder ab = new ActionBuilder();
410 OutputActionBuilder output = new OutputActionBuilder();
411 output.setMaxLength(30);
412 Uri value = new Uri(OutputPortValues.FLOOD.toString());
413 output.setOutputNodeConnector(value);
414 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
415 ab.setKey(new ActionKey(0));
416 actions.add(ab.build());
420 private List<Action> createAllOutputAction() {
422 List<Action> actions = new ArrayList<Action>();
423 ActionBuilder ab = new ActionBuilder();
424 OutputActionBuilder output = new OutputActionBuilder();
425 output.setMaxLength(30);
426 Uri value = new Uri(OutputPortValues.ALL.toString());
427 output.setOutputNodeConnector(value);
428 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
429 ab.setKey(new ActionKey(0));
430 actions.add(ab.build());
434 private List<Action> createAnyOutputAction() {
436 List<Action> actions = new ArrayList<Action>();
437 ActionBuilder ab = new ActionBuilder();
438 OutputActionBuilder output = new OutputActionBuilder();
439 output.setMaxLength(30);
440 Uri value = new Uri(OutputPortValues.ANY.toString());
441 output.setOutputNodeConnector(value);
442 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
443 ab.setKey(new ActionKey(0));
444 actions.add(ab.build());
448 private List<Action> createNormalOutputAction() {
450 List<Action> actions = new ArrayList<Action>();
451 ActionBuilder ab = new ActionBuilder();
452 OutputActionBuilder output = new OutputActionBuilder();
453 output.setMaxLength(30);
454 Uri value = new Uri(OutputPortValues.NORMAL.toString());
455 output.setOutputNodeConnector(value);
456 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
457 ab.setKey(new ActionKey(0));
458 actions.add(ab.build());
462 private List<Action> createInportOutputAction() {
464 List<Action> actions = new ArrayList<Action>();
465 ActionBuilder ab = new ActionBuilder();
466 OutputActionBuilder output = new OutputActionBuilder();
467 output.setMaxLength(30);
468 Uri value = new Uri(OutputPortValues.INPORT.toString());
469 output.setOutputNodeConnector(value);
470 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
471 ab.setKey(new ActionKey(0));
472 actions.add(ab.build());
476 private List<Action> creatTableOutputAction() {
478 List<Action> actions = new ArrayList<Action>();
479 ActionBuilder ab = new ActionBuilder();
480 OutputActionBuilder output = new OutputActionBuilder();
481 output.setMaxLength(30);
482 Uri value = new Uri(OutputPortValues.TABLE.toString());
483 output.setOutputNodeConnector(value);
484 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
485 ab.setKey(new ActionKey(0));
486 actions.add(ab.build());
490 private List<Action> createControllerAction() {
492 List<Action> actions = new ArrayList<Action>();
493 ActionBuilder ab = new ActionBuilder();
494 OutputActionBuilder output = new OutputActionBuilder();
495 output.setMaxLength(30);
496 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
497 output.setOutputNodeConnector(value);
498 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
499 ab.setKey(new ActionKey(0));
500 actions.add(ab.build());
504 private List<Action> createLocalOutputAction() {
506 List<Action> actions = new ArrayList<Action>();
507 ActionBuilder ab = new ActionBuilder();
508 OutputActionBuilder output = new OutputActionBuilder();
509 output.setMaxLength(30);
510 Uri value = new Uri(OutputPortValues.LOCAL.toString());
511 output.setOutputNodeConnector(value);
512 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
513 ab.setKey(new ActionKey(0));
514 actions.add(ab.build());
518 private List<Action> createGroupAction() {
520 GroupActionBuilder groupActionB = new GroupActionBuilder();
521 groupActionB.setGroupId(1L);
522 groupActionB.setGroup("0");
523 ActionBuilder action = new ActionBuilder();
524 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
525 action.setKey(new ActionKey(0));
526 List<Action> actions = new ArrayList<Action>();
527 actions.add(action.build());
531 private static List<Action> createNonAppyOutputAction() {
533 List<Action> actionList = new ArrayList<Action>();
534 ActionBuilder ab = new ActionBuilder();
535 OutputActionBuilder output = new OutputActionBuilder();
536 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
537 output.setOutputNodeConnector(value);
538 //output.setMaxLength(null);
539 output.setMaxLength(66000);
540 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
541 actionList.add(ab.build());
545 private static List<Action> createNonAppyPushMplsAction() {
547 List<Action> actionList = new ArrayList<Action>();
548 ActionBuilder ab = new ActionBuilder();
549 PushMplsActionBuilder push = new PushMplsActionBuilder();
550 push.setEthernetType(0x8849);
551 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
552 actionList.add(ab.build());
557 private static List<Action> createNonAppyPushPbbAction() {
559 List<Action> actionList = new ArrayList<Action>();
560 ActionBuilder ab = new ActionBuilder();
561 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
562 pbb.setEthernetType(0x88E8);
563 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
564 actionList.add(ab.build());
570 private static List<Action> createNonAppyPushVlanAction() {
572 List<Action> actionList = new ArrayList<Action>();
573 ActionBuilder ab = new ActionBuilder();
574 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
575 vlan.setEthernetType(0x8101);
576 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
577 actionList.add(ab.build());
583 private GroupBuilder createTestRemoveGroup() {
585 GroupKey key = new GroupKey(new GroupId(id));
586 GroupBuilder group = new GroupBuilder();
587 /* BucketBuilder bucket = new BucketBuilder();
588 bucket.setBucketId(new BucketId((long) 12));
589 bucket.setKey(new BucketKey(new BucketId((long) 12))); */
591 // group.setInstall(false);
593 group.setGroupId(new GroupId(id));
594 /* PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
595 ActionBuilder action = new ActionBuilder();
596 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
597 List<Action> actions = new ArrayList<Action>();
598 actions.add(action.build()); */
599 /* bucket.setAction(actions);
600 bucket.setWatchGroup((long) 14);
601 bucket.setWatchPort((long) 1234);
602 bucket.setWeight(15); */
603 // group.setGroupType(GroupTypes.GroupSelect);
604 // group.setGroupName(originalGroupName);
605 // group.setBarrier(false);
606 // BucketsBuilder value = new BucketsBuilder();
607 // List<Bucket> value1 = new ArrayList<Bucket>();
608 // value1.add(bucket.build());
609 // value.setBucket(value1);
610 // group.setBuckets(value.build());
611 testGroup2 = group.build();
616 public void _removeGroup(final CommandInterpreter ci) {
617 String nref = ci.nextArgument();
620 ci.println("test node added");
623 ci.println("User node added" + nref);
624 createUserNode(nref);
626 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
627 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
628 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.getKey())
629 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
630 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
631 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
632 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
634 public void onSuccess(Void aVoid) {
635 ci.println("Status of Group Data Loaded Transaction: success.");
639 public void onFailure(Throwable throwable) {
640 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
642 }, MoreExecutors.directExecutor());
645 public void _addGroup(CommandInterpreter ci) {
646 String nref = ci.nextArgument();
649 ci.println("test node added");
652 ci.println("User node added" + nref);
653 createUserNode(nref);
655 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
656 writeGroup(ci, testGroup);
659 private void writeGroup(final CommandInterpreter ci, Group group) {
660 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
661 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
662 .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
663 .child(Group.class, new GroupKey(group.getGroupId()));
664 modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
665 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
666 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
667 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
669 public void onSuccess(Void aVoid) {
670 ci.println("Status of Group Data Loaded Transaction: success.");
674 public void onFailure(Throwable throwable) {
675 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
677 }, MoreExecutors.directExecutor());
680 public void _modifyGroup(CommandInterpreter ci) {
681 String nref = ci.nextArgument();
684 ci.println("test node added");
687 ci.println("User node added" + nref);
688 createUserNode(nref);
690 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
691 writeGroup(ci, group.build());
693 // group.setGroupName(originalGroupName);
694 // writeGroup(ci, group.build());
698 public String getHelp() {
699 StringBuilder help = new StringBuilder();
700 help.append("---FRM MD-SAL Group test module---\n");
701 help.append("\t addGroup <node id> - node ref\n");
702 help.append("\t modifyGroup <node id> - node ref\n");
703 help.append("\t removeGroup <node id> - node ref\n");
705 return help.toString();
708 private static NodeRef createNodeRef(String string) {
709 NodeKey key = new NodeKey(new NodeId(string));
710 InstanceIdentifier<Node> path =
711 InstanceIdentifier.create(Nodes.class).child(Node.class, key);
713 return new NodeRef(path);