1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
3 import java.util.ArrayList;
6 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter32;
7 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter64;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupType;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.desc.stats.reply.GroupDescStats;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.desc.stats.reply.GroupDescStatsBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.Buckets;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.BucketsBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.DurationBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounter;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStats;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc.GroupDesc;
26 * Class is an utility class for converting group related statistics messages coming from switch to MD-SAL
28 * @author avishnoi@in.ibm.com
31 public class GroupStatsResponseConvertor {
33 public List<GroupStats> toSALGroupStatsList(
34 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.GroupStats> allGroupStats){
35 List<GroupStats> convertedSALGroups = new ArrayList<GroupStats>();
36 for(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.GroupStats group: allGroupStats){
37 convertedSALGroups.add(toSALGroupStats(group));
39 return convertedSALGroups;
43 * Method convert GroupStats message from library to MD SAL defined GroupStats
44 * @param groupStats GroupStats from library
45 * @return GroupStats -- GroupStats defined in MD-SAL
47 public GroupStats toSALGroupStats(
48 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.GroupStats groupStats){
50 GroupStatsBuilder salGroupStats = new GroupStatsBuilder();
52 salGroupStats.setBuckets(toSALBuckets(groupStats.getBucketStats()));
53 salGroupStats.setByteCount(new Counter64(groupStats.getByteCount()));
55 DurationBuilder time = new DurationBuilder();
56 time.setSecond(new Counter32(groupStats.getDurationSec()));
57 time.setNanosecond(new Counter32(groupStats.getDurationNsec()));
59 salGroupStats.setDuration(time.build());
60 salGroupStats.setGroupId(groupStats.getGroupId().intValue());
61 salGroupStats.setPacketCount(new Counter64(groupStats.getPacketCount()));
62 salGroupStats.setRefCount(new Counter32(groupStats.getRefCount()));
64 return salGroupStats.build();
67 public Buckets toSALBuckets(
68 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.group.stats.BucketStats> bucketStats ){
70 BucketsBuilder salBuckets = new BucketsBuilder();
72 List<BucketCounter> allBucketStats = new ArrayList<BucketCounter>();
74 for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.group.stats.BucketStats bucketStat : bucketStats){
75 BucketCounterBuilder bucketCounter = new BucketCounterBuilder();
76 bucketCounter.setByteCount(new Counter64(bucketStat.getByteCount()));
77 bucketCounter.setPacketCount(new Counter64(bucketStat.getPacketCount()));
78 allBucketStats.add(bucketCounter.build());
80 salBuckets.setBucketCounter(allBucketStats);
81 return salBuckets.build();
85 public List<GroupDescStats> toSALGroupDescStatsList(
86 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.
87 multipart.reply.multipart.reply.body.multipart.reply.group.desc.GroupDesc> allGroupDescStats){
89 List<GroupDescStats> convertedSALGroupsDesc = new ArrayList<GroupDescStats>();
90 for(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc.GroupDesc groupDesc: allGroupDescStats){
91 convertedSALGroupsDesc.add(toSALGroupDescStats(groupDesc));
93 return convertedSALGroupsDesc;
97 * Method convert GroupStats message from library to MD SAL defined GroupStats
98 * @param groupDesc GroupStats from library
99 * @return GroupStats -- GroupStats defined in MD-SAL
101 public GroupDescStats toSALGroupDescStats(GroupDesc groupDesc){
103 GroupDescStatsBuilder salGroupDescStats = new GroupDescStatsBuilder();
105 salGroupDescStats.setBuckets(toSALBucketsDesc(groupDesc.getBucketsList()));
106 salGroupDescStats.setGroupId(new GroupId(groupDesc.getGroupId()));
107 salGroupDescStats.setGroupType(GroupType.forValue(groupDesc.getType().getIntValue()));
109 return salGroupDescStats.build();
112 public org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets toSALBucketsDesc(
113 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList> bucketDescStats ){
115 org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder salBucketsDesc =
116 new org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder();
118 List<Bucket> allBuckets = new ArrayList<Bucket>();
120 for( org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList bucketDetails : bucketDescStats){
121 BucketBuilder bucketDesc = new BucketBuilder();
122 List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> convertedSalActions =
123 ActionConvertor.toSALBucketActions (bucketDetails.getActionsList());
125 List<Action> actions = new ArrayList<Action>();
126 for (org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action : convertedSalActions){
127 ActionBuilder warppedAction = new ActionBuilder();
128 warppedAction.setAction(action);
129 actions.add(warppedAction.build());
131 bucketDesc.setAction(actions);
132 bucketDesc.setWeight(bucketDetails.getWeight());
133 bucketDesc.setWatchPort(bucketDetails.getWatchPort().getValue());
134 bucketDesc.setWatchGroup(bucketDetails.getWatchGroup());
135 allBuckets.add(bucketDesc.build());
137 salBucketsDesc.setBucket(allBuckets);
138 return salBucketsDesc.build();