2 * Copyright IBM Corporation, 2013. 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.util.concurrent.CheckedFuture;
11 import com.google.common.util.concurrent.FutureCallback;
12 import com.google.common.util.concurrent.Futures;
13 import java.util.ArrayList;
14 import java.util.List;
15 import java.util.concurrent.ExecutionException;
16 import java.util.concurrent.Future;
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.TransactionStatus;
22 import org.opendaylight.controller.md.sal.common.api.data.DataModification;
23 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
24 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
25 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
78 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
79 import org.opendaylight.yangtools.yang.common.RpcResult;
80 import org.osgi.framework.BundleContext;
82 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
84 private DataBroker dataBroker;
85 private ProviderContext pc;
86 private final BundleContext ctx;
87 private Group testGroup;
88 private Group testGroup2;
89 private Node testNode;
90 private final String originalGroupName = "Foo";
91 private final String updatedGroupName = "Bar";
93 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
97 public void onSessionInitiated(ProviderContext session) {
99 dataBroker = session.getSALService(DataBroker.class);
100 ctx.registerService(CommandProvider.class.getName(), this, null);
104 private void createUserNode(String nodeRef) {
105 NodeRef nodeOne = createNodeRef(nodeRef);
106 NodeBuilder builder = new NodeBuilder();
107 builder.setId(new NodeId(nodeRef));
108 builder.setKey(new NodeKey(builder.getId()));
109 testNode = builder.build();
112 private void createTestNode() {
113 NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
114 NodeBuilder builder = new NodeBuilder();
115 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
116 builder.setKey(new NodeKey(builder.getId()));
117 testNode = builder.build();
120 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
121 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.getKey());
124 private GroupBuilder createTestGroup(String actiontype, String type, String mod) {
125 // Sample data , committing to DataStore
127 String GroupType = type;
128 String ActionType = actiontype;
129 String Groupmod = mod;
132 GroupKey key = new GroupKey(new GroupId(id));
133 GroupBuilder group = new GroupBuilder();
134 BucketBuilder bucket = new BucketBuilder();
135 bucket.setBucketId(new BucketId((long) 12));
136 bucket.setKey(new BucketKey(new BucketId((long) 12)));
138 if (GroupType == null) {
141 if (ActionType == null) {
147 group.setGroupType(GroupTypes.GroupSelect);
150 group.setGroupType(GroupTypes.GroupAll);
153 group.setGroupType(GroupTypes.GroupIndirect);
156 group.setGroupType(GroupTypes.GroupFf);
160 switch (ActionType) {
162 bucket.setAction(createPopVlanAction());
165 bucket.setAction(createPushVlanAction());
168 bucket.setAction(createPushMplsAction());
171 bucket.setAction(createPopMplsAction());
174 bucket.setAction(createPopPbbAction());
177 bucket.setAction(createPushPbbAction());
180 bucket.setAction(createPushPbbAction());
183 bucket.setAction(createCopyTtlInAction());
186 bucket.setAction(createCopyTtlOutAction());
189 bucket.setAction(createDecMplsTtlAction());
192 bucket.setAction(createDecNwTtlAction());
195 bucket.setAction(createSetQueueAction());
198 bucket.setAction(createSetNwTtlAction());
201 bucket.setAction(createGroupAction());
204 bucket.setAction(createSetMplsTtlAction());
207 bucket.setAction(createFloodOutputAction());
210 bucket.setAction(createAllOutputAction());
213 bucket.setAction(createNormalOutputAction());
216 bucket.setAction(creatTableOutputAction());
219 bucket.setAction(createControllerAction());
222 bucket.setAction(createLocalOutputAction());
225 bucket.setAction(createAnyOutputAction());
228 bucket.setAction(createInportOutputAction());
231 bucket.setAction(null);
234 bucket.setAction(createNonAppyOutputAction());
237 bucket.setAction(createNonAppyPushMplsAction());
240 bucket.setAction(createNonAppyPushPbbAction());
243 bucket.setAction(createNonAppyPushVlanAction());
248 if (Groupmod == "add") {
249 bucket.setWatchGroup((long) 14);
250 bucket.setWatchPort((long) 1234);
251 bucket.setWeight(50);
253 bucket.setWatchGroup((long) 13);
254 bucket.setWatchPort((long) 134);
255 bucket.setWeight(30);
258 // group.setInstall(false);
259 group.setGroupId(new GroupId(id));
260 group.setGroupName(originalGroupName);
261 group.setBarrier(false);
262 BucketsBuilder value = new BucketsBuilder();
263 List<Bucket> value1 = new ArrayList<Bucket>();
264 value1.add(bucket.build());
265 value.setBucket(value1);
266 group.setBuckets(value.build());
267 testGroup = group.build();
272 private List<Action> createPopVlanAction() {
273 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
274 ActionBuilder action = new ActionBuilder();
275 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
276 action.setKey(new ActionKey(0));
277 List<Action> actions = new ArrayList<Action>();
278 actions.add(action.build());
282 private List<Action> createPushVlanAction() {
283 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
284 vlan.setEthernetType(0x8100);
285 ActionBuilder action = new ActionBuilder();
286 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
287 List<Action> actions = new ArrayList<Action>();
288 actions.add(action.build());
292 private List<Action> createPushMplsAction() {
293 PushMplsActionBuilder push = new PushMplsActionBuilder();
294 push.setEthernetType(0x8847);
295 ActionBuilder action = new ActionBuilder();
296 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
297 List<Action> actions = new ArrayList<Action>();
298 actions.add(action.build());
302 private List<Action> createPopMplsAction() {
303 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
304 popMplsActionBuilder.setEthernetType(0XB);
305 ActionBuilder action = new ActionBuilder();
306 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
307 List<Action> actions = new ArrayList<Action>();
308 actions.add(action.build());
312 private List<Action> createPopPbbAction() {
313 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
314 ActionBuilder action = new ActionBuilder();
315 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
316 List<Action> actions = new ArrayList<Action>();
317 actions.add(action.build());
321 private List<Action> createPushPbbAction() {
322 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
323 pbb.setEthernetType(0x88E7);
324 ActionBuilder action = new ActionBuilder();
325 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
326 List<Action> actions = new ArrayList<Action>();
327 actions.add(action.build());
331 private List<Action> createSetMplsTtlAction() {
332 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
333 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
334 ActionBuilder action = new ActionBuilder();
335 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
336 List<Action> actions = new ArrayList<Action>();
337 actions.add(action.build());
341 private List<Action> createSetNwTtlAction() {
342 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
343 setNwTtlActionBuilder.setNwTtl((short) 1);
344 ActionBuilder action = new ActionBuilder();
345 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
346 List<Action> actions = new ArrayList<Action>();
347 actions.add(action.build());
351 private List<Action> createSetQueueAction() {
352 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
353 setQueueActionBuilder.setQueueId(1L);
354 ActionBuilder action = new ActionBuilder();
355 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
356 action.setKey(new ActionKey(0));
357 List<Action> actions = new ArrayList<Action>();
358 actions.add(action.build());
363 private List<Action> createCopyTtlInAction() {
364 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
365 ActionBuilder action = new ActionBuilder();
366 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
367 List<Action> actions = new ArrayList<Action>();
368 actions.add(action.build());
372 private List<Action> createCopyTtlOutAction() {
373 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
374 ActionBuilder action = new ActionBuilder();
375 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
376 List<Action> actions = new ArrayList<Action>();
377 actions.add(action.build());
381 private List<Action> createDecMplsTtlAction() {
382 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
383 ActionBuilder action = new ActionBuilder();
384 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
385 List<Action> actions = new ArrayList<Action>();
386 actions.add(action.build());
390 private List<Action> createDecNwTtlAction() {
391 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
392 ActionBuilder action = new ActionBuilder();
393 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
394 List<Action> actions = new ArrayList<Action>();
396 ActionBuilder ab = new ActionBuilder();
397 OutputActionBuilder output = new OutputActionBuilder();
398 // output.setMaxLength(30);
399 Uri value = new Uri("2");
400 output.setOutputNodeConnector(value);
401 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
402 ab.setKey(new ActionKey(0));
404 actions.add(ab.build());
405 actions.add(action.build());
409 private List<Action> createFloodOutputAction() {
411 List<Action> actions = new ArrayList<Action>();
412 ActionBuilder ab = new ActionBuilder();
413 OutputActionBuilder output = new OutputActionBuilder();
414 output.setMaxLength(30);
415 Uri value = new Uri(OutputPortValues.FLOOD.toString());
416 output.setOutputNodeConnector(value);
417 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
418 ab.setKey(new ActionKey(0));
419 actions.add(ab.build());
423 private List<Action> createAllOutputAction() {
425 List<Action> actions = new ArrayList<Action>();
426 ActionBuilder ab = new ActionBuilder();
427 OutputActionBuilder output = new OutputActionBuilder();
428 output.setMaxLength(30);
429 Uri value = new Uri(OutputPortValues.ALL.toString());
430 output.setOutputNodeConnector(value);
431 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
432 ab.setKey(new ActionKey(0));
433 actions.add(ab.build());
437 private List<Action> createAnyOutputAction() {
439 List<Action> actions = new ArrayList<Action>();
440 ActionBuilder ab = new ActionBuilder();
441 OutputActionBuilder output = new OutputActionBuilder();
442 output.setMaxLength(30);
443 Uri value = new Uri(OutputPortValues.ANY.toString());
444 output.setOutputNodeConnector(value);
445 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
446 ab.setKey(new ActionKey(0));
447 actions.add(ab.build());
451 private List<Action> createNormalOutputAction() {
453 List<Action> actions = new ArrayList<Action>();
454 ActionBuilder ab = new ActionBuilder();
455 OutputActionBuilder output = new OutputActionBuilder();
456 output.setMaxLength(30);
457 Uri value = new Uri(OutputPortValues.NORMAL.toString());
458 output.setOutputNodeConnector(value);
459 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
460 ab.setKey(new ActionKey(0));
461 actions.add(ab.build());
465 private List<Action> createInportOutputAction() {
467 List<Action> actions = new ArrayList<Action>();
468 ActionBuilder ab = new ActionBuilder();
469 OutputActionBuilder output = new OutputActionBuilder();
470 output.setMaxLength(30);
471 Uri value = new Uri(OutputPortValues.INPORT.toString());
472 output.setOutputNodeConnector(value);
473 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
474 ab.setKey(new ActionKey(0));
475 actions.add(ab.build());
479 private List<Action> creatTableOutputAction() {
481 List<Action> actions = new ArrayList<Action>();
482 ActionBuilder ab = new ActionBuilder();
483 OutputActionBuilder output = new OutputActionBuilder();
484 output.setMaxLength(30);
485 Uri value = new Uri(OutputPortValues.TABLE.toString());
486 output.setOutputNodeConnector(value);
487 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
488 ab.setKey(new ActionKey(0));
489 actions.add(ab.build());
493 private List<Action> createControllerAction() {
495 List<Action> actions = new ArrayList<Action>();
496 ActionBuilder ab = new ActionBuilder();
497 OutputActionBuilder output = new OutputActionBuilder();
498 output.setMaxLength(30);
499 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
500 output.setOutputNodeConnector(value);
501 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
502 ab.setKey(new ActionKey(0));
503 actions.add(ab.build());
507 private List<Action> createLocalOutputAction() {
509 List<Action> actions = new ArrayList<Action>();
510 ActionBuilder ab = new ActionBuilder();
511 OutputActionBuilder output = new OutputActionBuilder();
512 output.setMaxLength(30);
513 Uri value = new Uri(OutputPortValues.LOCAL.toString());
514 output.setOutputNodeConnector(value);
515 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
516 ab.setKey(new ActionKey(0));
517 actions.add(ab.build());
521 private List<Action> createGroupAction() {
523 GroupActionBuilder groupActionB = new GroupActionBuilder();
524 groupActionB.setGroupId(1L);
525 groupActionB.setGroup("0");
526 ActionBuilder action = new ActionBuilder();
527 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
528 action.setKey(new ActionKey(0));
529 List<Action> actions = new ArrayList<Action>();
530 actions.add(action.build());
534 private static List<Action> createNonAppyOutputAction() {
536 List<Action> actionList = new ArrayList<Action>();
537 ActionBuilder ab = new ActionBuilder();
538 OutputActionBuilder output = new OutputActionBuilder();
539 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
540 output.setOutputNodeConnector(value);
541 //output.setMaxLength(null);
542 output.setMaxLength(66000);
543 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
544 actionList.add(ab.build());
548 private static List<Action> createNonAppyPushMplsAction() {
550 List<Action> actionList = new ArrayList<Action>();
551 ActionBuilder ab = new ActionBuilder();
552 PushMplsActionBuilder push = new PushMplsActionBuilder();
553 push.setEthernetType(0x8849);
554 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
555 actionList.add(ab.build());
560 private static List<Action> createNonAppyPushPbbAction() {
562 List<Action> actionList = new ArrayList<Action>();
563 ActionBuilder ab = new ActionBuilder();
564 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
565 pbb.setEthernetType(0x88E8);
566 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
567 actionList.add(ab.build());
573 private static List<Action> createNonAppyPushVlanAction() {
575 List<Action> actionList = new ArrayList<Action>();
576 ActionBuilder ab = new ActionBuilder();
577 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
578 vlan.setEthernetType(0x8101);
579 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
580 actionList.add(ab.build());
586 private GroupBuilder createTestRemoveGroup() {
588 GroupKey key = new GroupKey(new GroupId(id));
589 GroupBuilder group = new GroupBuilder();
590 /* BucketBuilder bucket = new BucketBuilder();
591 bucket.setBucketId(new BucketId((long) 12));
592 bucket.setKey(new BucketKey(new BucketId((long) 12))); */
594 // group.setInstall(false);
596 group.setGroupId(new GroupId(id));
597 /* PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
598 ActionBuilder action = new ActionBuilder();
599 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
600 List<Action> actions = new ArrayList<Action>();
601 actions.add(action.build()); */
602 /* bucket.setAction(actions);
603 bucket.setWatchGroup((long) 14);
604 bucket.setWatchPort((long) 1234);
605 bucket.setWeight(15); */
606 // group.setGroupType(GroupTypes.GroupSelect);
607 // group.setGroupName(originalGroupName);
608 // group.setBarrier(false);
609 // BucketsBuilder value = new BucketsBuilder();
610 // List<Bucket> value1 = new ArrayList<Bucket>();
611 // value1.add(bucket.build());
612 // value.setBucket(value1);
613 // group.setBuckets(value.build());
614 testGroup2 = group.build();
619 public void _removeGroup(final CommandInterpreter ci) {
620 String nref = ci.nextArgument();
623 ci.println("test node added");
626 ci.println("User node added" + nref);
627 createUserNode(nref);
629 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
630 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
631 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.getKey())
632 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
633 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
634 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
635 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
637 public void onSuccess(Void aVoid) {
638 ci.println("Status of Group Data Loaded Transaction: success.");
642 public void onFailure(Throwable throwable) {
643 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
648 public void _addGroup(CommandInterpreter ci) {
649 String nref = ci.nextArgument();
652 ci.println("test node added");
655 ci.println("User node added" + nref);
656 createUserNode(nref);
658 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
659 writeGroup(ci, testGroup);
662 private void writeGroup(final CommandInterpreter ci, Group group) {
663 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
664 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
665 .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
666 .child(Group.class, new GroupKey(group.getGroupId()));
667 modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
668 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
669 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
670 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
672 public void onSuccess(Void aVoid) {
673 ci.println("Status of Group Data Loaded Transaction: success.");
677 public void onFailure(Throwable throwable) {
678 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
683 public void _modifyGroup(CommandInterpreter ci) {
684 String nref = ci.nextArgument();
687 ci.println("test node added");
690 ci.println("User node added" + nref);
691 createUserNode(nref);
693 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
694 writeGroup(ci, group.build());
696 // group.setGroupName(originalGroupName);
697 // writeGroup(ci, group.build());
701 public String getHelp() {
702 StringBuffer help = new StringBuffer();
703 help.append("---FRM MD-SAL Group test module---\n");
704 help.append("\t addGroup <node id> - node ref\n");
705 help.append("\t modifyGroup <node id> - node ref\n");
706 help.append("\t removeGroup <node id> - node ref\n");
708 return help.toString();
711 private static NodeRef createNodeRef(String string) {
712 NodeKey key = new NodeKey(new NodeId(string));
713 InstanceIdentifier<Node> path =
714 InstanceIdentifier.create(Nodes.class).child(Node.class, key);
716 return new NodeRef(path);