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=8e7a0ecd73ce2db9f1e4c89196442bfff6440a49;hb=137e4d7d86e8f402f3d52fd0fa162792f9ff60eb;hp=a330dbeb4454a17fe2b555ee3aaa0fa879bf7e40;hpb=572b2fb668726a7868c6ee962ea13f15c1aae2b4;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 a330dbeb44..8e7a0ecd73 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,5 +1,5 @@ /* - * Copyright (c) 2013, 2015 IBM Corporation and others. All rights reserved. + * 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, @@ -9,24 +9,16 @@ 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.openflowplugin.extension.api.path.ActionPath; -import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; -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 org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey; +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; -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; @@ -36,141 +28,81 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group 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.buckets.grouping.BucketsList; 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; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc._case.multipart.reply.group.desc.GroupDesc; /** - * 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 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._case.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._case.multipart.reply.group.GroupStats groupStats){ +public class GroupStatsResponseConvertor extends Convertor< + List, + List, + VersionConvertorData> { - GroupStatsBuilder salGroupStats = new GroupStatsBuilder(); + 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); - 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())); - - return salGroupStats.build(); - } - - public Buckets toSALBuckets( - List bucketStats ){ - - BucketsBuilder salBuckets = new BucketsBuilder(); + private Buckets toSALBuckets(List bucketStats) { + BucketsBuilder salBuckets = new BucketsBuilder(); List allBucketStats = new ArrayList<>(); int bucketKey = 0; - for(BucketStats bucketStat : bucketStats){ + + 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)); + BucketId bucketId = new BucketId((long) bucketKey); + bucketCounter.withKey(new BucketCounterKey(bucketId)); bucketCounter.setBucketId(bucketId); bucketKey++; allBucketStats.add(bucketCounter.build()); } + salBuckets.setBucketCounter(allBucketStats); return salBuckets.build(); } - - public List toSALGroupDescStatsList( - List allGroupDescStats, OpenflowVersion ofVersion){ - - List convertedSALGroupsDesc = new ArrayList<>(); - for(GroupDesc groupDesc: allGroupDescStats){ - convertedSALGroupsDesc.add(toSALGroupDescStats(groupDesc, ofVersion)); - } - return convertedSALGroupsDesc; - + @Override + public Collection> getTypes() { + return TYPES; } - /** - * Method convert GroupStats message from library to MD SAL defined GroupStats - * @param groupDesc GroupStats from library - * @param ofVersion current ofp version - * @return GroupStats -- GroupStats defined in MD-SAL - */ - public GroupDescStats toSALGroupDescStats(GroupDesc groupDesc, OpenflowVersion ofVersion){ - GroupDescStatsBuilder salGroupDescStats = new GroupDescStatsBuilder(); + @Override + public List convert(List source, + VersionConvertorData data) { + List convertedSALGroups = new ArrayList<>(); - salGroupDescStats.setBuckets(toSALBucketsDesc(groupDesc.getBucketsList(), ofVersion)); - salGroupDescStats.setGroupId(new GroupId(groupDesc.getGroupId().getValue())); - salGroupDescStats.setGroupType(GroupTypes.forValue(groupDesc.getType().getIntValue())); - salGroupDescStats.setKey(new GroupDescStatsKey(salGroupDescStats.getGroupId())); + 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(); - return salGroupDescStats.build(); - } + salGroupStats.setBuckets(toSALBuckets(groupStats.getBucketStats())); + salGroupStats.setByteCount(new Counter64(groupStats.getByteCount())); - public org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets toSALBucketsDesc( - List bucketDescStats, OpenflowVersion ofVersion ){ + DurationBuilder time = new DurationBuilder(); + time.setSecond(new Counter32(groupStats.getDurationSec())); + time.setNanosecond(new Counter32(groupStats.getDurationNsec())); - 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<>(); - int bucketKey = 0; - for(BucketsList bucketDetails : bucketDescStats){ - BucketBuilder bucketDesc = new BucketBuilder(); - List convertedSalActions = - ActionConvertor.toMDSalActions (bucketDetails.getAction(), ofVersion, - ActionPath.GROUPDESCSTATSUPDATED_GROUPDESCSTATS_BUCKETS_BUCKET_ACTION); - - List actions = new ArrayList<>(); - int actionKey = 0; - for (org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action : convertedSalActions){ - 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()); + salGroupStats.setDuration(time.build()); + salGroupStats.setGroupId(new GroupId(groupStats.getGroupId().getValue())); + salGroupStats.setPacketCount(new Counter64(groupStats.getPacketCount())); + salGroupStats.setRefCount(new Counter32(groupStats.getRefCount())); + salGroupStats.withKey(new GroupStatsKey(salGroupStats.getGroupId())); + convertedSALGroups.add(salGroupStats.build()); } - salBucketsDesc.setBucket(allBuckets); - return salBucketsDesc.build(); - } + return convertedSALGroups; + } }