blob: af214d38e5cfc6c799ea64d6c260f7e81116e0ec [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/**
19 * Device provider which uses an OpenFlow controller to detect devices.
20 */
21@Component
tomab21e7c2014-08-26 15:23:08 -070022public class OpenFlowDeviceProvider extends AbstractProvider implements DeviceProvider {
tomb5a46e62014-08-26 14:20:00 -070023
24 private final Logger log = LoggerFactory.getLogger(OpenFlowDeviceProvider.class);
25
26 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
tomab21e7c2014-08-26 15:23:08 -070027 protected DeviceProviderBroker providerBroker;
28
29 private DeviceProviderService providerService;
tomb5a46e62014-08-26 14:20:00 -070030
31// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
32// protected OpenFlowController controller;
33
tomab21e7c2014-08-26 15:23:08 -070034
35 /**
36 * Creates an OpenFlow device provider.
37 */
38 public OpenFlowDeviceProvider() {
39 super(new ProviderId("org.onlab.onos.provider.of.device"));
40 }
41
tomb5a46e62014-08-26 14:20:00 -070042 @Activate
43 public void activate() {
tomab21e7c2014-08-26 15:23:08 -070044 providerService = providerBroker.register(this);
tomb5a46e62014-08-26 14:20:00 -070045 log.info("Started");
46 }
47
48 @Deactivate
49 public void deactivate() {
tomab21e7c2014-08-26 15:23:08 -070050 providerBroker.unregister(this);
51 providerService = null;
tomb5a46e62014-08-26 14:20:00 -070052 log.info("Stopped");
53 }
54
tomab21e7c2014-08-26 15:23:08 -070055 @Override
56 public void triggerProbe(Device device) {
57 log.info("Triggerring probe on device {}", device.id());
58 }
59
60 @Override
61 public void roleChanged(Device device, MastershipRole newRole) {
62 log.info("Accepting mastership role change fordevice {}", device.id());
63 }
64
tomb5a46e62014-08-26 14:20:00 -070065}