Fixed build breakages due to changes in group and meter type models.
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / GroupStatsResponseConvertor.java
1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
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;
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;
24
25 /**
26  * Class is an utility class for converting group related statistics messages coming from switch to MD-SAL
27  * messages.
28  * @author avishnoi@in.ibm.com
29  *
30  */
31 public class GroupStatsResponseConvertor {
32
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));
38         }
39         return convertedSALGroups;
40         
41     }
42     /**
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
46      */
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){
49         
50         GroupStatsBuilder salGroupStats = new GroupStatsBuilder();
51         
52         salGroupStats.setBuckets(toSALBuckets(groupStats.getBucketStats()));
53         salGroupStats.setByteCount(new Counter64(groupStats.getByteCount()));
54         
55         DurationBuilder time = new DurationBuilder();
56         time.setSecond(new Counter32(groupStats.getDurationSec()));
57         time.setNanosecond(new Counter32(groupStats.getDurationNsec()));
58         
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()));
63         
64         return salGroupStats.build();
65     }
66     
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 ){
69         
70         BucketsBuilder salBuckets  = new BucketsBuilder();
71         
72         List<BucketCounter> allBucketStats = new ArrayList<BucketCounter>();
73         
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());
79         }
80         salBuckets.setBucketCounter(allBucketStats);
81         return salBuckets.build();
82     }
83     
84     
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){
88         
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));
92         }
93         return convertedSALGroupsDesc;
94         
95     }
96     /**
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
100      */
101     public GroupDescStats toSALGroupDescStats(GroupDesc groupDesc){
102         
103         GroupDescStatsBuilder salGroupDescStats = new GroupDescStatsBuilder();
104         
105         salGroupDescStats.setBuckets(toSALBucketsDesc(groupDesc.getBucketsList()));
106         salGroupDescStats.setGroupId(new GroupId(groupDesc.getGroupId()));
107         salGroupDescStats.setGroupType(GroupTypes.forValue(groupDesc.getType().getIntValue()));
108         
109         return salGroupDescStats.build();
110     }
111     
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 ){
114         
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();
117         
118         List<Bucket> allBuckets = new ArrayList<Bucket>();
119         
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());
124             
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());
130             }
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());
136         }
137         salBucketsDesc.setBucket(allBuckets);
138         return salBucketsDesc.build();
139     }
140
141 }