1 package org.opendaylight.openflowplugin.test;
3 import java.util.ArrayList;
5 import java.util.concurrent.ExecutionException;
6 import java.util.concurrent.Future;
8 import org.eclipse.osgi.framework.console.CommandInterpreter;
9 import org.eclipse.osgi.framework.console.CommandProvider;
10 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
11 import org.opendaylight.controller.md.sal.common.api.data.DataModification;
12 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
13 import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtl;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
67 import org.opendaylight.yangtools.yang.binding.DataObject;
68 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
69 import org.opendaylight.yangtools.yang.common.RpcResult;
70 import org.osgi.framework.BundleContext;
72 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
74 private DataBrokerService dataBrokerService;
75 private ProviderContext pc;
76 private final BundleContext ctx;
77 private Group testGroup;
78 private Node testNode;
79 private final String originalGroupName = "Foo";
80 private final String updatedGroupName = "Bar";
82 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
86 public void onSessionInitiated(ProviderContext session) {
88 dataBrokerService = session.getSALService(DataBrokerService.class);
89 ctx.registerService(CommandProvider.class.getName(), this, null);
93 private void createUserNode(String nodeRef) {
94 NodeRef nodeOne = createNodeRef(nodeRef);
95 NodeBuilder builder = new NodeBuilder();
96 builder.setId(new NodeId(nodeRef));
97 builder.setKey(new NodeKey(builder.getId()));
98 testNode = builder.build();
101 private void createTestNode() {
102 NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
103 NodeBuilder builder = new NodeBuilder();
104 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
105 builder.setKey(new NodeKey(builder.getId()));
106 testNode = builder.build();
109 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
110 return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance();
113 private GroupBuilder createTestGroup() {
114 // Sample data , committing to DataStore
115 DataModification modification = dataBrokerService.beginTransaction();
118 GroupKey key = new GroupKey(new GroupId(id));
119 GroupBuilder group = new GroupBuilder();
120 BucketBuilder bucket = new BucketBuilder();
121 bucket.setBucketId(new BucketId((long) 12));
123 group.setInstall(false);
124 group.setGroupId(new GroupId(id));
125 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
126 ActionBuilder action = new ActionBuilder();
127 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
129 List<Action> actions = new ArrayList<Action>();
130 actions.add(action.build());
131 bucket.setAction(actions);
132 bucket.setWatchGroup((long) 14);
133 bucket.setWatchPort((long) 1234);
134 bucket.setWeight(15);
135 group.setGroupType(GroupTypes.GroupSelect);
136 group.setGroupName(originalGroupName);
137 group.setBarrier(false);
138 BucketsBuilder value = new BucketsBuilder();
139 List<Bucket> value1 = new ArrayList<Bucket>();
141 value1.add(bucket.build());
142 value1.add(Action1().build()); // setField-ipv4
143 value1.add(Action2().build()); // push Pbb
144 value1.add(Action3().build()); // pop Pbb
145 value1.add(Action4().build()); // push mpls
146 value1.add(Action5().build()); // pop mpls
147 value1.add(Action6().build()); // push vlan
148 value1.add(Action7().build()); // Output-ALL
149 value1.add(Action8().build()); // Dec_MPLS
150 value1.add(Action9().build()); // Set_MPLS
151 value1.add(Action10().build()); // setNwTTL
152 value1.add(Action11().build()); // decNwTTL
153 value1.add(Action12().build()); // Output-Inport
154 value1.add(Action13().build()); // Output-Flood
155 value1.add(Action14().build()); // Output-Normal
156 value1.add(Action15().build()); // Output-Local
157 value1.add(Action16().build()); // Output-Table
158 value1.add(Action17().build()); // Copy-ttl-in
159 value1.add(Action18().build()); // copy-ttl-out
160 value1.add(Action19().build()); // set-queue
161 value1.add(Action20().build()); // send to controller
163 value.setBucket(value1);
164 group.setBuckets(value.build());
165 testGroup = group.build();
169 private BucketBuilder Action1() {
171 BucketBuilder bucket = new BucketBuilder();
172 bucket.setBucketId(new BucketId((long) 13));
174 List<Action> actions = new ArrayList<Action>();
175 ActionBuilder ab = new ActionBuilder();
176 ActionBuilder ab1 = new ActionBuilder();
178 SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
179 SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
181 Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
182 Ipv4MatchBuilder ipv4Match1 = new Ipv4MatchBuilder();
183 Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.5210");
184 Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1");
185 ipv4Match1.setIpv4Destination(dstip);
186 ipv4Match.setIpv4Source(srcip);
187 setFieldBuilder.setLayer3Match(ipv4Match.build());
188 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
189 ab.setKey(new ActionKey(0));
190 actions.add(ab.build());
192 setFieldBuilder1.setLayer3Match(ipv4Match1.build());
193 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
194 ab1.setKey(new ActionKey(1));
195 actions.add(ab1.build());
197 bucket.setAction(actions);
198 bucket.setWatchGroup((long) 14);
199 bucket.setWatchPort((long) 1234);
200 bucket.setWeight(15);
205 private BucketBuilder Action2() {
207 BucketBuilder bucket = new BucketBuilder();
208 bucket.setBucketId(new BucketId((long) 14));
210 List<Action> actions = new ArrayList<Action>();
211 ActionBuilder ab = new ActionBuilder();
213 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
214 pbb.setEthernetType(new Integer(0x88E7));
215 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
216 actions.add(ab.build());
218 bucket.setAction(actions);
219 bucket.setWatchGroup((long) 14);
220 bucket.setWatchPort((long) 1234);
221 bucket.setWeight(15);
226 private BucketBuilder Action3() {
228 BucketBuilder bucket = new BucketBuilder();
229 bucket.setBucketId(new BucketId((long) 15));
231 List<Action> actions = new ArrayList<Action>();
232 ActionBuilder ab = new ActionBuilder();
234 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
235 ab.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
236 actions.add(ab.build());
238 bucket.setAction(actions);
239 bucket.setWatchGroup((long) 14);
240 bucket.setWatchPort((long) 1234);
241 bucket.setWeight(15);
246 private BucketBuilder Action4() {
248 BucketBuilder bucket = new BucketBuilder();
249 bucket.setBucketId(new BucketId((long) 16));
251 List<Action> actions = new ArrayList<Action>();
252 ActionBuilder ab = new ActionBuilder();
254 PushMplsActionBuilder push = new PushMplsActionBuilder();
255 push.setEthernetType(new Integer(0x8847));
256 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
257 actions.add(ab.build());
259 bucket.setAction(actions);
260 bucket.setWatchGroup((long) 14);
261 bucket.setWatchPort((long) 1234);
262 bucket.setWeight(15);
267 private BucketBuilder Action5() {
269 BucketBuilder bucket = new BucketBuilder();
270 bucket.setBucketId(new BucketId((long) 17));
272 List<Action> actions = new ArrayList<Action>();
273 ActionBuilder ab = new ActionBuilder();
275 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
276 popMplsActionBuilder.setEthernetType(0XB);
277 ab.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
278 actions.add(ab.build());
280 bucket.setAction(actions);
281 bucket.setWatchGroup((long) 14);
282 bucket.setWatchPort((long) 1234);
283 bucket.setWeight(15);
288 private BucketBuilder Action6() {
290 BucketBuilder bucket = new BucketBuilder();
291 bucket.setBucketId(new BucketId((long) 18));
293 List<Action> actions = new ArrayList<Action>();
294 ActionBuilder ab = new ActionBuilder();
296 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
297 vlan.setEthernetType(new Integer(0x8100));
298 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
299 actions.add(ab.build());
301 bucket.setAction(actions);
302 bucket.setWatchGroup((long) 14);
303 bucket.setWatchPort((long) 1234);
304 bucket.setWeight(15);
309 private BucketBuilder Action7() {
311 BucketBuilder bucket = new BucketBuilder();
312 bucket.setBucketId(new BucketId((long) 19));
314 List<Action> actions = new ArrayList<Action>();
315 ActionBuilder ab = new ActionBuilder();
317 OutputActionBuilder output = new OutputActionBuilder();
318 output.setMaxLength(30);
319 Uri value = new Uri("ALL");
320 output.setOutputNodeConnector(value);
321 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
322 ab.setKey(new ActionKey(0));
323 actions.add(ab.build());
325 bucket.setAction(actions);
326 bucket.setWatchGroup((long) 14);
327 bucket.setWatchPort((long) 1234);
328 bucket.setWeight(15);
333 private BucketBuilder Action8() {
335 BucketBuilder bucket = new BucketBuilder();
336 bucket.setBucketId(new BucketId((long) 20));
338 List<Action> actions = new ArrayList<Action>();
339 ActionBuilder ab = new ActionBuilder();
341 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
342 ab.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
343 actions.add(ab.build());
345 bucket.setAction(actions);
346 bucket.setWatchGroup((long) 14);
347 bucket.setWatchPort((long) 1234);
348 bucket.setWeight(15);
353 private BucketBuilder Action9() {
355 BucketBuilder bucket = new BucketBuilder();
356 bucket.setBucketId(new BucketId((long) 21));
358 List<Action> actions = new ArrayList<Action>();
359 ActionBuilder ab = new ActionBuilder();
361 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
362 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
363 ab.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
364 actions.add(ab.build());
366 bucket.setAction(actions);
367 bucket.setWatchGroup((long) 14);
368 bucket.setWatchPort((long) 1234);
369 bucket.setWeight(15);
374 private BucketBuilder Action10() {
376 BucketBuilder bucket = new BucketBuilder();
377 bucket.setBucketId(new BucketId((long) 22));
379 List<Action> actions = new ArrayList<Action>();
380 ActionBuilder ab = new ActionBuilder();
382 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
383 setNwTtlActionBuilder.setNwTtl((short) 1);
384 ab.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
385 actions.add(ab.build());
387 bucket.setAction(actions);
388 bucket.setWatchGroup((long) 14);
389 bucket.setWatchPort((long) 1234);
390 bucket.setWeight(15);
395 private BucketBuilder Action11() {
397 BucketBuilder bucket = new BucketBuilder();
398 bucket.setBucketId(new BucketId((long) 23));
400 List<Action> actions = new ArrayList<Action>();
401 ActionBuilder ab = new ActionBuilder();
403 DecNwTtlBuilder ta = new DecNwTtlBuilder();
404 DecNwTtl decNwTtl = ta.build();
405 ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(decNwTtl).build());
406 actions.add(ab.build());
408 bucket.setAction(actions);
409 bucket.setWatchGroup((long) 14);
410 bucket.setWatchPort((long) 1234);
411 bucket.setWeight(15);
416 private BucketBuilder Action12() {
418 BucketBuilder bucket = new BucketBuilder();
419 bucket.setBucketId(new BucketId((long) 24));
421 List<Action> actions = new ArrayList<Action>();
422 ActionBuilder ab = new ActionBuilder();
424 OutputActionBuilder output = new OutputActionBuilder();
425 output.setMaxLength(30);
426 Uri value = new Uri("INPORT");
427 output.setOutputNodeConnector(value);
428 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
429 ab.setKey(new ActionKey(0));
430 actions.add(ab.build());
432 bucket.setAction(actions);
433 bucket.setWatchGroup((long) 14);
434 bucket.setWatchPort((long) 1234);
435 bucket.setWeight(15);
440 private BucketBuilder Action13() {
442 BucketBuilder bucket = new BucketBuilder();
443 bucket.setBucketId(new BucketId((long) 25));
445 List<Action> actions = new ArrayList<Action>();
446 ActionBuilder ab = new ActionBuilder();
448 OutputActionBuilder output = new OutputActionBuilder();
449 output.setMaxLength(30);
450 Uri value = new Uri("FLOOD");
451 output.setOutputNodeConnector(value);
452 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
453 ab.setKey(new ActionKey(0));
454 actions.add(ab.build());
456 bucket.setAction(actions);
457 bucket.setWatchGroup((long) 14);
458 bucket.setWatchPort((long) 1234);
459 bucket.setWeight(15);
464 private BucketBuilder Action14() {
466 BucketBuilder bucket = new BucketBuilder();
467 bucket.setBucketId(new BucketId((long) 26));
469 List<Action> actions = new ArrayList<Action>();
470 ActionBuilder ab = new ActionBuilder();
472 OutputActionBuilder output = new OutputActionBuilder();
473 output.setMaxLength(30);
474 Uri value = new Uri("NORMAL");
475 output.setOutputNodeConnector(value);
476 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
477 ab.setKey(new ActionKey(0));
478 actions.add(ab.build());
480 bucket.setAction(actions);
481 bucket.setWatchGroup((long) 14);
482 bucket.setWatchPort((long) 1234);
483 bucket.setWeight(15);
488 private BucketBuilder Action15() {
490 BucketBuilder bucket = new BucketBuilder();
491 bucket.setBucketId(new BucketId((long) 27));
493 List<Action> actions = new ArrayList<Action>();
494 ActionBuilder ab = new ActionBuilder();
496 OutputActionBuilder output = new OutputActionBuilder();
497 output.setMaxLength(30);
498 Uri value = new Uri("LOCAL");
499 output.setOutputNodeConnector(value);
500 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
501 ab.setKey(new ActionKey(0));
502 actions.add(ab.build());
504 bucket.setAction(actions);
505 bucket.setWatchGroup((long) 14);
506 bucket.setWatchPort((long) 1234);
507 bucket.setWeight(15);
512 private BucketBuilder Action16() {
514 BucketBuilder bucket = new BucketBuilder();
515 bucket.setBucketId(new BucketId((long) 28));
517 List<Action> actions = new ArrayList<Action>();
518 ActionBuilder ab = new ActionBuilder();
520 OutputActionBuilder output = new OutputActionBuilder();
521 output.setMaxLength(30);
522 Uri value = new Uri("TABLE");
523 output.setOutputNodeConnector(value);
524 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
525 ab.setKey(new ActionKey(0));
526 actions.add(ab.build());
528 bucket.setAction(actions);
529 bucket.setWatchGroup((long) 14);
530 bucket.setWatchPort((long) 1234);
531 bucket.setWeight(15);
536 private BucketBuilder Action17() {
538 BucketBuilder bucket = new BucketBuilder();
539 bucket.setBucketId(new BucketId((long) 29));
541 List<Action> actions = new ArrayList<Action>();
542 ActionBuilder ab = new ActionBuilder();
544 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
545 ab.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
546 actions.add(ab.build());
548 bucket.setAction(actions);
549 bucket.setWatchGroup((long) 14);
550 bucket.setWatchPort((long) 1234);
551 bucket.setWeight(15);
556 private BucketBuilder Action18() {
558 BucketBuilder bucket = new BucketBuilder();
559 bucket.setBucketId(new BucketId((long) 30));
561 List<Action> actions = new ArrayList<Action>();
562 ActionBuilder ab = new ActionBuilder();
564 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
565 ab.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
566 actions.add(ab.build());
568 bucket.setAction(actions);
569 bucket.setWatchGroup((long) 14);
570 bucket.setWatchPort((long) 1234);
571 bucket.setWeight(15);
576 private BucketBuilder Action19() {
578 BucketBuilder bucket = new BucketBuilder();
579 bucket.setBucketId(new BucketId((long) 31));
581 List<Action> actions = new ArrayList<Action>();
582 ActionBuilder ab = new ActionBuilder();
584 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
585 setQueueActionBuilder.setQueueId(1L);
586 ab.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
587 actions.add(ab.build());
589 bucket.setAction(actions);
590 bucket.setWatchGroup((long) 14);
591 bucket.setWatchPort((long) 1234);
592 bucket.setWeight(15);
597 private BucketBuilder Action20() {
599 BucketBuilder bucket = new BucketBuilder();
600 bucket.setBucketId(new BucketId((long) 31));
602 List<Action> actions = new ArrayList<Action>();
603 ActionBuilder ab = new ActionBuilder();
605 OutputActionBuilder output = new OutputActionBuilder();
606 output.setMaxLength(56);
607 Uri value = new Uri("CONTROLLER");
608 output.setOutputNodeConnector(value);
609 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
611 ab.setKey(new ActionKey(0));
612 actions.add(ab.build());
614 bucket.setAction(actions);
615 bucket.setWatchGroup((long) 14);
616 bucket.setWatchPort((long) 1234);
617 bucket.setWeight(15);
622 public void _removeGroup(CommandInterpreter ci) {
623 String nref = ci.nextArgument();
626 ci.println("test node added");
629 ci.println("User node added" + nref);
630 createUserNode(nref);
632 GroupBuilder gbuilder = createTestGroup();
633 DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
634 InstanceIdentifier<Group> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
635 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId())).build();
636 // DataObject cls = (DataObject)
637 // modification.readConfigurationData(path1);
638 // modification.removeOperationalData(nodeToInstanceId(testNode));
639 modification.removeOperationalData(path1);
640 // modification.removeConfigurationData(nodeToInstanceId(testNode));
641 modification.removeConfigurationData(path1);
642 Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
644 RpcResult<TransactionStatus> result = commitFuture.get();
645 TransactionStatus status = result.getResult();
646 ci.println("Status of Group Data Loaded Transaction: " + status);
647 ci.println("Status of Group Data Loaded Transaction: ");
649 } catch (InterruptedException e) {
650 // TODO Auto-generated catch block
652 } catch (ExecutionException e) {
653 // TODO Auto-generated catch block
658 public void _addGroup(CommandInterpreter ci) {
659 String nref = ci.nextArgument();
662 ci.println("test node added");
665 ci.println("User node added" + nref);
666 createUserNode(nref);
669 writeGroup(ci, testGroup);
672 private void writeGroup(CommandInterpreter ci, Group group) {
673 DataModification modification = dataBrokerService.beginTransaction();
674 InstanceIdentifier<Group> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
675 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(group.getGroupId())).build();
676 modification.putOperationalData(nodeToInstanceId(testNode), testNode);
677 modification.putOperationalData(path1, group);
678 modification.putConfigurationData(nodeToInstanceId(testNode), testNode);
679 modification.putConfigurationData(path1, group);
680 Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
682 RpcResult<TransactionStatus> result = commitFuture.get();
683 TransactionStatus status = result.getResult();
684 ci.println("Status of Group Data Loaded Transaction: " + status);
686 } catch (InterruptedException e) {
687 // TODO Auto-generated catch block
689 } catch (ExecutionException e) {
690 // TODO Auto-generated catch block
695 public void _modifyGroup(CommandInterpreter ci) {
696 String nref = ci.nextArgument();
699 ci.println("test node added");
702 ci.println("User node added" + nref);
703 createUserNode(nref);
705 GroupBuilder group = createTestGroup();
706 group.setGroupName(updatedGroupName);
707 writeGroup(ci, group.build());
708 group.setGroupName(originalGroupName);
709 writeGroup(ci, group.build());
713 public String getHelp() {
714 StringBuffer help = new StringBuffer();
715 help.append("---FRM MD-SAL Group test module---\n");
716 help.append("\t addGroup <node id> - node ref\n");
717 help.append("\t modifyGroup <node id> - node ref\n");
718 help.append("\t removeGroup <node id> - node ref\n");
720 return help.toString();
723 private static NodeRef createNodeRef(String string) {
724 NodeKey key = new NodeKey(new NodeId(string));
725 InstanceIdentifier<Node> path = InstanceIdentifier.builder(Nodes.class).child(Node.class, key).toInstance();
727 return new NodeRef(path);
730 private static void removeMeImFaick() {