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.sal.binding.api.AbstractBindingAwareProvider;
14 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
15 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService;
19 import org.osgi.framework.BundleContext;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 public class FRMActivator extends AbstractBindingAwareProvider {
25 private final static Logger LOG = LoggerFactory.getLogger(FRMActivator.class);
27 private static FlowProvider flowProvider = new FlowProvider();
28 private static GroupProvider groupProvider = new GroupProvider();
29 private static MeterProvider meterProvider = new MeterProvider();
32 public void onSessionInitiated(final ProviderContext session) {
33 DataProviderService flowSalService = session.<DataProviderService>getSALService(DataProviderService.class);
34 FRMActivator.flowProvider.setDataService(flowSalService);
35 SalFlowService rpcFlowSalService = session.<SalFlowService>getRpcService(SalFlowService.class);
36 FRMActivator.flowProvider.setSalFlowService(rpcFlowSalService);
37 FRMActivator.flowProvider.start();
38 DataProviderService groupSalService = session.<DataProviderService>getSALService(DataProviderService.class);
39 FRMActivator.groupProvider.setDataService(groupSalService);
40 SalGroupService rpcGroupSalService = session.<SalGroupService>getRpcService(SalGroupService.class);
41 FRMActivator.groupProvider.setSalGroupService(rpcGroupSalService);
42 FRMActivator.groupProvider.start();
43 DataProviderService meterSalService = session.<DataProviderService>getSALService(DataProviderService.class);
44 FRMActivator.meterProvider.setDataService(meterSalService);
45 SalMeterService rpcMeterSalService = session.<SalMeterService>getRpcService(SalMeterService.class);
46 FRMActivator.meterProvider.setSalMeterService(rpcMeterSalService);
47 FRMActivator.meterProvider.start();
51 protected void stopImpl(final BundleContext context) {
53 FRMActivator.flowProvider.close();
54 FRMActivator.groupProvider.close();
55 FRMActivator.meterProvider.close();
56 } catch (Throwable e) {
57 LOG.error("Unexpected error by stopping FRMActivator", e);
58 throw new RuntimeException(e);