blob: ce7c6c45f64dc7bc47f325d2d36ea60baf0a5b9f [file] [log] [blame]
tomb1260e42014-08-26 18:39:57 -07001package org.onlab.onos.net.trivial.impl;
tomd3097b02014-08-26 10:40:29 -07002
3import org.apache.felix.scr.annotations.Activate;
4import org.apache.felix.scr.annotations.Component;
5import org.apache.felix.scr.annotations.Deactivate;
6import org.apache.felix.scr.annotations.Service;
7import org.onlab.onos.net.DeviceId;
8import org.onlab.onos.net.MastershipRole;
9import org.onlab.onos.net.device.DeviceDescription;
10import org.onlab.onos.net.device.DeviceProvider;
11import org.onlab.onos.net.device.DeviceProviderBroker;
12import org.onlab.onos.net.device.DeviceProviderService;
13import org.onlab.onos.net.device.PortDescription;
14import org.onlab.onos.net.provider.AbstractProviderBroker;
15import org.onlab.onos.net.provider.AbstractProviderService;
16import org.slf4j.Logger;
17import org.slf4j.LoggerFactory;
18
19import java.util.List;
20
21/**
tomb36046e2014-08-27 00:22:24 -070022 * Provides basic implementation of the device SB & NB APIs.
tomd3097b02014-08-26 10:40:29 -070023 */
24@Component(immediate = true)
25@Service
26public class SimpleDeviceManager implements DeviceProviderBroker {
27
28 private Logger log = LoggerFactory.getLogger(SimpleDeviceManager.class);
29
30 private final DeviceProviderBroker broker = new InternalBroker();
31
32 @Activate
33 public void activate() {
34 log.info("Started");
35 }
36
37 @Deactivate
38 public void deactivate() {
39 log.info("Stopped");
40 }
41
42 @Override
43 public DeviceProviderService register(DeviceProvider provider) {
tomab21e7c2014-08-26 15:23:08 -070044 log.info("Registering provider {}", provider.id());
tomd3097b02014-08-26 10:40:29 -070045 return broker.register(provider);
46 }
47
48 @Override
49 public void unregister(DeviceProvider provider) {
tomab21e7c2014-08-26 15:23:08 -070050 log.info("Unregistering provider {}", provider.id());
tomd3097b02014-08-26 10:40:29 -070051 broker.unregister(provider);
52 }
53
54 // Internal delegate for tracking various providers and issuing them a
55 // personalized provider service.
56 private class InternalBroker extends AbstractProviderBroker<DeviceProvider, DeviceProviderService>
57 implements DeviceProviderBroker {
58 @Override
59 protected DeviceProviderService createProviderService(DeviceProvider provider) {
60 return new InternalDeviceProviderService(provider);
61 }
62 }
63
64 // Personalized device provider service issued to the supplied provider.
65 private class InternalDeviceProviderService extends AbstractProviderService<DeviceProvider>
66 implements DeviceProviderService {
67
68 public InternalDeviceProviderService(DeviceProvider provider) {
69 super(provider);
70 }
71
72 @Override
73 public MastershipRole deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription) {
74 log.info("Device {} connected: {}", deviceId, deviceDescription);
75 return MastershipRole.MASTER;
76 }
77
78 @Override
79 public void deviceDisconnected(DeviceId deviceId) {
80 log.info("Device {} disconnected", deviceId);
81
82 }
83
84 @Override
85 public void updatePorts(DeviceId deviceId, List<PortDescription> ports) {
86 // FIXME: fix the interface to accept DeviceId separately
87 log.info("Device {} ports updated: {}", ports);
88
89 }
90
91 @Override
92 public void portStatusChanged(DeviceId deviceId, PortDescription port) {
93 log.info("Device {} port status changed: {}", deviceId, port);
94 }
95 }
96}