2 * Copyright (c) 2013, 2015 IBM Corporation and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
11 import java.util.ArrayList;
12 import java.util.Collections;
13 import java.util.List;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
16 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.Buckets;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.BucketsBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.DurationBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounter;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterKey;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStats;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsKey;
28 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;
31 * Converts group related statistics messages coming from switch to MD-SAL messages.
36 * Optional<List<GroupStats>> salGroupStats = ConvertorManager.getInstance().convert(ofGroupStats);
40 public class GroupStatsResponseConvertor implements Convertor<
41 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats>,
44 private Buckets toSALBuckets(List<BucketStats> bucketStats) {
45 BucketsBuilder salBuckets = new BucketsBuilder();
47 List<BucketCounter> allBucketStats = new ArrayList<>();
50 for (BucketStats bucketStat : bucketStats) {
51 BucketCounterBuilder bucketCounter = new BucketCounterBuilder();
52 bucketCounter.setByteCount(new Counter64(bucketStat.getByteCount()));
53 bucketCounter.setPacketCount(new Counter64(bucketStat.getPacketCount()));
54 BucketId bucketId = new BucketId((long) bucketKey);
55 bucketCounter.setKey(new BucketCounterKey(bucketId));
56 bucketCounter.setBucketId(bucketId);
58 allBucketStats.add(bucketCounter.build());
61 salBuckets.setBucketCounter(allBucketStats);
62 return salBuckets.build();
66 public Class<?> getType() {
67 return org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats.class;
71 public List<GroupStats> convert(List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats> source) {
72 List<GroupStats> convertedSALGroups = new ArrayList<>();
74 for (org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply
75 .multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats groupStats : source) {
76 GroupStatsBuilder salGroupStats = new GroupStatsBuilder();
78 salGroupStats.setBuckets(toSALBuckets(groupStats.getBucketStats()));
79 salGroupStats.setByteCount(new Counter64(groupStats.getByteCount()));
81 DurationBuilder time = new DurationBuilder();
82 time.setSecond(new Counter32(groupStats.getDurationSec()));
83 time.setNanosecond(new Counter32(groupStats.getDurationNsec()));
85 salGroupStats.setDuration(time.build());
86 salGroupStats.setGroupId(new GroupId(groupStats.getGroupId().getValue()));
87 salGroupStats.setPacketCount(new Counter64(groupStats.getPacketCount()));
88 salGroupStats.setRefCount(new Counter32(groupStats.getRefCount()));
89 salGroupStats.setKey(new GroupStatsKey(salGroupStats.getGroupId()));
90 convertedSALGroups.add(salGroupStats.build());
93 return convertedSALGroups;