2 * Copyright (c) 2013, 2015 IBM Corporation and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.test;
11 import com.google.common.util.concurrent.CheckedFuture;
12 import com.google.common.util.concurrent.FutureCallback;
13 import com.google.common.util.concurrent.Futures;
14 import java.util.ArrayList;
15 import java.util.List;
16 import java.util.concurrent.ExecutionException;
17 import java.util.concurrent.Future;
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.TransactionStatus;
23 import org.opendaylight.controller.md.sal.common.api.data.DataModification;
24 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
25 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
26 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
79 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
80 import org.opendaylight.yangtools.yang.common.RpcResult;
81 import org.osgi.framework.BundleContext;
83 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
85 private DataBroker dataBroker;
86 private ProviderContext pc;
87 private final BundleContext ctx;
88 private Group testGroup;
89 private Group testGroup2;
90 private Node testNode;
91 private final String originalGroupName = "Foo";
92 private final String updatedGroupName = "Bar";
94 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
98 public void onSessionInitiated(ProviderContext session) {
100 dataBroker = session.getSALService(DataBroker.class);
101 ctx.registerService(CommandProvider.class.getName(), this, null);
105 private void createUserNode(String nodeRef) {
106 NodeRef nodeOne = createNodeRef(nodeRef);
107 NodeBuilder builder = new NodeBuilder();
108 builder.setId(new NodeId(nodeRef));
109 builder.setKey(new NodeKey(builder.getId()));
110 testNode = builder.build();
113 private void createTestNode() {
114 NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
115 NodeBuilder builder = new NodeBuilder();
116 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
117 builder.setKey(new NodeKey(builder.getId()));
118 testNode = builder.build();
121 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
122 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.getKey());
125 private GroupBuilder createTestGroup(String actiontype, String type, String mod) {
126 // Sample data , committing to DataStore
128 String GroupType = type;
129 String ActionType = actiontype;
130 String Groupmod = mod;
133 GroupKey key = new GroupKey(new GroupId(id));
134 GroupBuilder group = new GroupBuilder();
135 BucketBuilder bucket = new BucketBuilder();
136 bucket.setBucketId(new BucketId((long) 12));
137 bucket.setKey(new BucketKey(new BucketId((long) 12)));
139 if (GroupType == null) {
142 if (ActionType == null) {
148 group.setGroupType(GroupTypes.GroupSelect);
151 group.setGroupType(GroupTypes.GroupAll);
154 group.setGroupType(GroupTypes.GroupIndirect);
157 group.setGroupType(GroupTypes.GroupFf);
161 switch (ActionType) {
163 bucket.setAction(createPopVlanAction());
166 bucket.setAction(createPushVlanAction());
169 bucket.setAction(createPushMplsAction());
172 bucket.setAction(createPopMplsAction());
175 bucket.setAction(createPopPbbAction());
178 bucket.setAction(createPushPbbAction());
181 bucket.setAction(createPushPbbAction());
184 bucket.setAction(createCopyTtlInAction());
187 bucket.setAction(createCopyTtlOutAction());
190 bucket.setAction(createDecMplsTtlAction());
193 bucket.setAction(createDecNwTtlAction());
196 bucket.setAction(createSetQueueAction());
199 bucket.setAction(createSetNwTtlAction());
202 bucket.setAction(createGroupAction());
205 bucket.setAction(createSetMplsTtlAction());
208 bucket.setAction(createFloodOutputAction());
211 bucket.setAction(createAllOutputAction());
214 bucket.setAction(createNormalOutputAction());
217 bucket.setAction(creatTableOutputAction());
220 bucket.setAction(createControllerAction());
223 bucket.setAction(createLocalOutputAction());
226 bucket.setAction(createAnyOutputAction());
229 bucket.setAction(createInportOutputAction());
232 bucket.setAction(null);
235 bucket.setAction(createNonAppyOutputAction());
238 bucket.setAction(createNonAppyPushMplsAction());
241 bucket.setAction(createNonAppyPushPbbAction());
244 bucket.setAction(createNonAppyPushVlanAction());
249 if (Groupmod == "add") {
250 bucket.setWatchGroup((long) 14);
251 bucket.setWatchPort((long) 1234);
252 bucket.setWeight(50);
254 bucket.setWatchGroup((long) 13);
255 bucket.setWatchPort((long) 134);
256 bucket.setWeight(30);
259 // group.setInstall(false);
260 group.setGroupId(new GroupId(id));
261 group.setGroupName(originalGroupName);
262 group.setBarrier(false);
263 BucketsBuilder value = new BucketsBuilder();
264 List<Bucket> value1 = new ArrayList<Bucket>();
265 value1.add(bucket.build());
266 value.setBucket(value1);
267 group.setBuckets(value.build());
268 testGroup = group.build();
273 private List<Action> createPopVlanAction() {
274 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
275 ActionBuilder action = new ActionBuilder();
276 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
277 action.setKey(new ActionKey(0));
278 List<Action> actions = new ArrayList<Action>();
279 actions.add(action.build());
283 private List<Action> createPushVlanAction() {
284 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
285 vlan.setEthernetType(0x8100);
286 ActionBuilder action = new ActionBuilder();
287 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
288 List<Action> actions = new ArrayList<Action>();
289 actions.add(action.build());
293 private List<Action> createPushMplsAction() {
294 PushMplsActionBuilder push = new PushMplsActionBuilder();
295 push.setEthernetType(0x8847);
296 ActionBuilder action = new ActionBuilder();
297 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
298 List<Action> actions = new ArrayList<Action>();
299 actions.add(action.build());
303 private List<Action> createPopMplsAction() {
304 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
305 popMplsActionBuilder.setEthernetType(0XB);
306 ActionBuilder action = new ActionBuilder();
307 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
308 List<Action> actions = new ArrayList<Action>();
309 actions.add(action.build());
313 private List<Action> createPopPbbAction() {
314 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
315 ActionBuilder action = new ActionBuilder();
316 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
317 List<Action> actions = new ArrayList<Action>();
318 actions.add(action.build());
322 private List<Action> createPushPbbAction() {
323 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
324 pbb.setEthernetType(0x88E7);
325 ActionBuilder action = new ActionBuilder();
326 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
327 List<Action> actions = new ArrayList<Action>();
328 actions.add(action.build());
332 private List<Action> createSetMplsTtlAction() {
333 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
334 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
335 ActionBuilder action = new ActionBuilder();
336 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
337 List<Action> actions = new ArrayList<Action>();
338 actions.add(action.build());
342 private List<Action> createSetNwTtlAction() {
343 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
344 setNwTtlActionBuilder.setNwTtl((short) 1);
345 ActionBuilder action = new ActionBuilder();
346 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
347 List<Action> actions = new ArrayList<Action>();
348 actions.add(action.build());
352 private List<Action> createSetQueueAction() {
353 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
354 setQueueActionBuilder.setQueueId(1L);
355 ActionBuilder action = new ActionBuilder();
356 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
357 action.setKey(new ActionKey(0));
358 List<Action> actions = new ArrayList<Action>();
359 actions.add(action.build());
364 private List<Action> createCopyTtlInAction() {
365 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
366 ActionBuilder action = new ActionBuilder();
367 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
368 List<Action> actions = new ArrayList<Action>();
369 actions.add(action.build());
373 private List<Action> createCopyTtlOutAction() {
374 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
375 ActionBuilder action = new ActionBuilder();
376 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
377 List<Action> actions = new ArrayList<Action>();
378 actions.add(action.build());
382 private List<Action> createDecMplsTtlAction() {
383 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
384 ActionBuilder action = new ActionBuilder();
385 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
386 List<Action> actions = new ArrayList<Action>();
387 actions.add(action.build());
391 private List<Action> createDecNwTtlAction() {
392 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
393 ActionBuilder action = new ActionBuilder();
394 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
395 List<Action> actions = new ArrayList<Action>();
397 ActionBuilder ab = new ActionBuilder();
398 OutputActionBuilder output = new OutputActionBuilder();
399 // output.setMaxLength(30);
400 Uri value = new Uri("2");
401 output.setOutputNodeConnector(value);
402 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
403 ab.setKey(new ActionKey(0));
405 actions.add(ab.build());
406 actions.add(action.build());
410 private List<Action> createFloodOutputAction() {
412 List<Action> actions = new ArrayList<Action>();
413 ActionBuilder ab = new ActionBuilder();
414 OutputActionBuilder output = new OutputActionBuilder();
415 output.setMaxLength(30);
416 Uri value = new Uri(OutputPortValues.FLOOD.toString());
417 output.setOutputNodeConnector(value);
418 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
419 ab.setKey(new ActionKey(0));
420 actions.add(ab.build());
424 private List<Action> createAllOutputAction() {
426 List<Action> actions = new ArrayList<Action>();
427 ActionBuilder ab = new ActionBuilder();
428 OutputActionBuilder output = new OutputActionBuilder();
429 output.setMaxLength(30);
430 Uri value = new Uri(OutputPortValues.ALL.toString());
431 output.setOutputNodeConnector(value);
432 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
433 ab.setKey(new ActionKey(0));
434 actions.add(ab.build());
438 private List<Action> createAnyOutputAction() {
440 List<Action> actions = new ArrayList<Action>();
441 ActionBuilder ab = new ActionBuilder();
442 OutputActionBuilder output = new OutputActionBuilder();
443 output.setMaxLength(30);
444 Uri value = new Uri(OutputPortValues.ANY.toString());
445 output.setOutputNodeConnector(value);
446 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
447 ab.setKey(new ActionKey(0));
448 actions.add(ab.build());
452 private List<Action> createNormalOutputAction() {
454 List<Action> actions = new ArrayList<Action>();
455 ActionBuilder ab = new ActionBuilder();
456 OutputActionBuilder output = new OutputActionBuilder();
457 output.setMaxLength(30);
458 Uri value = new Uri(OutputPortValues.NORMAL.toString());
459 output.setOutputNodeConnector(value);
460 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
461 ab.setKey(new ActionKey(0));
462 actions.add(ab.build());
466 private List<Action> createInportOutputAction() {
468 List<Action> actions = new ArrayList<Action>();
469 ActionBuilder ab = new ActionBuilder();
470 OutputActionBuilder output = new OutputActionBuilder();
471 output.setMaxLength(30);
472 Uri value = new Uri(OutputPortValues.INPORT.toString());
473 output.setOutputNodeConnector(value);
474 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
475 ab.setKey(new ActionKey(0));
476 actions.add(ab.build());
480 private List<Action> creatTableOutputAction() {
482 List<Action> actions = new ArrayList<Action>();
483 ActionBuilder ab = new ActionBuilder();
484 OutputActionBuilder output = new OutputActionBuilder();
485 output.setMaxLength(30);
486 Uri value = new Uri(OutputPortValues.TABLE.toString());
487 output.setOutputNodeConnector(value);
488 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
489 ab.setKey(new ActionKey(0));
490 actions.add(ab.build());
494 private List<Action> createControllerAction() {
496 List<Action> actions = new ArrayList<Action>();
497 ActionBuilder ab = new ActionBuilder();
498 OutputActionBuilder output = new OutputActionBuilder();
499 output.setMaxLength(30);
500 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
501 output.setOutputNodeConnector(value);
502 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
503 ab.setKey(new ActionKey(0));
504 actions.add(ab.build());
508 private List<Action> createLocalOutputAction() {
510 List<Action> actions = new ArrayList<Action>();
511 ActionBuilder ab = new ActionBuilder();
512 OutputActionBuilder output = new OutputActionBuilder();
513 output.setMaxLength(30);
514 Uri value = new Uri(OutputPortValues.LOCAL.toString());
515 output.setOutputNodeConnector(value);
516 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
517 ab.setKey(new ActionKey(0));
518 actions.add(ab.build());
522 private List<Action> createGroupAction() {
524 GroupActionBuilder groupActionB = new GroupActionBuilder();
525 groupActionB.setGroupId(1L);
526 groupActionB.setGroup("0");
527 ActionBuilder action = new ActionBuilder();
528 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
529 action.setKey(new ActionKey(0));
530 List<Action> actions = new ArrayList<Action>();
531 actions.add(action.build());
535 private static List<Action> createNonAppyOutputAction() {
537 List<Action> actionList = new ArrayList<Action>();
538 ActionBuilder ab = new ActionBuilder();
539 OutputActionBuilder output = new OutputActionBuilder();
540 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
541 output.setOutputNodeConnector(value);
542 //output.setMaxLength(null);
543 output.setMaxLength(66000);
544 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
545 actionList.add(ab.build());
549 private static List<Action> createNonAppyPushMplsAction() {
551 List<Action> actionList = new ArrayList<Action>();
552 ActionBuilder ab = new ActionBuilder();
553 PushMplsActionBuilder push = new PushMplsActionBuilder();
554 push.setEthernetType(0x8849);
555 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
556 actionList.add(ab.build());
561 private static List<Action> createNonAppyPushPbbAction() {
563 List<Action> actionList = new ArrayList<Action>();
564 ActionBuilder ab = new ActionBuilder();
565 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
566 pbb.setEthernetType(0x88E8);
567 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
568 actionList.add(ab.build());
574 private static List<Action> createNonAppyPushVlanAction() {
576 List<Action> actionList = new ArrayList<Action>();
577 ActionBuilder ab = new ActionBuilder();
578 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
579 vlan.setEthernetType(0x8101);
580 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
581 actionList.add(ab.build());
587 private GroupBuilder createTestRemoveGroup() {
589 GroupKey key = new GroupKey(new GroupId(id));
590 GroupBuilder group = new GroupBuilder();
591 /* BucketBuilder bucket = new BucketBuilder();
592 bucket.setBucketId(new BucketId((long) 12));
593 bucket.setKey(new BucketKey(new BucketId((long) 12))); */
595 // group.setInstall(false);
597 group.setGroupId(new GroupId(id));
598 /* PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
599 ActionBuilder action = new ActionBuilder();
600 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
601 List<Action> actions = new ArrayList<Action>();
602 actions.add(action.build()); */
603 /* bucket.setAction(actions);
604 bucket.setWatchGroup((long) 14);
605 bucket.setWatchPort((long) 1234);
606 bucket.setWeight(15); */
607 // group.setGroupType(GroupTypes.GroupSelect);
608 // group.setGroupName(originalGroupName);
609 // group.setBarrier(false);
610 // BucketsBuilder value = new BucketsBuilder();
611 // List<Bucket> value1 = new ArrayList<Bucket>();
612 // value1.add(bucket.build());
613 // value.setBucket(value1);
614 // group.setBuckets(value.build());
615 testGroup2 = group.build();
620 public void _removeGroup(final CommandInterpreter ci) {
621 String nref = ci.nextArgument();
624 ci.println("test node added");
627 ci.println("User node added" + nref);
628 createUserNode(nref);
630 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
631 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
632 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.getKey())
633 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId()));
634 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
635 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
636 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
638 public void onSuccess(Void aVoid) {
639 ci.println("Status of Group Data Loaded Transaction: success.");
643 public void onFailure(Throwable throwable) {
644 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
649 public void _addGroup(CommandInterpreter ci) {
650 String nref = ci.nextArgument();
653 ci.println("test node added");
656 ci.println("User node added" + nref);
657 createUserNode(nref);
659 createTestGroup(ci.nextArgument(), ci.nextArgument(), "add");
660 writeGroup(ci, testGroup);
663 private void writeGroup(final CommandInterpreter ci, Group group) {
664 ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
665 InstanceIdentifier<Group> path1 = InstanceIdentifier.create(Nodes.class)
666 .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
667 .child(Group.class, new GroupKey(group.getGroupId()));
668 modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true);
669 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true);
670 CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
671 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
673 public void onSuccess(Void aVoid) {
674 ci.println("Status of Group Data Loaded Transaction: success.");
678 public void onFailure(Throwable throwable) {
679 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
684 public void _modifyGroup(CommandInterpreter ci) {
685 String nref = ci.nextArgument();
688 ci.println("test node added");
691 ci.println("User node added" + nref);
692 createUserNode(nref);
694 GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify");
695 writeGroup(ci, group.build());
697 // group.setGroupName(originalGroupName);
698 // writeGroup(ci, group.build());
702 public String getHelp() {
703 StringBuilder help = new StringBuilder();
704 help.append("---FRM MD-SAL Group test module---\n");
705 help.append("\t addGroup <node id> - node ref\n");
706 help.append("\t modifyGroup <node id> - node ref\n");
707 help.append("\t removeGroup <node id> - node ref\n");
709 return help.toString();
712 private static NodeRef createNodeRef(String string) {
713 NodeKey key = new NodeKey(new NodeId(string));
714 InstanceIdentifier<Node> path =
715 InstanceIdentifier.create(Nodes.class).child(Node.class, key);
717 return new NodeRef(path);