blob: dacf3a8e2134932674da578d1f11934d367d59b8 [file] [log] [blame]
tome06f8552014-08-26 16:58:42 -07001package org.onlab.onos.provider.of.link.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.link.LinkProvider;
9import org.onlab.onos.net.link.LinkProviderBroker;
10import org.onlab.onos.net.link.LinkProviderService;
11import org.onlab.onos.net.provider.AbstractProvider;
12import org.onlab.onos.net.provider.ProviderId;
tom5f38b3a2014-08-27 23:50:54 -070013import org.onlab.onos.of.controller.OpenFlowController;
tome06f8552014-08-26 16:58:42 -070014import org.slf4j.Logger;
tom5f38b3a2014-08-27 23:50:54 -070015
16import static org.slf4j.LoggerFactory.getLogger;
tome06f8552014-08-26 16:58:42 -070017
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 links.
21 */
tomb1260e42014-08-26 18:39:57 -070022@Component(immediate = true)
tome06f8552014-08-26 16:58:42 -070023public class OpenFlowLinkProvider extends AbstractProvider implements LinkProvider {
24
tom5f38b3a2014-08-27 23:50:54 -070025 private final Logger log = getLogger(getClass());
tome06f8552014-08-26 16:58:42 -070026
27 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
28 protected LinkProviderBroker providerBroker;
29
tom5f38b3a2014-08-27 23:50:54 -070030 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
31 protected OpenFlowController controller;
tome06f8552014-08-26 16:58:42 -070032
tom5f38b3a2014-08-27 23:50:54 -070033 private LinkProviderService providerService;
tome06f8552014-08-26 16:58:42 -070034
35 /**
36 * Creates an OpenFlow link provider.
37 */
38 public OpenFlowLinkProvider() {
39 super(new ProviderId("org.onlab.onos.provider.of.link"));
40 }
41
42 @Activate
43 public void activate() {
44 providerService = providerBroker.register(this);
45 log.info("Started");
46 }
47
48 @Deactivate
49 public void deactivate() {
50 providerBroker.unregister(this);
51 providerService = null;
52 log.info("Stopped");
53 }
54
55}