import java.util.concurrent.Future;
import org.opendaylight.controller.sal.common.util.Rpcs;
+import org.opendaylight.openflowjava.protocol.api.util.BinContent;
import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowConvertor;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupConvertor;
// Create multipart request body for fetch all the group stats
MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
- mprGroupBuild.setGroupId((long) Group.OFPGALL.getIntValue());
+ mprGroupBuild.setGroupId(BinContent.intToUnsignedLong(Group.OFPGALL.getIntValue()));
//Set request body to main multipart request
mprInput.setMultipartRequestBody(mprGroupBuild.build());
// Create multipart request body for fetch all the meter stats
MultipartRequestMeterConfigBuilder mprMeterConfigBuild = new MultipartRequestMeterConfigBuilder();
- mprMeterConfigBuild.setMeterId((long) Meter.OFPMALL.getIntValue());
+ mprMeterConfigBuild.setMeterId(BinContent.intToUnsignedLong(Meter.OFPMALL.getIntValue()));
//Set request body to main multipart request
mprInput.setMultipartRequestBody(mprMeterConfigBuild.build());
// Create multipart request body for fetch all the meter stats
MultipartRequestMeterBuilder mprMeterBuild = new MultipartRequestMeterBuilder();
- mprMeterBuild.setMeterId((long) Meter.OFPMALL.getIntValue());
+ mprMeterBuild.setMeterId(BinContent.intToUnsignedLong(Meter.OFPMALL.getIntValue()));
//Set request body to main multipart request
mprInput.setMultipartRequestBody(mprMeterBuild.build());
List<ActionsList> actionList) {
List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> bucketActions = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action>();
-
for (ActionsList actionDesc : actionList) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = actionDesc
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter64;
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.action.types.rev131112.action.list.ActionKey;
+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.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.group.desc.stats.reply.GroupDescStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.desc.stats.reply.GroupDescStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.desc.stats.reply.GroupDescStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.Buckets;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.BucketsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc.GroupDesc;
/**
time.setNanosecond(new Counter32(groupStats.getDurationNsec()));
salGroupStats.setDuration(time.build());
- salGroupStats.setGroupId(groupStats.getGroupId().intValue());
+ salGroupStats.setGroupId(new GroupId(groupStats.getGroupId()));
salGroupStats.setPacketCount(new Counter64(groupStats.getPacketCount()));
salGroupStats.setRefCount(new Counter32(groupStats.getRefCount()));
+ salGroupStats.setKey(new GroupStatsKey(salGroupStats.getGroupId()));
return salGroupStats.build();
}
BucketsBuilder salBuckets = new BucketsBuilder();
List<BucketCounter> allBucketStats = new ArrayList<BucketCounter>();
-
+ int bucketKey = 0;
for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.group.stats.BucketStats bucketStat : bucketStats){
BucketCounterBuilder bucketCounter = new BucketCounterBuilder();
bucketCounter.setByteCount(new Counter64(bucketStat.getByteCount()));
bucketCounter.setPacketCount(new Counter64(bucketStat.getPacketCount()));
+ BucketId bucketId = new BucketId((long)bucketKey);
+ bucketCounter.setKey(new BucketCounterKey(bucketId));
+ bucketCounter.setBucketId(bucketId);
+ bucketKey++;
allBucketStats.add(bucketCounter.build());
}
salBuckets.setBucketCounter(allBucketStats);
salGroupDescStats.setBuckets(toSALBucketsDesc(groupDesc.getBucketsList()));
salGroupDescStats.setGroupId(new GroupId(groupDesc.getGroupId()));
salGroupDescStats.setGroupType(GroupTypes.forValue(groupDesc.getType().getIntValue()));
+ salGroupDescStats.setKey(new GroupDescStatsKey(salGroupDescStats.getGroupId()));
return salGroupDescStats.build();
}
org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder salBucketsDesc =
new org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder();
List<Bucket> allBuckets = new ArrayList<Bucket>();
-
+ int bucketKey = 0;
for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList bucketDetails : bucketDescStats){
BucketBuilder bucketDesc = new BucketBuilder();
List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> convertedSalActions =
ActionConvertor.toSALBucketActions (bucketDetails.getActionsList());
List<Action> actions = new ArrayList<Action>();
+ int actionKey = 0;
for (org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action : convertedSalActions){
- ActionBuilder warppedAction = new ActionBuilder();
- warppedAction.setAction(action);
- actions.add(warppedAction.build());
+ ActionBuilder wrappedAction = new ActionBuilder();
+ wrappedAction.setAction(action);
+ wrappedAction.setKey(new ActionKey(actionKey));
+ wrappedAction.setOrder(actionKey);
+ actions.add(wrappedAction.build());
+ actionKey++;
}
bucketDesc.setAction(actions);
bucketDesc.setWeight(bucketDetails.getWeight());
bucketDesc.setWatchPort(bucketDetails.getWatchPort().getValue());
bucketDesc.setWatchGroup(bucketDetails.getWatchGroup());
+ BucketId bucketId = new BucketId((long)bucketKey);
+ bucketDesc.setBucketId(bucketId);
+ bucketDesc.setKey(new BucketKey(bucketId));
+ bucketKey++;
allBuckets.add(bucketDesc.build());
}
salBucketsDesc.setBucket(allBuckets);
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter32;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter64;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.MeterBandStatsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStat;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStatBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStatKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
salMeterStats.setDuration(time.build());
salMeterStats.setFlowCount(new Counter32(meterStats.getFlowCount()));
- salMeterStats.setMeterId(meterStats.getMeterId().intValue());
+ salMeterStats.setMeterId(new MeterId(meterStats.getMeterId()));
salMeterStats.setPacketInCount(new Counter64(meterStats.getPacketInCount()));
+ salMeterStats.setKey(new MeterStatsKey(salMeterStats.getMeterId()));
List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol
.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter
MeterBandStatsBuilder meterBandStatsBuilder = new MeterBandStatsBuilder();
List<BandStat> listAllBandStats = new ArrayList<BandStat>();
+ int bandKey=0;
for(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol
.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter
.meter.stats.MeterBandStats meterBandStats : allMeterBandStats){
BandStatBuilder bandStatBuilder = new BandStatBuilder();
bandStatBuilder.setByteBandCount(new Counter64(meterBandStats.getByteBandCount()));
bandStatBuilder.setPacketBandCount(new Counter64(meterBandStats.getPacketBandCount()));
+ BandId bandId = new BandId((long) bandKey);
+ bandStatBuilder.setKey(new BandStatKey(bandId));
+ bandStatBuilder.setBandId(bandId);
+ bandKey++;
listAllBandStats.add(bandStatBuilder.build());
}
meterBandStatsBuilder.setBandStat(listAllBandStats);
for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config.MeterConfig meterConfig : allMeterConfigs){
MeterConfigStatsBuilder meterConfigStatsBuilder = new MeterConfigStatsBuilder();
meterConfigStatsBuilder.setMeterId(new MeterId(meterConfig.getMeterId()));
- //TODO: Set flag should be bitmap and not once enum value.
- //Need to discuss with openflowjava team.
- //meterConfigStatsBuilder.setFlags(value);
+ meterConfigStatsBuilder.setKey(new MeterConfigStatsKey(meterConfigStatsBuilder.getMeterId()));
MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config.meter.config.Bands> bands = meterConfig.getBands();
List<MeterBandHeader> listBandHeaders = new ArrayList<MeterBandHeader>();
+
+ int bandKey=0;
for(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config.meter.config.Bands band : bands){
MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
if(band.getMeterBand() instanceof MeterBandDrop){
meterBandHeaderBuilder.setBurstSize(dropBand.getBurstSize());
meterBandHeaderBuilder.setRate(dropBand.getRate());
+ BandId bandId = new BandId((long)bandKey);
+ meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
+ meterBandHeaderBuilder.setBandId(bandId);
listBandHeaders.add(meterBandHeaderBuilder.build());
}else if (band.getMeterBand() instanceof MeterBandDscpRemark){
MeterBandDscpRemark dscpRemarkBand = (MeterBandDscpRemark)band.getMeterBand();
meterBandHeaderBuilder.setBurstSize(dscpRemarkBand.getBurstSize());
meterBandHeaderBuilder.setRate(dscpRemarkBand.getRate());
+ BandId bandId = new BandId((long)bandKey);
+ meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
+ meterBandHeaderBuilder.setBandId(bandId);
listBandHeaders.add(meterBandHeaderBuilder.build());
}else if (band.getMeterBand() instanceof MeterBandExperimenter){
meterBandHeaderBuilder.setBurstSize(experimenterBand.getBurstSize());
meterBandHeaderBuilder.setRate(experimenterBand.getRate());
+ BandId bandId = new BandId((long)bandKey);
+ meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
+ meterBandHeaderBuilder.setBandId(bandId);
listBandHeaders.add(meterBandHeaderBuilder.build());
}
+ bandKey++;
}
meterBandHeadersBuilder.setMeterBandHeader(listBandHeaders);
meterConfigStatsBuilder.setMeterBandHeaders(meterBandHeadersBuilder.build());
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupStatsResponseConvertor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdatedBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.NodeGroupFeatures;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.NodeGroupFeaturesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.group.features.GroupFeaturesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Chaining;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.ChainingChecks;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupAll;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.SelectLiveness;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.SelectWeight;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
-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.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigStatsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterFeaturesUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdatedBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.NodeMeterFeatures;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.NodeMeterFeaturesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.nodes.node.MeterFeaturesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBand;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandDrop;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandDscpRemark;
return listDataObject;
}
- private void augmentGroupFeaturesToNode(GroupFeaturesUpdatedBuilder message){
- GroupFeaturesBuilder groupFeatures = new GroupFeaturesBuilder();
- groupFeatures.setActions(message.getActions());
- groupFeatures.setGroupCapabilitiesSupported(message.getGroupCapabilitiesSupported());
- groupFeatures.setGroupTypesSupported(message.getGroupTypesSupported());
- groupFeatures.setMaxGroups(message.getMaxGroups());
-
- final NodeBuilder nodeData = new NodeBuilder();
- nodeData.setKey(new NodeKey(message.getId()));
-
- NodeGroupFeaturesBuilder nodeGroupFeatures= new NodeGroupFeaturesBuilder();
- nodeGroupFeatures.setGroupFeatures(groupFeatures.build());
- //Update augmented data
- nodeData.addAugmentation(NodeGroupFeatures.class, nodeGroupFeatures.build());
- }
-
- private void augmentMeterFeaturesToNode(MeterFeaturesUpdatedBuilder message){
- MeterFeaturesBuilder meterFeature = new MeterFeaturesBuilder();
- meterFeature.setMeterBandSupported(message.getMeterBandSupported());
- meterFeature.setMeterCapabilitiesSupported(message.getMeterCapabilitiesSupported());
- meterFeature.setMaxBands(message.getMaxBands());
- meterFeature.setMaxColor(message.getMaxColor());
- meterFeature.setMaxMeter(message.getMaxMeter());
-
- final NodeBuilder nodeData = new NodeBuilder();
- nodeData.setKey(new NodeKey(message.getId()));
-
- NodeMeterFeaturesBuilder nodeMeterFeatures= new NodeMeterFeaturesBuilder();
- nodeMeterFeatures.setMeterFeatures(meterFeature.build());
- //Update augmented data
- nodeData.addAugmentation(NodeMeterFeatures.class, nodeMeterFeatures.build());
- }
-
private NodeId nodeIdFromDatapathId(BigInteger datapathId) {
String current = datapathId.toString();
return new NodeId("openflow:" + current);
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.group.types.rev131018.BucketId;
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;
GroupKey key = new GroupKey(id, new NodeRef(new NodeRef(nodeToInstanceId(testNode))));
GroupBuilder group = new GroupBuilder();
BucketBuilder bucket = new BucketBuilder();
- bucket.setOrder(12);
+ bucket.setBucketId(new BucketId((long) 12));
group.setKey(key);
group.setInstall(false);
group.setId(id);