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;
+ }
}