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.interfacemgr.pmcounters;
10 import java.lang.management.ManagementFactory;
13 import javax.management.InstanceNotFoundException;
14 import javax.management.MBeanException;
15 import javax.management.MBeanServer;
16 import javax.management.MalformedObjectNameException;
17 import javax.management.ObjectName;
18 import javax.management.ReflectionException;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 public class PMAgentForNodeConnectorCounters {
25 private static Logger logger = LoggerFactory.getLogger(PMAgentForNodeConnectorCounters.class);
26 private MBeanServer mbServer = null;
27 private ObjectName mbeanForOFPortDuration = null;
28 private ObjectName mbeanForOFPortReceiveDrop = null;
29 private ObjectName mbeanForOFPortReceiveError = null;
30 private ObjectName mbeanForOFPortPacketSent = null;
31 private ObjectName mbeanForOFPortPacketReceive = null;
32 private ObjectName mbeanForOFPortBytesSent = null;
33 private ObjectName mbeanForOFPortBytesReceive = null;
34 private ObjectName mbeanForEntriesPerOFTable = null;
35 private static final String BEANNAMEFOROFPORTDURATION = "SDNC.PM:type=CounterForOFPortDuration";
36 private static final String BEANNAMEFOROFPORTREVEIVEDROP = "SDNC.PM:type=CounterForOFPortReceiveDrop";
37 private static final String BEANNAMEFOROFPORTREVEIVEERROR = "SDNC.PM:type=CounterForOFPortReceiveError";
38 private static final String BEANNAMEFOROFPORTPACKETSENT = "SDNC.PM:type=CounterForOFPortPacketSent";
39 private static final String BEANNAMEFOROFPORTPACKETRECEIVE = "SDNC.PM:type=CounterForOFPortPacketReceive";
40 private static final String BEANNAMEFOROFPORTBYTESSENT = "SDNC.PM:type=CounterForOFPortBytesSent";
41 private static final String BEANNAMEFOROFPORTBYTESRECEIVE = "SDNC.PM:type=CounterForOFPortBytesReceive";
42 private static final String BEANNAMEFORENTRIESPEROFTABLE = "SDNC.PM:type=CounterForEntriesPerOFTable";
43 private static CounterForOFPortDuration counterForOFPortDurationBean = new CounterForOFPortDuration();
44 private static CounterForOFPortReceiveDrop counterForOFPortReceiveDropBean = new CounterForOFPortReceiveDrop();
45 private static CounterForOFPortReceiveError counterForOFPortReceiveErrorBean = new CounterForOFPortReceiveError();
46 private static CounterForOFPortPacketSent counterForOFPortPacketSent = new CounterForOFPortPacketSent();
47 private static CounterForOFPortPacketReceive counterForOFPortPacketReceive = new CounterForOFPortPacketReceive();
48 private static CounterForOFPortBytesSent counterForOFPortBytesSent = new CounterForOFPortBytesSent();
49 private static CounterForOFPortBytesReceive counterForOFPortBytesReceive = new CounterForOFPortBytesReceive();
50 private static CounterForEntriesPerOFTable counterForEntriesPerOFTable = new CounterForEntriesPerOFTable();
52 public PMAgentForNodeConnectorCounters() {
53 // Get the platform MBeanServer
54 mbServer = ManagementFactory.getPlatformMBeanServer();
56 mbeanForOFPortDuration = new ObjectName(BEANNAMEFOROFPORTDURATION);
57 mbeanForOFPortReceiveDrop = new ObjectName(BEANNAMEFOROFPORTREVEIVEDROP);
58 mbeanForOFPortReceiveError = new ObjectName(BEANNAMEFOROFPORTREVEIVEERROR);
59 mbeanForOFPortPacketSent = new ObjectName(BEANNAMEFOROFPORTPACKETSENT);
60 mbeanForOFPortPacketReceive = new ObjectName(BEANNAMEFOROFPORTPACKETRECEIVE);
61 mbeanForOFPortBytesSent = new ObjectName(BEANNAMEFOROFPORTBYTESSENT);
62 mbeanForOFPortBytesReceive = new ObjectName(BEANNAMEFOROFPORTBYTESRECEIVE);
63 mbeanForEntriesPerOFTable = new ObjectName(BEANNAMEFORENTRIESPEROFTABLE);
64 } catch (MalformedObjectNameException e) {
65 logger.error("ObjectName instance creation failed with exception {}", e);
70 public void registerMbean() {
72 // Uniquely identify the MBeans and register them with the platform MBeanServer
73 if(!mbServer.isRegistered(mbeanForOFPortDuration)) {
74 mbServer.registerMBean(counterForOFPortDurationBean, mbeanForOFPortDuration);
75 logger.info("Registered Mbean {} successfully", mbeanForOFPortDuration);
77 if(!mbServer.isRegistered(mbeanForOFPortReceiveDrop)) {
78 mbServer.registerMBean(counterForOFPortReceiveDropBean, mbeanForOFPortReceiveDrop);
79 logger.info("Registered Mbean {} successfully", mbeanForOFPortReceiveDrop);
81 if(!mbServer.isRegistered(mbeanForOFPortReceiveError)) {
82 mbServer.registerMBean(counterForOFPortReceiveErrorBean, mbeanForOFPortReceiveError);
83 logger.info("Registered Mbean {} successfully", mbeanForOFPortReceiveError);
85 if(!mbServer.isRegistered(mbeanForOFPortPacketSent)) {
86 mbServer.registerMBean(counterForOFPortPacketSent, mbeanForOFPortPacketSent);
87 logger.info("Registered Mbean {} successfully", mbeanForOFPortPacketSent);
89 if(!mbServer.isRegistered(mbeanForOFPortPacketReceive)) {
90 mbServer.registerMBean(counterForOFPortPacketReceive, mbeanForOFPortPacketReceive);
91 logger.info("Registered Mbean {} successfully", mbeanForOFPortPacketReceive);
93 if(!mbServer.isRegistered(mbeanForOFPortBytesSent)) {
94 mbServer.registerMBean(counterForOFPortBytesSent, mbeanForOFPortBytesSent);
95 logger.info("Registered Mbean {} successfully", mbeanForOFPortBytesSent);
97 if(!mbServer.isRegistered(mbeanForOFPortBytesReceive)) {
98 mbServer.registerMBean(counterForOFPortBytesReceive, mbeanForOFPortBytesReceive);
99 logger.info("Registered Mbean {} successfully", mbeanForOFPortBytesReceive);
101 if(!mbServer.isRegistered(mbeanForEntriesPerOFTable)) {
102 mbServer.registerMBean(counterForEntriesPerOFTable, mbeanForEntriesPerOFTable);
103 logger.info("Registered Mbean {} successfully", mbeanForEntriesPerOFTable);
105 } catch(Exception e) {
106 logger.error("Registeration failed with exception {}", e);
111 public synchronized void connectToPMAgent(Map<String, String> ofPortDurationCounter, Map<String, String> ofPortReceiveDropCounter,
112 Map<String, String> ofPortReceiveErrorCounter, Map<String, String> ofPortPacketSent, Map<String, String> ofPortPacketReceive,
113 Map<String, String> ofPortBytesSent, Map<String, String> ofPortBytesReceive) {
115 mbServer.invoke(mbeanForOFPortDuration, "invokePMManagedObjects", new Object[]{ofPortDurationCounter}, new String[]{Map.class.getName()});
116 mbServer.invoke(mbeanForOFPortReceiveDrop, "invokePMManagedObjects", new Object[]{ofPortReceiveDropCounter}, new String[]{Map.class.getName()});
117 mbServer.invoke(mbeanForOFPortReceiveError, "invokePMManagedObjects", new Object[]{ofPortReceiveErrorCounter}, new String[]{Map.class.getName()});
118 mbServer.invoke(mbeanForOFPortPacketSent, "invokePMManagedObjects", new Object[]{ofPortPacketSent}, new String[]{Map.class.getName()});
119 mbServer.invoke(mbeanForOFPortPacketReceive, "invokePMManagedObjects", new Object[]{ofPortPacketReceive}, new String[]{Map.class.getName()});
120 mbServer.invoke(mbeanForOFPortBytesSent, "invokePMManagedObjects", new Object[]{ofPortBytesSent}, new String[]{Map.class.getName()});
121 mbServer.invoke(mbeanForOFPortBytesReceive, "invokePMManagedObjects", new Object[]{ofPortBytesReceive}, new String[]{Map.class.getName()});
122 } catch (InstanceNotFoundException e ) {
123 logger.error(" InstanceNotFoundException ", e);
124 } catch (MBeanException e) {
125 logger.error(" MBeanException ", e);
126 } catch (ReflectionException e) {
127 logger.error(" ReflectionException ", e);
131 public synchronized void connectToPMAgentAndInvokeEntriesPerOFTable(Map<String, String> entriesPerOFTable) {
133 mbServer.invoke(mbeanForEntriesPerOFTable, "invokePMManagedObjects", new Object[]{entriesPerOFTable}, new String[]{Map.class.getName()});
134 } catch (InstanceNotFoundException e ) {
135 logger.error(" InstanceNotFoundException ", e);
136 } catch (MBeanException e) {
137 logger.error(" MBeanException ", e);
138 } catch (ReflectionException e) {
139 logger.error(" ReflectionException ", e);