blob: 2faeb43514ea6b5e8769ff13eced49dd4d5c2ebe [file] [log] [blame]
tome06f8552014-08-26 16:58:42 -07001package org.onlab.onos.provider.of.host.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;
8import org.onlab.onos.net.Host;
9import org.onlab.onos.net.host.HostProvider;
10import org.onlab.onos.net.host.HostProviderBroker;
11import org.onlab.onos.net.host.HostProviderService;
12import org.onlab.onos.net.provider.AbstractProvider;
13import org.onlab.onos.net.provider.ProviderId;
tom5f38b3a2014-08-27 23:50:54 -070014import org.onlab.onos.of.controller.OpenFlowController;
tome06f8552014-08-26 16:58:42 -070015import org.slf4j.Logger;
tom5f38b3a2014-08-27 23:50:54 -070016
17import static org.slf4j.LoggerFactory.getLogger;
tome06f8552014-08-26 16:58:42 -070018
19/**
tomb1260e42014-08-26 18:39:57 -070020 * Provider which uses an OpenFlow controller to detect network
tome06f8552014-08-26 16:58:42 -070021 * end-station hosts.
22 */
tomb1260e42014-08-26 18:39:57 -070023@Component(immediate = true)
tome06f8552014-08-26 16:58:42 -070024public class OpenFlowHostProvider extends AbstractProvider implements HostProvider {
25
tom5f38b3a2014-08-27 23:50:54 -070026 private final Logger log = getLogger(getClass());
tome06f8552014-08-26 16:58:42 -070027
28 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
29 protected HostProviderBroker providerBroker;
30
tom5f38b3a2014-08-27 23:50:54 -070031 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
32 protected OpenFlowController controller;
tome06f8552014-08-26 16:58:42 -070033
tom5f38b3a2014-08-27 23:50:54 -070034 private HostProviderService providerService;
tome06f8552014-08-26 16:58:42 -070035
36 /**
37 * Creates an OpenFlow host provider.
38 */
39 public OpenFlowHostProvider() {
40 super(new ProviderId("org.onlab.onos.provider.of.host"));
41 }
42
43 @Activate
44 public void activate() {
45 providerService = providerBroker.register(this);
46 log.info("Started");
47 }
48
49 @Deactivate
50 public void deactivate() {
51 providerBroker.unregister(this);
52 providerService = null;
53 log.info("Stopped");
54 }
55
56 @Override
57 public void triggerProbe(Host host) {
58 log.info("Triggering probe on device {}", host);
59 }
tomb1260e42014-08-26 18:39:57 -070060
tome06f8552014-08-26 16:58:42 -070061}