Imported vpnservice as a subtree
[netvirt.git] / vpnservice / fcapsapplication / fcapsapplication-impl / src / main / java / org / opendaylight / vpnservice / fcapsapp / performancecounter / PMAgent.java
1 /*
2  * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.vpnservice.fcapsapp.performancecounter;
9
10
11 import org.opendaylight.vpnservice.fcapsappjmx.NumberOfOFPorts;
12 import org.opendaylight.vpnservice.fcapsappjmx.NumberOfOFSwitchCounter;
13 import org.opendaylight.vpnservice.fcapsappjmx.PacketInCounter;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 import javax.management.*;
18 import java.lang.String;
19 import java.lang.management.ManagementFactory;
20 import java.util.Map;
21
22 public class PMAgent {
23     private static Logger s_logger = LoggerFactory.getLogger(PMAgent.class);
24     private MBeanServer mbs = null;
25     private ObjectName switch_mbeanName = null;
26     private ObjectName port_mbeanName = null;
27     private ObjectName pktIn_mbeanName = null;
28     private static final String SWITCH_BEANNAME = "SDNC.PM:type=NumberOfOFSwitchCounter";
29     private static final String PORTS_BEANNAME = "SDNC.PM:type=NumberOfOFPortsCounter";
30     private static final String PKTIN_BEANNAME = "SDNC.PM:type=InjectedPacketInCounter";
31
32     private static NumberOfOFSwitchCounter switchCounterBean = new NumberOfOFSwitchCounter();
33     private static NumberOfOFPorts PortcounterBean = new NumberOfOFPorts();
34     private static PacketInCounter packetInCounter = new PacketInCounter();
35
36     public PMAgent() {
37         mbs = ManagementFactory.getPlatformMBeanServer();
38         try {
39             switch_mbeanName = new ObjectName(SWITCH_BEANNAME);
40             port_mbeanName = new ObjectName(PORTS_BEANNAME);
41             pktIn_mbeanName = new ObjectName(PKTIN_BEANNAME);
42         } catch (MalformedObjectNameException e) {
43             s_logger.error("ObjectName instance creation failed for BEANAME {}", e);
44
45         }
46     }
47
48     public void registerMbeanForEFS() {
49         try {
50             if (!mbs.isRegistered(switch_mbeanName)) {
51                 mbs.registerMBean(switchCounterBean, switch_mbeanName);
52                 s_logger.info("Registered Mbean {} successfully", switch_mbeanName);
53             }
54
55         } catch (Exception e) {
56             s_logger.error("Registeration failed for Mbean {} :{}", switch_mbeanName, e);
57         }
58     }
59
60     public void registerMbeanForPorts() {
61         try {
62             if (!mbs.isRegistered(port_mbeanName)) {
63                 mbs.registerMBean(PortcounterBean, port_mbeanName);
64                 s_logger.info("Registered Mbean {} successfully", port_mbeanName);
65             }
66         } catch (Exception e) {
67             s_logger.error("Registeration failed for Mbean {} :{}", port_mbeanName, e);
68         }
69     }
70
71     public void registerMbeanForPacketIn() {
72         try {
73             if (!mbs.isRegistered(pktIn_mbeanName)) {
74                 mbs.registerMBean(packetInCounter,pktIn_mbeanName);
75                 s_logger.info("Registered Mbean {} successfully",pktIn_mbeanName );
76             }
77         } catch (Exception e) {
78             s_logger.error("Registeration failed for Mbean {} :{}",pktIn_mbeanName , e);
79         }
80     }
81
82     public void connectToPMAgent(Map map) {
83         switchCounterBean.updateCounter(map);
84     }
85
86     public void connectToPMAgentForNOOfPorts(Map map) {
87         PortcounterBean.updateCounter(map);
88     }
89
90     public void sendPacketInCounterUpdate(Map map){
91         packetInCounter.updateCounter(map);
92     }
93 }