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=332e5ac100ae020a6e24d771f4888411a6f3c390;hpb=0131bda616d9f6285dc6551a4c826739f3e1afb1;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 332e5ac100..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,5 +1,5 @@ /* - * Copyright IBM Corporation, 2013. 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,22 +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.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; @@ -34,139 +28,75 @@ 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.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 class GroupStatsResponseConvertor extends Convertor< + List, + List, + VersionConvertorData> { + + 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(); - 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){ - - 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())); - - return salGroupStats.build(); - } - - public 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); + 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(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().getValue())); - salGroupDescStats.setGroupType(GroupTypes.forValue(groupDesc.getType().getIntValue())); - salGroupDescStats.setKey(new GroupDescStatsKey(salGroupDescStats.getGroupId())); - - 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<>(); - int bucketKey = 0; - for(BucketsList bucketDetails : bucketDescStats){ - BucketBuilder bucketDesc = new BucketBuilder(); - List convertedSalActions = - ActionConvertor.toMDSalActions (bucketDetails.getActionsList()); - - 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()); + + @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; + } }