blob: e601ac72c03beeaaf6e5bef917a260b1a83dec91 [file] [log] [blame]
tomb5a46e62014-08-26 14:20:00 -07001package org.onlab.onos.provider.of.device.impl;
2
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.Reference;
7import org.apache.felix.scr.annotations.ReferenceCardinality;
tomab21e7c2014-08-26 15:23:08 -07008import org.onlab.onos.net.Device;
9import org.onlab.onos.net.MastershipRole;
10import org.onlab.onos.net.device.DeviceProvider;
tomb5a46e62014-08-26 14:20:00 -070011import org.onlab.onos.net.device.DeviceProviderBroker;
tomab21e7c2014-08-26 15:23:08 -070012import org.onlab.onos.net.device.DeviceProviderService;
13import org.onlab.onos.net.provider.AbstractProvider;
14import org.onlab.onos.net.provider.ProviderId;
tomb5a46e62014-08-26 14:20:00 -070015import org.slf4j.Logger;
16import org.slf4j.LoggerFactory;
17
18/**
tomb1260e42014-08-26 18:39:57 -070019 * Provider which uses an OpenFlow controller to detect network
tome06f8552014-08-26 16:58:42 -070020 * infrastructure devices.
tomb5a46e62014-08-26 14:20:00 -070021 */
tomb1260e42014-08-26 18:39:57 -070022@Component(immediate = true)
tomab21e7c2014-08-26 15:23:08 -070023public class OpenFlowDeviceProvider extends AbstractProvider implements DeviceProvider {
tomb5a46e62014-08-26 14:20:00 -070024
25 private final Logger log = LoggerFactory.getLogger(OpenFlowDeviceProvider.class);
26
27 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
tomab21e7c2014-08-26 15:23:08 -070028 protected DeviceProviderBroker providerBroker;
29
30 private DeviceProviderService providerService;
tomb5a46e62014-08-26 14:20:00 -070031
32// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
33// protected OpenFlowController controller;
34
tomab21e7c2014-08-26 15:23:08 -070035
36 /**
37 * Creates an OpenFlow device provider.
38 */
39 public OpenFlowDeviceProvider() {
40 super(new ProviderId("org.onlab.onos.provider.of.device"));
41 }
42
tomb5a46e62014-08-26 14:20:00 -070043 @Activate
44 public void activate() {
tomab21e7c2014-08-26 15:23:08 -070045 providerService = providerBroker.register(this);
tomb5a46e62014-08-26 14:20:00 -070046 log.info("Started");
47 }
48
49 @Deactivate
50 public void deactivate() {
tomab21e7c2014-08-26 15:23:08 -070051 providerBroker.unregister(this);
52 providerService = null;
tomb5a46e62014-08-26 14:20:00 -070053 log.info("Stopped");
54 }
55
tomab21e7c2014-08-26 15:23:08 -070056 @Override
57 public void triggerProbe(Device device) {
tome06f8552014-08-26 16:58:42 -070058 log.info("Triggering probe on device {}", device.id());
tomab21e7c2014-08-26 15:23:08 -070059 }
60
61 @Override
62 public void roleChanged(Device device, MastershipRole newRole) {
tomb1260e42014-08-26 18:39:57 -070063 log.info("Accepting mastership role change for device {}", device.id());
tomab21e7c2014-08-26 15:23:08 -070064 }
65
tomb5a46e62014-08-26 14:20:00 -070066}