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 java.util.ArrayList;
11 import java.util.List;
12 import java.util.concurrent.ExecutionException;
13 import java.util.concurrent.Future;
15 import org.eclipse.osgi.framework.console.CommandInterpreter;
16 import org.eclipse.osgi.framework.console.CommandProvider;
17 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
18 import org.opendaylight.controller.md.sal.common.api.data.DataModification;
19 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
20 import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.VlanCfi;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.ControllerActionCaseBuilder;
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.DropActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodAllActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.HwPathActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.LoopbackActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlTypeActionCaseBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNextHopActionCaseBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanCfiActionCaseBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SwPathActionCaseBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.controller.action._case.ControllerActionBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropAction;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropActionBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.action._case.FloodActionBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.all.action._case.FloodAllActionBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.hw.path.action._case.HwPathActionBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.loopback.action._case.LoopbackActionBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.type.action._case.SetDlTypeActionBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.next.hop.action._case.SetNextHopActionBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.cfi.action._case.SetVlanCfiActionBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.sw.path.action._case.SwPathActionBuilder;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Groups;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
121 import org.opendaylight.yangtools.yang.binding.DataObject;
122 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
123 import org.opendaylight.yangtools.yang.common.RpcResult;
124 import org.osgi.framework.BundleContext;
126 public class OpenflowpluginGroupTestCommandProvider implements CommandProvider {
128 private DataBrokerService dataBrokerService;
129 private ProviderContext pc;
130 private final BundleContext ctx;
131 private Group testGroup;
132 private Group testGroup2;
133 private Node testNode;
134 private final String originalGroupName = "Foo";
135 private final String updatedGroupName = "Bar";
137 public OpenflowpluginGroupTestCommandProvider(BundleContext ctx) {
141 public void onSessionInitiated(ProviderContext session) {
143 dataBrokerService = session.getSALService(DataBrokerService.class);
144 ctx.registerService(CommandProvider.class.getName(), this, null);
148 private void createUserNode(String nodeRef) {
149 NodeRef nodeOne = createNodeRef(nodeRef);
150 NodeBuilder builder = new NodeBuilder();
151 builder.setId(new NodeId(nodeRef));
152 builder.setKey(new NodeKey(builder.getId()));
153 testNode = builder.build();
156 private void createTestNode() {
157 NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID);
158 NodeBuilder builder = new NodeBuilder();
159 builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID));
160 builder.setKey(new NodeKey(builder.getId()));
161 testNode = builder.build();
164 private InstanceIdentifier<Node> nodeToInstanceId(Node node) {
165 return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance();
168 private GroupBuilder createTestGroup(String actiontype,String type,String mod) {
169 // Sample data , committing to DataStore
171 String GroupType = type;
172 String ActionType = actiontype;
173 String Groupmod = mod;
174 DataModification modification = dataBrokerService.beginTransaction();
177 GroupKey key = new GroupKey(new GroupId(id));
178 GroupBuilder group = new GroupBuilder();
179 BucketBuilder bucket = new BucketBuilder();
180 bucket.setBucketId(new BucketId((long) 12));
181 bucket.setKey(new BucketKey(new BucketId((long) 12)));
183 if (GroupType == null) {
186 if(ActionType==null){
192 group.setGroupType(GroupTypes.GroupSelect);
195 group.setGroupType(GroupTypes.GroupAll);
198 group.setGroupType(GroupTypes.GroupIndirect);
201 group.setGroupType(GroupTypes.GroupFf);
207 bucket.setAction(createPopVlanAction());
210 bucket.setAction(createPushVlanAction());
213 bucket.setAction(createPushMplsAction());
216 bucket.setAction(createPopMplsAction());
219 bucket.setAction(createPopPbbAction());
222 bucket.setAction(createPushPbbAction());
225 bucket.setAction(createPushPbbAction());
228 bucket.setAction(createCopyTtlInAction());
231 bucket.setAction(createCopyTtlOutAction());
234 bucket.setAction(createDecMplsTtlAction());
237 bucket.setAction(createDecNwTtlAction());
240 bucket.setAction(createSetQueueAction());
243 bucket.setAction(createSetNwTtlAction());
246 bucket.setAction(createGroupAction());
249 bucket.setAction(createSetMplsTtlAction());
252 bucket.setAction(createFloodOutputAction());
255 bucket.setAction(createAllOutputAction());
258 bucket.setAction(createNormalOutputAction());
261 bucket.setAction(creatTableOutputAction());
264 bucket.setAction(createControllerAction());
267 bucket.setAction(createLocalOutputAction());
270 bucket.setAction(createAnyOutputAction());
273 bucket.setAction(createInportOutputAction());
276 bucket.setAction(null);
279 bucket.setAction(createNonAppyOutputAction());
282 bucket.setAction(createNonAppyPushMplsAction());
285 bucket.setAction(createNonAppyPushPbbAction());
288 bucket.setAction(createNonAppyPushVlanAction());
294 bucket.setWatchGroup((long) 14);
295 bucket.setWatchPort((long) 1234);
296 bucket.setWeight(50);
298 bucket.setWatchGroup((long) 13);
299 bucket.setWatchPort((long) 134);
300 bucket.setWeight(30);
303 // group.setInstall(false);
304 group.setGroupId(new GroupId(id));
305 group.setGroupName(originalGroupName);
306 group.setBarrier(false);
307 BucketsBuilder value = new BucketsBuilder();
308 List<Bucket> value1 = new ArrayList<Bucket>();
309 value1.add(bucket.build());
310 value.setBucket(value1);
311 group.setBuckets(value.build());
312 testGroup = group.build();
318 private List<Action> createPopVlanAction(){
319 PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
320 ActionBuilder action = new ActionBuilder();
321 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
322 action.setKey(new ActionKey(0));
323 List<Action> actions = new ArrayList<Action>();
324 actions.add(action.build());
328 private List<Action> createPushVlanAction(){
329 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
330 vlan.setEthernetType(new Integer(0x8100));
331 ActionBuilder action = new ActionBuilder();
332 action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
333 List<Action> actions = new ArrayList<Action>();
334 actions.add(action.build());
337 private List<Action> createPushMplsAction(){
338 PushMplsActionBuilder push = new PushMplsActionBuilder();
339 push.setEthernetType(new Integer(0x8847));
340 ActionBuilder action = new ActionBuilder();
341 action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
342 List<Action> actions = new ArrayList<Action>();
343 actions.add(action.build());
346 private List<Action> createPopMplsAction(){
347 PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
348 popMplsActionBuilder.setEthernetType(0XB);
349 ActionBuilder action = new ActionBuilder();
350 action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
351 List<Action> actions = new ArrayList<Action>();
352 actions.add(action.build());
356 private List<Action> createPopPbbAction(){
357 PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
358 ActionBuilder action = new ActionBuilder();
359 action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
360 List<Action> actions = new ArrayList<Action>();
361 actions.add(action.build());
364 private List<Action> createPushPbbAction(){
365 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
366 pbb.setEthernetType(new Integer(0x88E7));
367 ActionBuilder action = new ActionBuilder();
368 action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
369 List<Action> actions = new ArrayList<Action>();
370 actions.add(action.build());
373 private List<Action> createSetMplsTtlAction(){
374 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
375 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
376 ActionBuilder action = new ActionBuilder();
377 action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
378 List<Action> actions = new ArrayList<Action>();
379 actions.add(action.build());
382 private List<Action> createSetNwTtlAction(){
383 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
384 setNwTtlActionBuilder.setNwTtl((short) 1);
385 ActionBuilder action = new ActionBuilder();
386 action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
387 List<Action> actions = new ArrayList<Action>();
388 actions.add(action.build());
391 private List<Action> createSetQueueAction(){
392 SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
393 setQueueActionBuilder.setQueueId(1L);
394 ActionBuilder action = new ActionBuilder();
395 action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
396 action.setKey(new ActionKey(0));
397 List<Action> actions = new ArrayList<Action>();
398 actions.add(action.build());
403 private List<Action> createCopyTtlInAction(){
404 CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
405 ActionBuilder action = new ActionBuilder();
406 action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
407 List<Action> actions = new ArrayList<Action>();
408 actions.add(action.build());
412 private List<Action> createCopyTtlOutAction(){
413 CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
414 ActionBuilder action = new ActionBuilder();
415 action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
416 List<Action> actions = new ArrayList<Action>();
417 actions.add(action.build());
421 private List<Action> createDecMplsTtlAction(){
422 DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
423 ActionBuilder action = new ActionBuilder();
424 action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
425 List<Action> actions = new ArrayList<Action>();
426 actions.add(action.build());
429 private List<Action> createDecNwTtlAction(){
430 DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
431 ActionBuilder action = new ActionBuilder();
432 action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
433 List<Action> actions = new ArrayList<Action>();
435 ActionBuilder ab = new ActionBuilder();
436 OutputActionBuilder output = new OutputActionBuilder();
437 // output.setMaxLength(30);
438 Uri value = new Uri("2");
439 output.setOutputNodeConnector(value);
440 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
441 ab.setKey(new ActionKey(0));
443 actions.add(ab.build());
444 actions.add(action.build());
448 private List<Action> createFloodOutputAction(){
450 List<Action> actions = new ArrayList<Action>();
451 ActionBuilder ab = new ActionBuilder();
452 OutputActionBuilder output = new OutputActionBuilder();
453 output.setMaxLength(30);
454 Uri value = new Uri(OutputPortValues.FLOOD.toString());
455 output.setOutputNodeConnector(value);
456 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
457 ab.setKey(new ActionKey(0));
458 actions.add(ab.build());
462 private List<Action> createAllOutputAction(){
464 List<Action> actions = new ArrayList<Action>();
465 ActionBuilder ab = new ActionBuilder();
466 OutputActionBuilder output = new OutputActionBuilder();
467 output.setMaxLength(30);
468 Uri value = new Uri(OutputPortValues.ALL.toString());
469 output.setOutputNodeConnector(value);
470 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
471 ab.setKey(new ActionKey(0));
472 actions.add(ab.build());
476 private List<Action> createAnyOutputAction(){
478 List<Action> actions = new ArrayList<Action>();
479 ActionBuilder ab = new ActionBuilder();
480 OutputActionBuilder output = new OutputActionBuilder();
481 output.setMaxLength(30);
482 Uri value = new Uri(OutputPortValues.ANY.toString());
483 output.setOutputNodeConnector(value);
484 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
485 ab.setKey(new ActionKey(0));
486 actions.add(ab.build());
489 private List<Action> createNormalOutputAction(){
491 List<Action> actions = new ArrayList<Action>();
492 ActionBuilder ab = new ActionBuilder();
493 OutputActionBuilder output = new OutputActionBuilder();
494 output.setMaxLength(30);
495 Uri value = new Uri(OutputPortValues.NORMAL.toString());
496 output.setOutputNodeConnector(value);
497 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
498 ab.setKey(new ActionKey(0));
499 actions.add(ab.build());
502 private List<Action> createInportOutputAction(){
504 List<Action> actions = new ArrayList<Action>();
505 ActionBuilder ab = new ActionBuilder();
506 OutputActionBuilder output = new OutputActionBuilder();
507 output.setMaxLength(30);
508 Uri value = new Uri(OutputPortValues.INPORT.toString());
509 output.setOutputNodeConnector(value);
510 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
511 ab.setKey(new ActionKey(0));
512 actions.add(ab.build());
515 private List<Action> creatTableOutputAction(){
517 List<Action> actions = new ArrayList<Action>();
518 ActionBuilder ab = new ActionBuilder();
519 OutputActionBuilder output = new OutputActionBuilder();
520 output.setMaxLength(30);
521 Uri value = new Uri(OutputPortValues.TABLE.toString());
522 output.setOutputNodeConnector(value);
523 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
524 ab.setKey(new ActionKey(0));
525 actions.add(ab.build());
529 private List<Action> createControllerAction(){
531 List<Action> actions = new ArrayList<Action>();
532 ActionBuilder ab = new ActionBuilder();
533 OutputActionBuilder output = new OutputActionBuilder();
534 output.setMaxLength(30);
535 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
536 output.setOutputNodeConnector(value);
537 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
538 ab.setKey(new ActionKey(0));
539 actions.add(ab.build());
543 private List<Action> createLocalOutputAction(){
545 List<Action> actions = new ArrayList<Action>();
546 ActionBuilder ab = new ActionBuilder();
547 OutputActionBuilder output = new OutputActionBuilder();
548 output.setMaxLength(30);
549 Uri value = new Uri(OutputPortValues.LOCAL.toString());
550 output.setOutputNodeConnector(value);
551 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
552 ab.setKey(new ActionKey(0));
553 actions.add(ab.build());
556 private List<Action> createGroupAction(){
558 GroupActionBuilder groupActionB = new GroupActionBuilder();
559 groupActionB.setGroupId(1L);
560 groupActionB.setGroup("0");
561 ActionBuilder action = new ActionBuilder();
562 action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
563 action.setKey(new ActionKey(0));
564 List<Action> actions = new ArrayList<Action>();
565 actions.add(action.build());
569 private static List<Action> createNonAppyOutputAction(){
571 List<Action> actionList = new ArrayList<Action>();
572 ActionBuilder ab = new ActionBuilder();
573 OutputActionBuilder output = new OutputActionBuilder();
574 Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
575 output.setOutputNodeConnector(value);
576 //output.setMaxLength(null);
577 output.setMaxLength(66000);
578 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
579 actionList.add(ab.build());
583 private static List<Action> createNonAppyPushMplsAction(){
585 List<Action> actionList = new ArrayList<Action>();
586 ActionBuilder ab = new ActionBuilder();
587 PushMplsActionBuilder push = new PushMplsActionBuilder();
588 push.setEthernetType(new Integer(0x8849));
589 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
590 actionList.add(ab.build());
594 private static List<Action> createNonAppyPushPbbAction(){
596 List<Action> actionList = new ArrayList<Action>();
597 ActionBuilder ab = new ActionBuilder();
598 PushPbbActionBuilder pbb = new PushPbbActionBuilder();
599 pbb.setEthernetType(new Integer(0x88E8));
600 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
601 actionList.add(ab.build());
607 private static List<Action> createNonAppyPushVlanAction(){
609 List<Action> actionList = new ArrayList<Action>();
610 ActionBuilder ab = new ActionBuilder();
611 PushVlanActionBuilder vlan = new PushVlanActionBuilder();
612 vlan.setEthernetType(new Integer(0x8101));
613 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
614 actionList.add(ab.build());
620 private GroupBuilder createTestRemoveGroup(){
621 // Sample data , committing to DataStore
622 DataModification modification = dataBrokerService.beginTransaction();
625 GroupKey key = new GroupKey(new GroupId(id));
626 GroupBuilder group = new GroupBuilder();
627 /* BucketBuilder bucket = new BucketBuilder();
628 bucket.setBucketId(new BucketId((long) 12));
629 bucket.setKey(new BucketKey(new BucketId((long) 12))); */
631 // group.setInstall(false);
633 group.setGroupId(new GroupId(id));
634 /* PopVlanActionBuilder vlanAction = new PopVlanActionBuilder();
635 ActionBuilder action = new ActionBuilder();
636 action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build());
637 List<Action> actions = new ArrayList<Action>();
638 actions.add(action.build()); */
639 /* bucket.setAction(actions);
640 bucket.setWatchGroup((long) 14);
641 bucket.setWatchPort((long) 1234);
642 bucket.setWeight(15); */
643 // group.setGroupType(GroupTypes.GroupSelect);
644 // group.setGroupName(originalGroupName);
645 // group.setBarrier(false);
646 // BucketsBuilder value = new BucketsBuilder();
647 // List<Bucket> value1 = new ArrayList<Bucket>();
648 // value1.add(bucket.build());
649 // value.setBucket(value1);
650 // group.setBuckets(value.build());
651 testGroup2 = group.build();
657 public void _removeGroup(CommandInterpreter ci){
658 String nref = ci.nextArgument();
661 ci.println("test node added");
664 ci.println("User node added" + nref);
665 createUserNode(nref);
667 GroupBuilder gbuilder = createTestGroup(ci.nextArgument(),ci.nextArgument(),"add");
668 DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
669 InstanceIdentifier<Group> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
670 .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId())).build();
671 // DataObject cls = (DataObject)
672 // modification.readConfigurationData(path1);
673 // modification.removeOperationalData(nodeToInstanceId(testNode));
674 modification.removeOperationalData(path1);
675 // modification.removeConfigurationData(nodeToInstanceId(testNode));
676 modification.removeConfigurationData(path1);
677 Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
679 RpcResult<TransactionStatus> result = commitFuture.get();
680 TransactionStatus status = result.getResult();
681 ci.println("Status of Group Data Loaded Transaction: " + status);
682 ci.println("Status of Group Data Loaded Transaction: ");
684 } catch (InterruptedException e) {
685 // TODO Auto-generated catch block
687 } catch (ExecutionException e) {
688 // TODO Auto-generated catch block
693 public void _addGroup(CommandInterpreter ci) {
694 String nref = ci.nextArgument();
697 ci.println("test node added");
700 ci.println("User node added" + nref);
701 createUserNode(nref);
703 createTestGroup(ci.nextArgument(),ci.nextArgument(),"add");
704 writeGroup(ci, testGroup);
707 private void writeGroup(CommandInterpreter ci, Group group) {
708 DataModification modification = dataBrokerService.beginTransaction();
709 InstanceIdentifier<Group> path1 = InstanceIdentifier.builder(Nodes.class)
710 .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
711 .child(Group.class, new GroupKey(group.getGroupId()))
713 modification.putOperationalData(nodeToInstanceId(testNode), testNode);
714 modification.putOperationalData(path1, group);
715 modification.putConfigurationData(nodeToInstanceId(testNode), testNode);
716 modification.putConfigurationData(path1, group);
717 Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
719 RpcResult<TransactionStatus> result = commitFuture.get();
720 TransactionStatus status = result.getResult();
721 ci.println("Status of Group Data Loaded Transaction: " + status);
723 } catch (InterruptedException e) {
724 // TODO Auto-generated catch block
726 } catch (ExecutionException e) {
727 // TODO Auto-generated catch block
732 public void _modifyGroup(CommandInterpreter ci) {
733 String nref = ci.nextArgument();
736 ci.println("test node added");
739 ci.println("User node added" + nref);
740 createUserNode(nref);
742 GroupBuilder group = createTestGroup(ci.nextArgument(),ci.nextArgument(),"modify");
743 writeGroup(ci, group.build());
745 // group.setGroupName(originalGroupName);
746 // writeGroup(ci, group.build());
750 public String getHelp() {
751 StringBuffer help = new StringBuffer();
752 help.append("---FRM MD-SAL Group test module---\n");
753 help.append("\t addGroup <node id> - node ref\n");
754 help.append("\t modifyGroup <node id> - node ref\n");
755 help.append("\t removeGroup <node id> - node ref\n");
757 return help.toString();
760 private static NodeRef createNodeRef(String string) {
761 NodeKey key = new NodeKey(new NodeId(string));
762 InstanceIdentifier<Node> path =
763 InstanceIdentifier.builder(Nodes.class).child(Node.class, key).toInstance();
765 return new NodeRef(path);