Adding Action testCases to GroupTestProvider
[openflowplugin.git] / test-provider / src / main / java / org / opendaylight / openflowplugin / test / OpenflowpluginGroupTestCommandProvider.java
1 package org.opendaylight.openflowplugin.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.concurrent.ExecutionException;
6 import java.util.concurrent.Future;
7
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;
71
72 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
73
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";
81
82     public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
83         this.ctx = ctx;
84     }
85
86     public void onSessionInitiated(ProviderContext session) {
87         pc = session;
88         dataBrokerService = session.getSALService(DataBrokerService.class);
89         ctx.registerService(CommandProvider.class.getName(), this, null);
90         createTestNode();
91     }
92
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();
99     }
100
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();
107     }
108
109     private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
110         return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance();
111     }
112
113     private GroupBuilder createTestGroup() {
114         // Sample data , committing to DataStore
115         DataModification modification = dataBrokerService.beginTransaction();
116
117         long id = 123;
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));
122         group.setKey(key);
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());
128         action.setOrder(0);
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>();
140
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
162
163         value.setBucket(value1);
164         group.setBuckets(value.build());
165         testGroup = group.build();
166         return group;
167     }
168
169     private BucketBuilder Action1() {
170
171         BucketBuilder bucket = new BucketBuilder();
172         bucket.setBucketId(new BucketId((long) 13));
173
174         List<Action> actions = new ArrayList<Action>();
175         ActionBuilder ab = new ActionBuilder();
176         ActionBuilder ab1 = new ActionBuilder();
177
178         SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
179         SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
180         // IPv4
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());
191
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());
196
197         bucket.setAction(actions);
198         bucket.setWatchGroup((long) 14);
199         bucket.setWatchPort((long) 1234);
200         bucket.setWeight(15);
201
202         return bucket;
203     }
204
205     private BucketBuilder Action2() {
206
207         BucketBuilder bucket = new BucketBuilder();
208         bucket.setBucketId(new BucketId((long) 14));
209
210         List<Action> actions = new ArrayList<Action>();
211         ActionBuilder ab = new ActionBuilder();
212
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());
217
218         bucket.setAction(actions);
219         bucket.setWatchGroup((long) 14);
220         bucket.setWatchPort((long) 1234);
221         bucket.setWeight(15);
222
223         return bucket;
224     }
225
226     private BucketBuilder Action3() {
227
228         BucketBuilder bucket = new BucketBuilder();
229         bucket.setBucketId(new BucketId((long) 15));
230
231         List<Action> actions = new ArrayList<Action>();
232         ActionBuilder ab = new ActionBuilder();
233
234         PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
235         ab.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
236         actions.add(ab.build());
237
238         bucket.setAction(actions);
239         bucket.setWatchGroup((long) 14);
240         bucket.setWatchPort((long) 1234);
241         bucket.setWeight(15);
242
243         return bucket;
244     }
245
246     private BucketBuilder Action4() {
247
248         BucketBuilder bucket = new BucketBuilder();
249         bucket.setBucketId(new BucketId((long) 16));
250
251         List<Action> actions = new ArrayList<Action>();
252         ActionBuilder ab = new ActionBuilder();
253
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());
258
259         bucket.setAction(actions);
260         bucket.setWatchGroup((long) 14);
261         bucket.setWatchPort((long) 1234);
262         bucket.setWeight(15);
263
264         return bucket;
265     }
266
267     private BucketBuilder Action5() {
268
269         BucketBuilder bucket = new BucketBuilder();
270         bucket.setBucketId(new BucketId((long) 17));
271
272         List<Action> actions = new ArrayList<Action>();
273         ActionBuilder ab = new ActionBuilder();
274
275         PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
276         popMplsActionBuilder.setEthernetType(0XB);
277         ab.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
278         actions.add(ab.build());
279
280         bucket.setAction(actions);
281         bucket.setWatchGroup((long) 14);
282         bucket.setWatchPort((long) 1234);
283         bucket.setWeight(15);
284
285         return bucket;
286     }
287
288     private BucketBuilder Action6() {
289
290         BucketBuilder bucket = new BucketBuilder();
291         bucket.setBucketId(new BucketId((long) 18));
292
293         List<Action> actions = new ArrayList<Action>();
294         ActionBuilder ab = new ActionBuilder();
295
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());
300
301         bucket.setAction(actions);
302         bucket.setWatchGroup((long) 14);
303         bucket.setWatchPort((long) 1234);
304         bucket.setWeight(15);
305
306         return bucket;
307     }
308
309     private BucketBuilder Action7() {
310
311         BucketBuilder bucket = new BucketBuilder();
312         bucket.setBucketId(new BucketId((long) 19));
313
314         List<Action> actions = new ArrayList<Action>();
315         ActionBuilder ab = new ActionBuilder();
316
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());
324
325         bucket.setAction(actions);
326         bucket.setWatchGroup((long) 14);
327         bucket.setWatchPort((long) 1234);
328         bucket.setWeight(15);
329
330         return bucket;
331     }
332
333     private BucketBuilder Action8() {
334
335         BucketBuilder bucket = new BucketBuilder();
336         bucket.setBucketId(new BucketId((long) 20));
337
338         List<Action> actions = new ArrayList<Action>();
339         ActionBuilder ab = new ActionBuilder();
340
341         DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
342         ab.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
343         actions.add(ab.build());
344
345         bucket.setAction(actions);
346         bucket.setWatchGroup((long) 14);
347         bucket.setWatchPort((long) 1234);
348         bucket.setWeight(15);
349
350         return bucket;
351     }
352
353     private BucketBuilder Action9() {
354
355         BucketBuilder bucket = new BucketBuilder();
356         bucket.setBucketId(new BucketId((long) 21));
357
358         List<Action> actions = new ArrayList<Action>();
359         ActionBuilder ab = new ActionBuilder();
360
361         SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
362         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
363         ab.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
364         actions.add(ab.build());
365
366         bucket.setAction(actions);
367         bucket.setWatchGroup((long) 14);
368         bucket.setWatchPort((long) 1234);
369         bucket.setWeight(15);
370
371         return bucket;
372     }
373
374     private BucketBuilder Action10() {
375
376         BucketBuilder bucket = new BucketBuilder();
377         bucket.setBucketId(new BucketId((long) 22));
378
379         List<Action> actions = new ArrayList<Action>();
380         ActionBuilder ab = new ActionBuilder();
381
382         SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
383         setNwTtlActionBuilder.setNwTtl((short) 1);
384         ab.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
385         actions.add(ab.build());
386
387         bucket.setAction(actions);
388         bucket.setWatchGroup((long) 14);
389         bucket.setWatchPort((long) 1234);
390         bucket.setWeight(15);
391
392         return bucket;
393     }
394
395     private BucketBuilder Action11() {
396
397         BucketBuilder bucket = new BucketBuilder();
398         bucket.setBucketId(new BucketId((long) 23));
399
400         List<Action> actions = new ArrayList<Action>();
401         ActionBuilder ab = new ActionBuilder();
402
403         DecNwTtlBuilder ta = new DecNwTtlBuilder();
404         DecNwTtl decNwTtl = ta.build();
405         ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(decNwTtl).build());
406         actions.add(ab.build());
407
408         bucket.setAction(actions);
409         bucket.setWatchGroup((long) 14);
410         bucket.setWatchPort((long) 1234);
411         bucket.setWeight(15);
412
413         return bucket;
414     }
415
416     private BucketBuilder Action12() {
417
418         BucketBuilder bucket = new BucketBuilder();
419         bucket.setBucketId(new BucketId((long) 24));
420
421         List<Action> actions = new ArrayList<Action>();
422         ActionBuilder ab = new ActionBuilder();
423
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());
431
432         bucket.setAction(actions);
433         bucket.setWatchGroup((long) 14);
434         bucket.setWatchPort((long) 1234);
435         bucket.setWeight(15);
436
437         return bucket;
438     }
439
440     private BucketBuilder Action13() {
441
442         BucketBuilder bucket = new BucketBuilder();
443         bucket.setBucketId(new BucketId((long) 25));
444
445         List<Action> actions = new ArrayList<Action>();
446         ActionBuilder ab = new ActionBuilder();
447
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());
455
456         bucket.setAction(actions);
457         bucket.setWatchGroup((long) 14);
458         bucket.setWatchPort((long) 1234);
459         bucket.setWeight(15);
460
461         return bucket;
462     }
463
464     private BucketBuilder Action14() {
465
466         BucketBuilder bucket = new BucketBuilder();
467         bucket.setBucketId(new BucketId((long) 26));
468
469         List<Action> actions = new ArrayList<Action>();
470         ActionBuilder ab = new ActionBuilder();
471
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());
479
480         bucket.setAction(actions);
481         bucket.setWatchGroup((long) 14);
482         bucket.setWatchPort((long) 1234);
483         bucket.setWeight(15);
484
485         return bucket;
486     }
487
488     private BucketBuilder Action15() {
489
490         BucketBuilder bucket = new BucketBuilder();
491         bucket.setBucketId(new BucketId((long) 27));
492
493         List<Action> actions = new ArrayList<Action>();
494         ActionBuilder ab = new ActionBuilder();
495
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());
503
504         bucket.setAction(actions);
505         bucket.setWatchGroup((long) 14);
506         bucket.setWatchPort((long) 1234);
507         bucket.setWeight(15);
508
509         return bucket;
510     }
511
512     private BucketBuilder Action16() {
513
514         BucketBuilder bucket = new BucketBuilder();
515         bucket.setBucketId(new BucketId((long) 28));
516
517         List<Action> actions = new ArrayList<Action>();
518         ActionBuilder ab = new ActionBuilder();
519
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());
527
528         bucket.setAction(actions);
529         bucket.setWatchGroup((long) 14);
530         bucket.setWatchPort((long) 1234);
531         bucket.setWeight(15);
532
533         return bucket;
534     }
535
536     private BucketBuilder Action17() {
537
538         BucketBuilder bucket = new BucketBuilder();
539         bucket.setBucketId(new BucketId((long) 29));
540
541         List<Action> actions = new ArrayList<Action>();
542         ActionBuilder ab = new ActionBuilder();
543
544         CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
545         ab.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
546         actions.add(ab.build());
547
548         bucket.setAction(actions);
549         bucket.setWatchGroup((long) 14);
550         bucket.setWatchPort((long) 1234);
551         bucket.setWeight(15);
552
553         return bucket;
554     }
555
556     private BucketBuilder Action18() {
557
558         BucketBuilder bucket = new BucketBuilder();
559         bucket.setBucketId(new BucketId((long) 30));
560
561         List<Action> actions = new ArrayList<Action>();
562         ActionBuilder ab = new ActionBuilder();
563
564         CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
565         ab.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
566         actions.add(ab.build());
567
568         bucket.setAction(actions);
569         bucket.setWatchGroup((long) 14);
570         bucket.setWatchPort((long) 1234);
571         bucket.setWeight(15);
572
573         return bucket;
574     }
575
576     private BucketBuilder Action19() {
577
578         BucketBuilder bucket = new BucketBuilder();
579         bucket.setBucketId(new BucketId((long) 31));
580
581         List<Action> actions = new ArrayList<Action>();
582         ActionBuilder ab = new ActionBuilder();
583
584         SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
585         setQueueActionBuilder.setQueueId(1L);
586         ab.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
587         actions.add(ab.build());
588
589         bucket.setAction(actions);
590         bucket.setWatchGroup((long) 14);
591         bucket.setWatchPort((long) 1234);
592         bucket.setWeight(15);
593
594         return bucket;
595     }
596
597     private BucketBuilder Action20() {
598
599         BucketBuilder bucket = new BucketBuilder();
600         bucket.setBucketId(new BucketId((long) 31));
601
602         List<Action> actions = new ArrayList<Action>();
603         ActionBuilder ab = new ActionBuilder();
604
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());
610         ab.setOrder(0);
611         ab.setKey(new ActionKey(0));
612         actions.add(ab.build());
613
614         bucket.setAction(actions);
615         bucket.setWatchGroup((long) 14);
616         bucket.setWatchPort((long) 1234);
617         bucket.setWeight(15);
618
619         return bucket;
620     }
621
622     public void _removeGroup(CommandInterpreter ci) {
623         String nref = ci.nextArgument();
624
625         if (nref == null) {
626             ci.println("test node added");
627             createTestNode();
628         } else {
629             ci.println("User node added" + nref);
630             createUserNode(nref);
631         }
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();
643         try {
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: ");
648
649         } catch (InterruptedException e) {
650             // TODO Auto-generated catch block
651             e.printStackTrace();
652         } catch (ExecutionException e) {
653             // TODO Auto-generated catch block
654             e.printStackTrace();
655         }
656     }
657
658     public void _addGroup(CommandInterpreter ci) {
659         String nref = ci.nextArgument();
660
661         if (nref == null) {
662             ci.println("test node added");
663             createTestNode();
664         } else {
665             ci.println("User node added" + nref);
666             createUserNode(nref);
667         }
668         createTestGroup();
669         writeGroup(ci, testGroup);
670     }
671
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();
681         try {
682             RpcResult<TransactionStatus> result = commitFuture.get();
683             TransactionStatus status = result.getResult();
684             ci.println("Status of Group Data Loaded Transaction: " + status);
685
686         } catch (InterruptedException e) {
687             // TODO Auto-generated catch block
688             e.printStackTrace();
689         } catch (ExecutionException e) {
690             // TODO Auto-generated catch block
691             e.printStackTrace();
692         }
693     }
694
695     public void _modifyGroup(CommandInterpreter ci) {
696         String nref = ci.nextArgument();
697
698         if (nref == null) {
699             ci.println("test node added");
700             createTestNode();
701         } else {
702             ci.println("User node added" + nref);
703             createUserNode(nref);
704         }
705         GroupBuilder group = createTestGroup();
706         group.setGroupName(updatedGroupName);
707         writeGroup(ci, group.build());
708         group.setGroupName(originalGroupName);
709         writeGroup(ci, group.build());
710     }
711
712     @Override
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");
719
720         return help.toString();
721     }
722
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();
726
727         return new NodeRef(path);
728     }
729
730     private static void removeMeImFaick() {
731
732     }
733 }