X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Fcore%2Fsal%2Fconvertor%2FGroupStatsResponseConvertor.java;h=a2be1e222238027b2ac05c359e2519d70faef515;hb=ab48afdf8678dd131c771921dfa9d89554b9c50a;hp=1c027a8b90340d5137bdc7fc5a693439e1ae5f90;hpb=a042abdfc7427e5b63c45606e5d828b484a586ca;p=openflowplugin.git diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java index 1c027a8b90..a2be1e2222 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java @@ -1,141 +1,102 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. 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.openflow.md.core.sal.convertor; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; - -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.action.types.rev131112.action.list.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; +import java.util.Set; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64; +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.GroupType; -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.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.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.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc.GroupDesc; +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._case.multipart.reply.group.group.stats.BucketStats; /** - * Class is an utility class for converting group related statistics messages coming from switch to MD-SAL - * messages. - * @author avishnoi@in.ibm.com + * Converts group related statistics messages coming from switch to MD-SAL messages. * + * Example usage: + *
+ * {@code
+ * VersionConvertorData data = new VersionConvertorData(version);
+ * Optional> salGroupStats = convertorManager.convert(ofGroupStats, data);
+ * }
+ * 
*/ -public class GroupStatsResponseConvertor { +public class GroupStatsResponseConvertor extends Convertor< + List, + List, + VersionConvertorData> { - public List toSALGroupStatsList( - List allGroupStats){ - List convertedSALGroups = new ArrayList(); - for(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.GroupStats group: allGroupStats){ - convertedSALGroups.add(toSALGroupStats(group)); - } - return convertedSALGroups; - - } - /** - * Method convert GroupStats message from library to MD SAL defined GroupStats - * @param groupStats GroupStats from library - * @return GroupStats -- GroupStats defined in MD-SAL - */ - public GroupStats toSALGroupStats( - org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.GroupStats groupStats){ - - GroupStatsBuilder salGroupStats = new GroupStatsBuilder(); - - salGroupStats.setBuckets(toSALBuckets(groupStats.getBucketStats())); - salGroupStats.setByteCount(new Counter64(groupStats.getByteCount())); - - DurationBuilder time = new DurationBuilder(); - time.setSecond(new Counter32(groupStats.getDurationSec())); - time.setNanosecond(new Counter32(groupStats.getDurationNsec())); - - salGroupStats.setDuration(time.build()); - salGroupStats.setGroupId(groupStats.getGroupId().intValue()); - salGroupStats.setPacketCount(new Counter64(groupStats.getPacketCount())); - salGroupStats.setRefCount(new Counter32(groupStats.getRefCount())); - - return salGroupStats.build(); - } - - public Buckets toSALBuckets( - List bucketStats ){ - - BucketsBuilder salBuckets = new BucketsBuilder(); - - List allBucketStats = new ArrayList(); - - for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.group.stats.BucketStats bucketStat : bucketStats){ + private static final Set> TYPES = Collections.singleton(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats.class); + + private Buckets toSALBuckets(List bucketStats) { + BucketsBuilder salBuckets = new BucketsBuilder(); + + List allBucketStats = new ArrayList<>(); + int bucketKey = 0; + + for (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); return salBuckets.build(); } - - - public List toSALGroupDescStatsList( - List allGroupDescStats){ - - List convertedSALGroupsDesc = new ArrayList(); - for(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc.GroupDesc groupDesc: allGroupDescStats){ - convertedSALGroupsDesc.add(toSALGroupDescStats(groupDesc)); - } - return convertedSALGroupsDesc; - - } - /** - * Method convert GroupStats message from library to MD SAL defined GroupStats - * @param groupDesc GroupStats from library - * @return GroupStats -- GroupStats defined in MD-SAL - */ - public GroupDescStats toSALGroupDescStats(GroupDesc groupDesc){ - - GroupDescStatsBuilder salGroupDescStats = new GroupDescStatsBuilder(); - - salGroupDescStats.setBuckets(toSALBucketsDesc(groupDesc.getBucketsList())); - salGroupDescStats.setGroupId(new GroupId(groupDesc.getGroupId())); - salGroupDescStats.setGroupType(GroupType.forValue(groupDesc.getType().getIntValue())); - - return salGroupDescStats.build(); + + @Override + public Collection> getTypes() { + return TYPES; } - - public org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets toSALBucketsDesc( - List bucketDescStats ){ - - 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 allBuckets = new ArrayList(); - - for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList bucketDetails : bucketDescStats){ - BucketBuilder bucketDesc = new BucketBuilder(); - List convertedSalActions = - ActionConvertor.toSALBucketActions (bucketDetails.getActionsList()); - - List actions = new ArrayList(); - 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()); - } - bucketDesc.setAction(actions); - bucketDesc.setWeight(bucketDetails.getWeight()); - bucketDesc.setWatchPort(bucketDetails.getWatchPort().getValue()); - bucketDesc.setWatchGroup(bucketDetails.getWatchGroup()); - allBuckets.add(bucketDesc.build()); + + @Override + public List convert(List source, VersionConvertorData data) { + List convertedSALGroups = new ArrayList<>(); + + for (org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply + .multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats groupStats : source) { + GroupStatsBuilder salGroupStats = new GroupStatsBuilder(); + + salGroupStats.setBuckets(toSALBuckets(groupStats.getBucketStats())); + salGroupStats.setByteCount(new Counter64(groupStats.getByteCount())); + + DurationBuilder time = new DurationBuilder(); + time.setSecond(new Counter32(groupStats.getDurationSec())); + time.setNanosecond(new Counter32(groupStats.getDurationNsec())); + + salGroupStats.setDuration(time.build()); + salGroupStats.setGroupId(new GroupId(groupStats.getGroupId().getValue())); + salGroupStats.setPacketCount(new Counter64(groupStats.getPacketCount())); + salGroupStats.setRefCount(new Counter32(groupStats.getRefCount())); + salGroupStats.setKey(new GroupStatsKey(salGroupStats.getGroupId())); + convertedSALGroups.add(salGroupStats.build()); } - salBucketsDesc.setBucket(allBuckets); - return salBucketsDesc.build(); - } + return convertedSALGroups; + } }