1 package org.opendaylight.controller.sal.compability.impl;
4 import java.util.concurrent.ExecutionException;
5 import java.util.concurrent.Future;
7 import org.opendaylight.controller.sal.compability.FromSalConversionsUtils;
8 import org.opendaylight.controller.sal.core.Node;
9 import org.opendaylight.controller.sal.core.NodeConnector;
10 import org.opendaylight.controller.sal.core.NodeTable;
11 import org.opendaylight.controller.sal.flowprogrammer.Flow;
12 import org.opendaylight.controller.sal.reader.*;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.*;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev130819.flow.statistics.Duration;
15 import org.opendaylight.yangtools.yang.common.RpcResult;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
19 public class MdOpendaylightFlowStatisticsServiceAdapter implements IPluginInReadService {
21 private static final Logger LOG = LoggerFactory.getLogger(MdOpendaylightFlowStatisticsServiceAdapter.class);
22 private OpendaylightFlowStatisticsService opendaylightFlowStatisticsService;
25 public FlowOnNode readFlow(Node node, Flow flow, boolean cached) {
26 FlowOnNode result = null;
28 GetFlowStatisticsInput getFlowStatisticsInput = FromSalConversionsUtils.flowStatisticsInput(node,flow);
29 Future<RpcResult<GetFlowStatisticsOutput>> futureStatisticsOutput = opendaylightFlowStatisticsService
30 .getFlowStatistics(getFlowStatisticsInput);
32 RpcResult<GetFlowStatisticsOutput> rpcResultStatisticsOutput;
33 GetFlowStatisticsOutput getFlowStatisticsOutput;
35 rpcResultStatisticsOutput = futureStatisticsOutput.get();
36 if (rpcResultStatisticsOutput != null) {
37 getFlowStatisticsOutput = rpcResultStatisticsOutput.getResult();
38 if (getFlowStatisticsOutput != null) {
40 long byteCount = getFlowStatisticsOutput.getByteCount().getValue().longValue();
42 Duration duration = getFlowStatisticsOutput.getDuration();
43 int nanoseconds = duration.getNanosecond().getValue().intValue();
44 int seconds = duration.getSecond().getValue().intValue();
45 long packetCount = getFlowStatisticsOutput.getPacketCount().getValue().longValue();
47 result = new FlowOnNode(flow);
48 result.setByteCount(byteCount);
49 result.setDurationNanoseconds(nanoseconds);
50 result.setDurationSeconds(seconds);
51 result.setPacketCount(packetCount);
55 } catch (InterruptedException | ExecutionException e) {
56 LOG.error("Read flow not processed", e);
62 public List<FlowOnNode> readAllFlow(Node node, boolean cached) {
63 // TODO Auto-generated method stub
68 public NodeDescription readDescription(Node node, boolean cached) {
69 // TODO Auto-generated method stub
74 public NodeConnectorStatistics readNodeConnector(NodeConnector connector, boolean cached) {
75 NodeConnectorStatistics result = null;
76 GetNodeConnectorStatisticsInput getNodeConnectorStatisticsInput = FromSalConversionsUtils
77 .nodeConnectorStatistics(connector);
78 Future<RpcResult<GetNodeConnectorStatisticsOutput>> future = opendaylightFlowStatisticsService
79 .getNodeConnectorStatistics(getNodeConnectorStatisticsInput);
81 RpcResult<GetNodeConnectorStatisticsOutput> rpcResult = future.get();
82 if (rpcResult != null) {
83 GetNodeConnectorStatisticsOutput getNodeConnectorStatisticsOutput = rpcResult.getResult();
85 if (getNodeConnectorStatisticsOutput != null) {
86 result = new NodeConnectorStatistics();
88 long colisionCount = getNodeConnectorStatisticsOutput.getCollisionCount().longValue();
89 long receiveCrcErrorCount = getNodeConnectorStatisticsOutput.getReceiveCrcError().longValue();
90 long receiveFrameErrorCount = getNodeConnectorStatisticsOutput.getReceiveFrameError().longValue();
91 long receiveOverRunError = getNodeConnectorStatisticsOutput.getReceiveOverRunError().longValue();
93 long receiveDropCount = getNodeConnectorStatisticsOutput.getReceiveDrops().longValue();
94 long receiveErrorCount = getNodeConnectorStatisticsOutput.getReceiveErrors().longValue();
95 long receivePacketCount = getNodeConnectorStatisticsOutput.getPackets().getReceived().longValue();
96 long receivedByteCount = getNodeConnectorStatisticsOutput.getBytes().getReceived().longValue();
98 long transmitDropCount = getNodeConnectorStatisticsOutput.getTransmitDrops().longValue();
99 long transmitErrorCount = getNodeConnectorStatisticsOutput.getTransmitErrors().longValue();
100 long transmitPacketCount = getNodeConnectorStatisticsOutput.getPackets().getTransmitted()
102 long transmitByteCount = getNodeConnectorStatisticsOutput.getBytes().getTransmitted().longValue();
104 result.setCollisionCount(colisionCount);
105 result.setReceiveByteCount(receivedByteCount);
106 result.setReceiveCRCErrorCount(receiveCrcErrorCount);
107 result.setReceiveDropCount(receiveDropCount);
108 result.setReceiveErrorCount(receiveErrorCount);
109 result.setReceiveFrameErrorCount(receiveFrameErrorCount);
110 result.setReceiveOverRunErrorCount(receiveOverRunError);
111 result.setReceivePacketCount(receivePacketCount);
112 result.setTransmitByteCount(transmitByteCount);
113 result.setTransmitDropCount(transmitDropCount);
114 result.setTransmitErrorCount(transmitErrorCount);
115 result.setTransmitPacketCount(transmitPacketCount);
119 } catch (InterruptedException | ExecutionException e) {
120 LOG.error("Read node connector not processed", e);
128 public List<NodeConnectorStatistics> readAllNodeConnector(Node node, boolean cached) {
129 // TODO Auto-generated method stub
134 public NodeTableStatistics readNodeTable(NodeTable table, boolean cached) {
135 // TODO Auto-generated method stub
140 public List<NodeTableStatistics> readAllNodeTable(Node node, boolean cached) {
141 // TODO Auto-generated method stub
146 public long getTransmitRate(NodeConnector connector) {
147 // TODO Auto-generated method stub
151 public OpendaylightFlowStatisticsService getOpendaylightFlowStatisticsService() {
152 return opendaylightFlowStatisticsService;
155 public void setOpendaylightFlowStatisticsService(OpendaylightFlowStatisticsService opendaylightFlowStatisticsService) {
156 this.opendaylightFlowStatisticsService = opendaylightFlowStatisticsService;