blob: c41724fc7b31a37ce6b6575e58f791902f16eb89 [file] [log] [blame]
Thomas Vachuska781d18b2014-10-27 10:31:25 -07001/*
Jonathan Hartf4bd0482017-01-27 15:11:18 -08002 * Copyright 2017-present Open Networking Laboratory
Thomas Vachuska781d18b2014-10-27 10:31:25 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Thomas Vachuska781d18b2014-10-27 10:31:25 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
Thomas Vachuska781d18b2014-10-27 10:31:25 -070015 */
Jonathan Hartf4bd0482017-01-27 15:11:18 -080016
Jonathan Hart2da1e602015-02-18 19:09:24 -080017package org.onosproject.routing.config.impl;
Jonathan Hart90a02c22015-02-13 11:52:07 -080018
Jonathan Hart90a02c22015-02-13 11:52:07 -080019import org.apache.felix.scr.annotations.Activate;
20import org.apache.felix.scr.annotations.Component;
Jonathan Hart66018992015-07-31 11:19:27 -070021import org.apache.felix.scr.annotations.Deactivate;
Jonathan Hart90a02c22015-02-13 11:52:07 -080022import org.apache.felix.scr.annotations.Reference;
23import org.apache.felix.scr.annotations.ReferenceCardinality;
24import org.apache.felix.scr.annotations.Service;
Jonathan Hart4cb39882015-08-12 23:50:55 -040025import org.onosproject.core.ApplicationId;
26import org.onosproject.core.CoreService;
27import org.onosproject.incubator.net.intf.InterfaceService;
Ray Milkeya4122362015-08-18 15:19:08 -070028import org.onosproject.net.config.ConfigFactory;
29import org.onosproject.net.config.NetworkConfigRegistry;
Jonathan Hart4cb39882015-08-12 23:50:55 -040030import org.onosproject.net.config.NetworkConfigService;
Thomas Vachuska4998caa2015-08-26 13:28:38 -070031import org.onosproject.net.config.basics.SubjectFactories;
Jonathan Hart4cb39882015-08-12 23:50:55 -040032import org.onosproject.routing.config.BgpConfig;
Pingping Lin9a445c82016-04-07 11:40:29 -070033import org.onosproject.routing.config.RouterConfig;
Jonathan Harta7a24cf2017-02-02 16:13:57 -080034import org.onosproject.routing.config.RoutersConfig;
Jonathan Hart2da1e602015-02-18 19:09:24 -080035import org.onosproject.routing.config.RoutingConfigurationService;
Jonathan Hart90a02c22015-02-13 11:52:07 -080036import org.slf4j.Logger;
37import org.slf4j.LoggerFactory;
Jonathan Hartbac07a02014-10-13 21:29:54 -070038
Jonathan Hartbac07a02014-10-13 21:29:54 -070039/**
Jonathan Hart90a02c22015-02-13 11:52:07 -080040 * Implementation of RoutingConfigurationService which reads routing
Jonathan Hartde6e2032016-04-15 13:28:02 -070041 * configuration from the network configuration service.
Jonathan Hartbac07a02014-10-13 21:29:54 -070042 */
Jonathan Hart90a02c22015-02-13 11:52:07 -080043@Component(immediate = true)
44@Service
45public class RoutingConfigurationImpl implements RoutingConfigurationService {
Jonathan Hartbac07a02014-10-13 21:29:54 -070046
Pavlin Radoslavov0a297b12014-11-11 16:03:27 -080047 private final Logger log = LoggerFactory.getLogger(getClass());
Jonathan Hartbac07a02014-10-13 21:29:54 -070048
Jonathan Hart90a02c22015-02-13 11:52:07 -080049 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
Jonathan Hart66018992015-07-31 11:19:27 -070050 protected NetworkConfigRegistry registry;
51
Jonathan Hart4cb39882015-08-12 23:50:55 -040052 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
53 protected NetworkConfigService configService;
54
55 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
56 protected CoreService coreService;
57
58 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
59 protected InterfaceService interfaceService;
60
Jonathan Hart6344f572015-12-15 08:26:25 -080061 private ConfigFactory<ApplicationId, BgpConfig> bgpConfigFactory =
62 new ConfigFactory<ApplicationId, BgpConfig>(
63 SubjectFactories.APP_SUBJECT_FACTORY, BgpConfig.class, "bgp") {
Jonathan Hart66018992015-07-31 11:19:27 -070064 @Override
65 public BgpConfig createConfig() {
66 return new BgpConfig();
67 }
68 };
69
Jonathan Hart6344f572015-12-15 08:26:25 -080070 private ConfigFactory<ApplicationId, RouterConfig> routerConfigFactory =
71 new ConfigFactory<ApplicationId, RouterConfig>(
72 SubjectFactories.APP_SUBJECT_FACTORY, RouterConfig.class, "router") {
Pingping Lin9a445c82016-04-07 11:40:29 -070073 @Override
74 public RouterConfig createConfig() {
75 return new RouterConfig();
76 }
77 };
78
Jonathan Harta7a24cf2017-02-02 16:13:57 -080079 private ConfigFactory<ApplicationId, RoutersConfig> routersConfigFactory =
80 new ConfigFactory<ApplicationId, RoutersConfig>(
81 SubjectFactories.APP_SUBJECT_FACTORY, RoutersConfig.class, "routers", true) {
82 @Override
83 public RoutersConfig createConfig() {
84 return new RoutersConfig();
85 }
86 };
87
Jonathan Hart90a02c22015-02-13 11:52:07 -080088 @Activate
89 public void activate() {
Jonathan Hart6344f572015-12-15 08:26:25 -080090 registry.registerConfigFactory(bgpConfigFactory);
91 registry.registerConfigFactory(routerConfigFactory);
Jonathan Harta7a24cf2017-02-02 16:13:57 -080092 registry.registerConfigFactory(routersConfigFactory);
Jonathan Hart90a02c22015-02-13 11:52:07 -080093 log.info("Routing configuration service started");
94 }
95
Jonathan Hart66018992015-07-31 11:19:27 -070096 @Deactivate
97 public void deactivate() {
Jonathan Hart6344f572015-12-15 08:26:25 -080098 registry.unregisterConfigFactory(bgpConfigFactory);
Pingping Lin9a445c82016-04-07 11:40:29 -070099 registry.unregisterConfigFactory(routerConfigFactory);
Jonathan Harta7a24cf2017-02-02 16:13:57 -0800100 registry.unregisterConfigFactory(routersConfigFactory);
Jonathan Hart66018992015-07-31 11:19:27 -0700101 log.info("Routing configuration service stopped");
102 }
103
Jonathan Hartbac07a02014-10-13 21:29:54 -0700104}