2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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.vpnservice.fcapsapp;
10 import com.google.common.base.Preconditions;
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
12 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
13 import org.opendaylight.controller.md.sal.binding.api.NotificationService;
14 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
16 import org.opendaylight.vpnservice.fcapsapp.performancecounter.FlowNodeConnectorInventoryTranslatorImpl;
17 import org.opendaylight.vpnservice.fcapsapp.performancecounter.PMAgent;
18 import org.opendaylight.vpnservice.fcapsapp.performancecounter.PacketInCounterHandler;
19 import org.opendaylight.vpnservice.fcapsapp.portinfo.PortNameMapping;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
23 import org.opendaylight.vpnservice.fcapsapp.alarm.AlarmAgent;
24 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 public class FcapsProvider implements AutoCloseable {
30 public static Logger s_logger = LoggerFactory.getLogger(FcapsProvider.class);
31 private final DataBroker dataService;
32 private final NotificationService notificationProviderService;
33 private final EntityOwnershipService entityOwnershipService;
34 private FlowNodeConnectorInventoryTranslatorImpl flowNodeConnectorInventoryTranslatorImpl;
35 private PacketInCounterHandler packetInCounterHandler;
36 private NodeEventListener<FlowCapableNode> nodeNodeEventListener;
37 private final AlarmAgent alarmAgent;
38 private final PMAgent pmAgent;
41 * Contructor sets the services
42 * @param dataBroker instance of databroker
43 * @param notificationService instance of notificationservice
44 * @param eos instance of EntityOwnershipService
46 public FcapsProvider(DataBroker dataBroker,NotificationService notificationService,
47 final EntityOwnershipService eos) {
48 this.dataService = Preconditions.checkNotNull(dataBroker, "DataBroker can not be null!");
49 s_logger.info("FcapsProvider dataBroket is set");
51 this.notificationProviderService = Preconditions.checkNotNull(notificationService,
52 "notificationService can not be null!");
53 s_logger.info("FcapsProvider notificationProviderService is set");
55 this.entityOwnershipService = Preconditions.checkNotNull(eos, "EntityOwnership service can not be null");
56 s_logger.info("FcapsProvider entityOwnershipService is set");
58 alarmAgent = new AlarmAgent();
59 pmAgent = new PMAgent();
61 alarmAgent.registerAlarmMbean();
63 pmAgent.registerMbeanForEFS();
64 pmAgent.registerMbeanForPorts();
65 pmAgent.registerMbeanForPacketIn();
66 PortNameMapping.registerPortMappingBean();
68 nodeNodeEventListener = new NodeEventListener<>(entityOwnershipService);
69 registerListener(dataService);
70 flowNodeConnectorInventoryTranslatorImpl = new
71 FlowNodeConnectorInventoryTranslatorImpl(dataService,entityOwnershipService);
72 packetInCounterHandler = new PacketInCounterHandler();
73 notificationProviderService.registerNotificationListener(packetInCounterHandler);
76 private void registerListener(DataBroker dataBroker) {
77 final DataTreeIdentifier<FlowCapableNode> treeId =
78 new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, getWildCardPath());
80 dataBroker.registerDataTreeChangeListener(treeId, nodeNodeEventListener);
81 } catch (Exception e) {
82 s_logger.error("Registeration failed on DataTreeChangeListener {}",e);
86 private InstanceIdentifier<FlowCapableNode> getWildCardPath() {
87 return InstanceIdentifier.create(Nodes.class)
89 .augmentation(FlowCapableNode.class);
93 public void close() throws Exception {