X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=test-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Ftest%2FOpenflowpluginGroupTestCommandProvider.java;h=73daaa205c5469b5ef401a3c235442b6a6dba982;hb=a082e5e88c4cd00305ee3deb32a6c6b843af0f21;hp=bdb0cedc5fdfcee0d53e4c0a357cd12e62d63b60;hpb=37730f1ee7a354a7863e4f9da76d2b8906dbd4d0;p=openflowplugin.git diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestCommandProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestCommandProvider.java index bdb0cedc5f..73daaa205c 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestCommandProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestCommandProvider.java @@ -1,47 +1,91 @@ +/** + * Copyright IBM Corporation, 2013. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.openflowplugin.test; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; - import org.eclipse.osgi.framework.console.CommandInterpreter; import org.eclipse.osgi.framework.console.CommandProvider; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.DataModification; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; - -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.group.config.rev131024.Groups; -import org.opendaylight.yang.gen.v1.urn.opendaylight.group.config.rev131024.groups.Group; -import org.opendaylight.yang.gen.v1.urn.opendaylight.group.config.rev131024.groups.GroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.group.config.rev131024.groups.GroupKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.osgi.framework.BundleContext; public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { - private DataBrokerService dataBrokerService; + private DataBroker dataBroker; private ProviderContext pc; private final BundleContext ctx; private Group testGroup; + private Group testGroup2; private Node testNode; private final String originalGroupName = "Foo"; private final String updatedGroupName = "Bar"; @@ -52,9 +96,9 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { public void onSessionInitiated(ProviderContext session) { pc = session; - dataBrokerService = session.getSALService(DataBrokerService.class); + dataBroker = session.getSALService(DataBroker.class); ctx.registerService(CommandProvider.class.getName(), this, null); - createTestNode(); + createTestNode(); } private void createUserNode(String nodeRef) { @@ -64,7 +108,7 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { builder.setKey(new NodeKey(builder.getId())); testNode = builder.build(); } - + private void createTestNode() { NodeRef nodeOne = createNodeRef(OpenflowpluginTestActivator.NODE_ID); NodeBuilder builder = new NodeBuilder(); @@ -74,44 +118,507 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { } private InstanceIdentifier nodeToInstanceId(Node node) { - return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance(); + return InstanceIdentifier.create(Nodes.class).child(Node.class, node.getKey()); } - private GroupBuilder createTestGroup() { + private GroupBuilder createTestGroup(String actiontype, String type, String mod) { // Sample data , committing to DataStore - DataModification modification = dataBrokerService.beginTransaction(); - Long id = new Long(12); - GroupKey key = new GroupKey(id.longValue(), new NodeRef(new NodeRef(nodeToInstanceId(testNode)))); + + String GroupType = type; + String ActionType = actiontype; + String Groupmod = mod; + + long id = 1; + GroupKey key = new GroupKey(new GroupId(id)); GroupBuilder group = new GroupBuilder(); BucketBuilder bucket = new BucketBuilder(); bucket.setBucketId(new BucketId((long) 12)); + bucket.setKey(new BucketKey(new BucketId((long) 12))); + + if (GroupType == null) { + GroupType = "g1"; + } + if (ActionType == null) { + ActionType = "a1"; + } + + switch (GroupType) { + case "g1": + group.setGroupType(GroupTypes.GroupSelect); + break; + case "g2": + group.setGroupType(GroupTypes.GroupAll); + break; + case "g3": + group.setGroupType(GroupTypes.GroupIndirect); + break; + case "g4": + group.setGroupType(GroupTypes.GroupFf); + break; + } + + switch (ActionType) { + case "a1": + bucket.setAction(createPopVlanAction()); + break; + case "a2": + bucket.setAction(createPushVlanAction()); + break; + case "a3": + bucket.setAction(createPushMplsAction()); + break; + case "a4": + bucket.setAction(createPopMplsAction()); + break; + case "a5": + bucket.setAction(createPopPbbAction()); + break; + case "a6": + bucket.setAction(createPushPbbAction()); + break; + case "a7": + bucket.setAction(createPushPbbAction()); + break; + case "a8": + bucket.setAction(createCopyTtlInAction()); + break; + case "a9": + bucket.setAction(createCopyTtlOutAction()); + break; + case "a10": + bucket.setAction(createDecMplsTtlAction()); + break; + case "a11": + bucket.setAction(createDecNwTtlAction()); + break; + case "a12": + bucket.setAction(createSetQueueAction()); + break; + case "a13": + bucket.setAction(createSetNwTtlAction()); + break; + case "a14": + bucket.setAction(createGroupAction()); + break; + case "a15": + bucket.setAction(createSetMplsTtlAction()); + break; + case "a16": + bucket.setAction(createFloodOutputAction()); + break; + case "a17": + bucket.setAction(createAllOutputAction()); + break; + case "a18": + bucket.setAction(createNormalOutputAction()); + break; + case "a19": + bucket.setAction(creatTableOutputAction()); + break; + case "a20": + bucket.setAction(createControllerAction()); + break; + case "a21": + bucket.setAction(createLocalOutputAction()); + break; + case "a22": + bucket.setAction(createAnyOutputAction()); + break; + case "a23": + bucket.setAction(createInportOutputAction()); + break; + case "a24": + bucket.setAction(null); + break; + case "a25": + bucket.setAction(createNonAppyOutputAction()); + break; + case "a26": + bucket.setAction(createNonAppyPushMplsAction()); + break; + case "a27": + bucket.setAction(createNonAppyPushPbbAction()); + break; + case "a28": + bucket.setAction(createNonAppyPushVlanAction()); + break; + + } + + if (Groupmod == "add") { + bucket.setWatchGroup((long) 14); + bucket.setWatchPort((long) 1234); + bucket.setWeight(50); + } else { + bucket.setWatchGroup((long) 13); + bucket.setWatchPort((long) 134); + bucket.setWeight(30); + } group.setKey(key); - group.setInstall(false); - group.setId(new Long(12)); - PopVlanActionBuilder vlanAction = new PopVlanActionBuilder(); - ActionBuilder action = new ActionBuilder(); - action.setAction(vlanAction.build()); - List actions = new ArrayList(); - actions.add(action.build()); - bucket.setAction(actions); - bucket.setWatchGroup((long) 14); - bucket.setWatchPort((long) 1234); - bucket.setWeight(15); - group.setGroupType(GroupTypes.GroupSelect); + // group.setInstall(false); + group.setGroupId(new GroupId(id)); group.setGroupName(originalGroupName); group.setBarrier(false); BucketsBuilder value = new BucketsBuilder(); List value1 = new ArrayList(); - value1.add(bucket.build()); + value1.add(bucket.build()); value.setBucket(value1); group.setBuckets(value.build()); testGroup = group.build(); return group; } - public void _removeGroup(CommandInterpreter ci) { + + private List createPopVlanAction() { + PopVlanActionBuilder vlanAction = new PopVlanActionBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build()); + action.setKey(new ActionKey(0)); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createPushVlanAction() { + PushVlanActionBuilder vlan = new PushVlanActionBuilder(); + vlan.setEthernetType(0x8100); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createPushMplsAction() { + PushMplsActionBuilder push = new PushMplsActionBuilder(); + push.setEthernetType(0x8847); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createPopMplsAction() { + PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder(); + popMplsActionBuilder.setEthernetType(0XB); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createPopPbbAction() { + PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createPushPbbAction() { + PushPbbActionBuilder pbb = new PushPbbActionBuilder(); + pbb.setEthernetType(0x88E7); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createSetMplsTtlAction() { + SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder(); + setMplsTtlActionBuilder.setMplsTtl((short) 0X1); + ActionBuilder action = new ActionBuilder(); + action.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createSetNwTtlAction() { + SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder(); + setNwTtlActionBuilder.setNwTtl((short) 1); + ActionBuilder action = new ActionBuilder(); + action.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createSetQueueAction() { + SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder(); + setQueueActionBuilder.setQueueId(1L); + ActionBuilder action = new ActionBuilder(); + action.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build()); + action.setKey(new ActionKey(0)); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + + private List createCopyTtlInAction() { + CopyTtlInBuilder ttlin = new CopyTtlInBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createCopyTtlOutAction() { + CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createDecMplsTtlAction() { + DecMplsTtlBuilder mpls = new DecMplsTtlBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private List createDecNwTtlAction() { + DecNwTtlBuilder nwttl = new DecNwTtlBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build()); + List actions = new ArrayList(); + + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + // output.setMaxLength(30); + Uri value = new Uri("2"); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + ab.setOrder(0); + actions.add(ab.build()); + actions.add(action.build()); + return actions; + } + + private List createFloodOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.FLOOD.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createAllOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.ALL.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createAnyOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.ANY.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createNormalOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.NORMAL.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createInportOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.INPORT.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List creatTableOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.TABLE.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createControllerAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.CONTROLLER.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createLocalOutputAction() { + + List actions = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(30); + Uri value = new Uri(OutputPortValues.LOCAL.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setKey(new ActionKey(0)); + actions.add(ab.build()); + return actions; + } + + private List createGroupAction() { + + GroupActionBuilder groupActionB = new GroupActionBuilder(); + groupActionB.setGroupId(1L); + groupActionB.setGroup("0"); + ActionBuilder action = new ActionBuilder(); + action.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build()); + action.setKey(new ActionKey(0)); + List actions = new ArrayList(); + actions.add(action.build()); + return actions; + } + + private static List createNonAppyOutputAction() { + + List actionList = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + OutputActionBuilder output = new OutputActionBuilder(); + Uri value = new Uri(OutputPortValues.CONTROLLER.toString()); + output.setOutputNodeConnector(value); + //output.setMaxLength(null); + output.setMaxLength(66000); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + actionList.add(ab.build()); + return actionList; + } + + private static List createNonAppyPushMplsAction() { + + List actionList = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + PushMplsActionBuilder push = new PushMplsActionBuilder(); + push.setEthernetType(0x8849); + ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build()); + actionList.add(ab.build()); + return actionList; + + } + + private static List createNonAppyPushPbbAction() { + + List actionList = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + PushPbbActionBuilder pbb = new PushPbbActionBuilder(); + pbb.setEthernetType(0x88E8); + ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build()); + actionList.add(ab.build()); + return actionList; + + } + + + private static List createNonAppyPushVlanAction() { + + List actionList = new ArrayList(); + ActionBuilder ab = new ActionBuilder(); + PushVlanActionBuilder vlan = new PushVlanActionBuilder(); + vlan.setEthernetType(0x8101); + ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build()); + actionList.add(ab.build()); + return actionList; + + } + + + private GroupBuilder createTestRemoveGroup() { + long id = 123; + GroupKey key = new GroupKey(new GroupId(id)); + GroupBuilder group = new GroupBuilder(); + /* BucketBuilder bucket = new BucketBuilder(); + bucket.setBucketId(new BucketId((long) 12)); + bucket.setKey(new BucketKey(new BucketId((long) 12))); */ + group.setKey(key); + // group.setInstall(false); + + group.setGroupId(new GroupId(id)); + /* PopVlanActionBuilder vlanAction = new PopVlanActionBuilder(); + ActionBuilder action = new ActionBuilder(); + action.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(vlanAction.build()).build()); + List actions = new ArrayList(); + actions.add(action.build()); */ + /* bucket.setAction(actions); + bucket.setWatchGroup((long) 14); + bucket.setWatchPort((long) 1234); + bucket.setWeight(15); */ + // group.setGroupType(GroupTypes.GroupSelect); + // group.setGroupName(originalGroupName); + // group.setBarrier(false); + // BucketsBuilder value = new BucketsBuilder(); + // List value1 = new ArrayList(); + // value1.add(bucket.build()); + // value.setBucket(value1); + // group.setBuckets(value.build()); + testGroup2 = group.build(); + return group; + } + + + public void _removeGroup(final CommandInterpreter ci) { String nref = ci.nextArgument(); - + if (nref == null) { ci.println("test node added"); createTestNode(); @@ -119,34 +626,28 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { ci.println("User node added" + nref); createUserNode(nref); } - GroupBuilder gbuilder = createTestGroup(); - DataModification modification = dataBrokerService.beginTransaction(); - InstanceIdentifier path1 = InstanceIdentifier.builder(Groups.class) - .child(Group.class, gbuilder.getKey()).toInstance(); - DataObject cls = (DataObject) modification.readConfigurationData(path1); - //modification.removeOperationalData(nodeToInstanceId(testNode)); - modification.removeOperationalData(path1); - //modification.removeConfigurationData(nodeToInstanceId(testNode)); - modification.removeConfigurationData(path1); - Future> commitFuture = modification.commit(); - try { - RpcResult result = commitFuture.get(); - TransactionStatus status = result.getResult(); - ci.println("Status of Group Data Loaded Transaction: " + status); - ci.println("Status of Group Data Loaded Transaction: "); - - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + GroupBuilder gbuilder = createTestGroup(ci.nextArgument(), ci.nextArgument(), "add"); + ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.getKey()) + .augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(gbuilder.getGroupId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path1); + CheckedFuture commitFuture = modification.submit(); + Futures.addCallback(commitFuture, new FutureCallback() { + @Override + public void onSuccess(Void aVoid) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(Throwable throwable) { + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }); } public void _addGroup(CommandInterpreter ci) { String nref = ci.nextArgument(); - + if (nref == null) { ci.println("test node added"); createTestNode(); @@ -154,49 +655,46 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { ci.println("User node added" + nref); createUserNode(nref); } - createTestGroup(); + createTestGroup(ci.nextArgument(), ci.nextArgument(), "add"); writeGroup(ci, testGroup); } - private void writeGroup(CommandInterpreter ci, Group group) { - DataModification modification = dataBrokerService.beginTransaction(); - InstanceIdentifier path1 = InstanceIdentifier.builder(Groups.class).child(Group.class, group.getKey()) - .toInstance(); - DataObject cls = (DataObject) modification.readConfigurationData(path1); - modification.putOperationalData(nodeToInstanceId(testNode), testNode); - modification.putOperationalData(path1, group); - modification.putConfigurationData(nodeToInstanceId(testNode), testNode); - modification.putConfigurationData(path1, group); - Future> commitFuture = modification.commit(); - try { - RpcResult result = commitFuture.get(); - TransactionStatus status = result.getResult(); - ci.println("Status of Group Data Loaded Transaction: " + status); - - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + private void writeGroup(final CommandInterpreter ci, Group group) { + ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class) + .child(Group.class, new GroupKey(group.getGroupId())); + modification.merge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), testNode, true); + modification.merge(LogicalDatastoreType.CONFIGURATION, path1, group, true); + CheckedFuture commitFuture = modification.submit(); + Futures.addCallback(commitFuture, new FutureCallback() { + @Override + public void onSuccess(Void aVoid) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(Throwable throwable) { + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }); } public void _modifyGroup(CommandInterpreter ci) { String nref = ci.nextArgument(); - + if (nref == null) { ci.println("test node added"); createTestNode(); } else { ci.println("User node added" + nref); createUserNode(nref); - } - GroupBuilder group = createTestGroup(); - group.setGroupName(updatedGroupName); - writeGroup(ci, group.build()); - group.setGroupName(originalGroupName); + } + GroupBuilder group = createTestGroup(ci.nextArgument(), ci.nextArgument(), "modify"); writeGroup(ci, group.build()); + + // group.setGroupName(originalGroupName); + // writeGroup(ci, group.build()); } @Override @@ -206,14 +704,14 @@ public class OpenflowpluginGroupTestCommandProvider implements CommandProvider { help.append("\t addGroup - node ref\n"); help.append("\t modifyGroup - node ref\n"); help.append("\t removeGroup - node ref\n"); - + return help.toString(); } - + private static NodeRef createNodeRef(String string) { NodeKey key = new NodeKey(new NodeId(string)); InstanceIdentifier path = - InstanceIdentifier.builder(Nodes.class).child(Node.class, key).toInstance(); + InstanceIdentifier.create(Nodes.class).child(Node.class, key); return new NodeRef(path); }