2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.frm;
10 import org.opendaylight.controller.frm.flow.FlowProvider;
11 import org.opendaylight.controller.frm.group.GroupProvider;
12 import org.opendaylight.controller.frm.meter.MeterProvider;
13 import org.opendaylight.controller.frm.reconil.FlowNodeReconcilProvider;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider;
16 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
17 import org.osgi.framework.BundleContext;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
22 * Forwarding Rules Manager Activator
24 * Activator manages all Providers ({@link FlowProvider}, {@link GroupProvider},
25 * {@link MeterProvider} and the {@link FlowNodeReconcilProvider}).
26 * It registers all listeners (DataChangeEvent, ReconcilNotification)
27 * in the Session Initialization phase.
29 * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
32 public class FRMActivator extends AbstractBindingAwareProvider {
34 private final static Logger LOG = LoggerFactory.getLogger(FRMActivator.class);
36 private final FlowProvider flowProvider;
37 private final GroupProvider groupProvider;
38 private final MeterProvider meterProvider;
39 private final FlowNodeReconcilProvider flowNodeReconcilProvider;
41 public FRMActivator() {
42 this.flowProvider = new FlowProvider();
43 this.groupProvider = new GroupProvider();
44 this.meterProvider = new MeterProvider();
45 this.flowNodeReconcilProvider = new FlowNodeReconcilProvider();
49 public void onSessionInitiated(final ProviderContext session) {
50 LOG.info("FRMActivator initialization.");
53 final DataBroker flowSalService = session.getSALService(DataBroker.class);
54 this.flowProvider.init(flowSalService);
55 this.flowProvider.start(session);
57 final DataBroker groupSalService = session.getSALService(DataBroker.class);
58 this.groupProvider.init(groupSalService);
59 this.groupProvider.start(session);
61 final DataBroker meterSalService = session.getSALService(DataBroker.class);
62 this.meterProvider.init(meterSalService);
63 this.meterProvider.start(session);
64 /* FlowNode Reconciliation */
65 final DataBroker dbs = session.getSALService(DataBroker.class);
66 this.flowNodeReconcilProvider.init(dbs);
67 this.flowNodeReconcilProvider.start(session);
69 LOG.info("FRMActivator started successfully");
70 } catch (Exception e) {
71 String errMsg = "Unexpected error by starting FRMActivator";
73 throw new IllegalStateException(errMsg, e);
78 protected void stopImpl(final BundleContext context) {
80 this.flowProvider.close();
81 this.groupProvider.close();
82 this.meterProvider.close();
83 this.flowNodeReconcilProvider.close();
84 } catch (Exception e) {
85 LOG.error("Unexpected error by stopping FRMActivator", e);