aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceService.java
blob: f4671fb47e4b0fe6b228c97307542f70accac1bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
 * Copyright 2014-2015 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.onosproject.net.device;

import org.onosproject.event.ListenerService;
import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.MastershipRole;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;

import java.util.List;

/**
 * Service for interacting with the inventory of infrastructure devices.
 */
public interface DeviceService
    extends ListenerService<DeviceEvent, DeviceListener> {

    /**
     * Returns the number of infrastructure devices known to the system.
     *
     * @return number of infrastructure devices
     */
    int getDeviceCount();

    /**
     * Returns a collection of the currently known infrastructure
     * devices.
     *
     * @return collection of devices
     */
    Iterable<Device> getDevices();

    /**
     * Returns a collection of the currently known infrastructure
     * devices by device type.
     *
     * @param type device type
     * @return collection of devices
     */
    Iterable<Device> getDevices(Device.Type type);

    /**
     * Returns an iterable collection of all devices
     * currently available to the system.
     *
     * @return device collection
     */
    Iterable<Device> getAvailableDevices();

    /**
     * Returns an iterable collection of all devices currently available to the system by device type.
     *
     * @param type device type
     * @return device collection
     */
    Iterable<Device> getAvailableDevices(Device.Type type);

    /**
     * Returns the device with the specified identifier.
     *
     * @param deviceId device identifier
     * @return device or null if one with the given identifier is not known
     */
    Device getDevice(DeviceId deviceId);

    /**
     * Returns the current mastership role for the specified device.
     *
     * @param deviceId device identifier
     * @return designated mastership role
     */
    //XXX do we want this method here when MastershipService already does?
    MastershipRole getRole(DeviceId deviceId);


    /**
     * Returns the list of ports associated with the device.
     *
     * @param deviceId device identifier
     * @return list of ports
     */
    List<Port> getPorts(DeviceId deviceId);

    /**
     * Returns the list of port statistics associated with the device.
     *
     * @param deviceId device identifier
     * @return list of port statistics
     */
    List<PortStatistics> getPortStatistics(DeviceId deviceId);

    /**
     * Returns the list of port delta statistics associated with the device.
     *
     * @param deviceId device identifier
     * @return list of port statistics
     */
    List<PortStatistics> getPortDeltaStatistics(DeviceId deviceId);

    /**
     * Returns the port with the specified number and hosted by the given device.
     *
     * @param deviceId   device identifier
     * @param portNumber port number
     * @return device port
     */
    Port getPort(DeviceId deviceId, PortNumber portNumber);

    /**
     * Indicates whether or not the device is presently online and available.
     *
     * @param deviceId device identifier
     * @return true if the device is available
     */
    boolean isAvailable(DeviceId deviceId);

}