6638fcffba7f5a8d0c752d737cabb1151f28808f
[controller.git] / opendaylight / protocol_plugins / openflow_netty / src / main / java / org / opendaylight / controller / protocol_plugin / openflow / IOFStatisticsManager.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.controller.protocol_plugin.openflow;
11
12 import java.util.List;
13
14 import org.openflow.protocol.OFMatch;
15 import org.openflow.protocol.statistics.OFStatistics;
16 import org.openflow.protocol.statistics.OFStatisticsType;
17
18 /**
19  * Interface to expose the openflow statistics collected on the switches
20  */
21 public interface IOFStatisticsManager {
22     /**
23      * Return all the statistics for all the flows present on the specified switch
24      *
25      * @param switchId the openflow datapath id
26      * @return    the list of openflow statistics
27      */
28     List<OFStatistics> getOFFlowStatistics(Long switchId);
29
30     /**
31      * Return all the statistics for all the flows present on the specified switch
32      *
33      * @param switchId the openflow datapath id
34      * @param ofMatch the openflow match to query. If null, the query is intended for all the flows
35      * @return the list of openflow statistics
36      */
37     List<OFStatistics> getOFFlowStatistics(Long switchId, OFMatch ofMatch);
38
39     /**
40      * Return the description statistics for the specified switch.
41      *
42      * @param switchId the openflow datapath id
43      * @return the list of openflow statistics
44      */
45     List<OFStatistics> getOFDescStatistics(Long switchId);
46
47     /**
48      * Return the flow table statistics for the specified switch.
49      *
50      * @param switchId the openflow datapath id
51      * @return the list of openflow statistics
52      */
53     List<OFStatistics> getOFTableStatistics(Long switchId);
54
55     /**
56      * Returns the statistics for all the ports on the specified switch
57      *
58      * @param switchId the openflow datapath id
59      * @return the list of openflow statistics
60      */
61     List<OFStatistics> getOFPortStatistics(Long switchId);
62
63     /**
64      * Returns the statistics for the specified switch port
65      *
66      * @param switchId the openflow datapath id
67      * @param portId the openflow switch port id
68      * @return the list of openflow statistics
69      */
70     List<OFStatistics> getOFPortStatistics(Long switchId, short portId);
71
72     /**
73      * Returns the number of flows installed on the switch
74      *
75      * @param switchId the openflow datapath id
76      * @return the number of flows installed on the switch
77      */
78     int getFlowsNumber(long switchId);
79
80     /**
81      * Send a statistics request message to the specified switch and returns
82      * the switch response. It blocks the caller until the response has arrived
83      * from the switch or the request has timed out
84      *
85      * @param switchId the openflow datapath id of the target switch
86      * @param statType the openflow statistics type
87      * @param target the target object. For flow statistics it is the OFMatch.
88      *                  For port statistics, it is the port id. If null the query
89      *                  will be performed for all the targets for the specified
90      *                  statistics type.
91      *
92      * @param timeout the timeout in milliseconds the system will wait for a response
93      *           from the switch, before declaring failure
94      * @return the list of openflow statistics
95      */
96     List<OFStatistics> queryStatistics(Long switchId,
97             OFStatisticsType statType, Object target);
98
99     /**
100      * Returns the averaged transmit rate for the passed switch port
101      *
102      * @param switchId the openflow datapath id of the target switch
103      * @param portId the openflow switch port id
104      * @return the median transmit rate in bits per second
105      */
106     long getTransmitRate(Long switchId, Short port);
107
108 }