Make sure invokeOperation is set once
[controller.git] / opendaylight / adsal / sal / api / src / main / java / org / opendaylight / controller / sal / reader / IReadService.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.sal.reader;
11
12 import java.util.List;
13
14 import org.opendaylight.controller.sal.core.Node;
15 import org.opendaylight.controller.sal.core.NodeConnector;
16 import org.opendaylight.controller.sal.core.NodeTable;
17 import org.opendaylight.controller.sal.flowprogrammer.Flow;
18
19 /**
20  * This interface defines methods for retrieving the network node's
21  * flow/port/queue hardware view
22  */
23 @Deprecated
24 public interface IReadService {
25     /**
26      * Get the hardware view for the specified flow on the specified network
27      * node
28      *
29      * @param node
30      *            the network node
31      *            {@link org.opendaylight.controller.sal.core.Node}
32      * @param flow
33      *            the given flow
34      *            {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
35      * @return the flow
36      *         {@link org.opendaylight.controller.sal.reader.FlowOnNode}
37      *         installed on the node
38      */
39     FlowOnNode readFlow(Node node, Flow flow);
40
41     /**
42      * Get the hardware view for the specified flow on the specified network node
43      * This call results in a direct polling of the information from the node
44      * Caller will be blocked until node replies or request times out
45      *
46      * @param node
47      *            the network node
48      *            {@link org.opendaylight.controller.sal.core.Node}
49      * @param flow
50      *            the given flow
51      *            {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
52      * @return the flow
53      *         {@link org.opendaylight.controller.sal.reader.FlowOnNode}
54      *         installed on the node
55      */
56     FlowOnNode nonCachedReadFlow(Node node, Flow flow);
57
58     /**
59      * Get the hardware view for all the flows installed on the network node
60      *
61      * @param node
62      *            the network node
63      *            {@link org.opendaylight.controller.sal.core.Node}
64      * @return all the flows
65      *         {@link org.opendaylight.controller.sal.reader.FlowOnNode}
66      *         installed on the node
67      */
68     List<FlowOnNode> readAllFlows(Node node);
69
70     /**
71      * Get the hardware view for all the flows installed on the network node
72      * This call results in a direct polling of the information from the node
73      * Caller will be blocked until node replies or request times out
74      *
75      * @param node
76      *            the network node
77      *            {@link org.opendaylight.controller.sal.core.Node}
78      * @return the hardware view of all the flows
79      *         {@link org.opendaylight.controller.sal.reader.FlowOnNode}
80      *         installed on the node
81      */
82     List<FlowOnNode> nonCachedReadAllFlows(Node node);
83
84     /**
85      * Get the description information for the network node
86      *
87      * @param node
88      *            the network node
89      *            {@link org.opendaylight.controller.sal.core.Node}
90      * @return the node description
91      *         {@link org.opendaylight.controller.sal.reader.NodeDescription}
92      */
93     NodeDescription readDescription(Node node);
94
95     /**
96      * Get the description information for the network node
97      * This call results in a direct polling of the information from the node
98      * Caller will be blocked until node replies or request times out
99      *
100      * @param node
101      *            the network node
102      *            {@link org.opendaylight.controller.sal.core.Node}
103      * @return the node description
104      *         {@link org.opendaylight.controller.sal.reader.NodeDescription}
105      */
106     NodeDescription nonCachedReadDescription(Node node);
107
108     /**
109      * Get the hardware view for the specified node connector
110      *
111      * @param connector
112      *            the given node connector
113      *            {@link org.opendaylight.controller.sal.core.NodeConnector}
114      * @return the node connector statistics
115      *         {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
116      */
117     NodeConnectorStatistics readNodeConnector(NodeConnector connector);
118
119     /**
120      * Get the hardware view for all the node connectors
121      * present on the specified network node
122      *
123      * @param node
124      *            the network node
125      *            {@link org.opendaylight.controller.sal.core.Node}
126      * @return the statistics for all the node connectors
127      *         {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
128      */
129     List<NodeConnectorStatistics> readNodeConnectors(Node node);
130
131     /**
132      * Read the Table statistics for the given node table
133      *
134      * @param table
135      *            the table
136      *            {@link org.opendaylight.controller.sal.core.NodeTable}
137      * @return the table statistics
138      *         {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
139      */
140     NodeTableStatistics readNodeTable(NodeTable table);
141
142     /**
143      * Read the Table statistics for the given node This is not used. Querying
144      * all tables on a node is not currently a feature.
145      *
146      * @param node
147      *            the network node
148      *            {@link org.opendaylight.controller.sal.core.Node}
149      * @return the table statistics
150      *         {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
151      *         for all tables in a given node
152      */
153     List<NodeTableStatistics> readNodeTable(Node node);
154
155     /**
156      * Get the table statistics for the given node table
157      * This call results in a direct polling of the information from the node
158      * Caller will be blocked until the node replies or request times out
159      *
160      * @param table
161      *            the table
162      *            {@link org.opendaylight.controller.sal.core.NodeTable}
163      * @return the table statistics
164      *         {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
165      */
166     NodeTableStatistics nonCachedReadNodeTable(NodeTable table);
167
168     /**
169      * Get the node connectors statistics information for the network node
170      * This call results in a direct polling of the information from the node
171      * Caller will be blocked until node replies or request times out
172      *
173      * @param node
174      *            the network node
175      *            {@link org.opendaylight.controller.sal.core.Node}
176      * @return the statistics
177      *         {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
178      *         for all node connectors in a given node
179      */
180     List<NodeConnectorStatistics> nonCachedReadNodeConnectors(Node node);
181
182     /**
183      * Get the node connectors statistics information for the network node
184      *
185      * @param connector
186      *            the given node connector
187      *            {@link org.opendaylight.controller.sal.core.NodeConnector}
188      * @return the node connector statistics
189      *         {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
190      */
191     NodeConnectorStatistics nonCachedReadNodeConnector(NodeConnector connector);
192
193     /**
194      * Get the transmit rate for the specified node connector
195      *
196      * @param connector
197      *            the given node connector
198      *            {@link org.opendaylight.controller.sal.core.NodeConnector}
199      * @return tx rate [bps]
200      */
201     long getTransmitRate(NodeConnector connector);
202
203 }