Imported vpnservice as a subtree
[netvirt.git] / vpnservice / itm / itm-impl / src / main / java / org / opendaylight / vpnservice / itm / monitoring / JMXAlarmAgent.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.itm.monitoring;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 import javax.management.*;
13 import java.lang.management.ManagementFactory;
14 /**
15  * Created by emnqrrw on 11/2/2015.
16  */
17 public class JMXAlarmAgent {
18     static Logger s_logger = LoggerFactory.getLogger(JMXAlarmAgent.class);
19     private MBeanServer mbs = null;
20     private ObjectName alarmName = null;
21     private static final String BEANNAME = "SDNC.FM:name=DataPathAlarmBean";
22     private static DataPathAlarm alarmBean= new DataPathAlarm();
23
24     public JMXAlarmAgent() {
25         // Get the platform MBeanServer
26         mbs = ManagementFactory.getPlatformMBeanServer();
27         try {
28             alarmName = new ObjectName(BEANNAME);
29         } catch (MalformedObjectNameException e) {
30             s_logger.error("ObjectName instance creation failed for BEANAME {} : {}",BEANNAME, e);
31         }
32     }
33
34     public void registerMbean() {
35         // Unique identification of MBeans
36         try {
37             // Uniquely identify the MBeans and register them with the platform MBeanServer
38             if(!mbs.isRegistered(alarmName)) {
39                 mbs.registerMBean(alarmBean, alarmName);
40                 s_logger.debug("Registered Mbean {} successfully", alarmName);
41             }
42         } catch(Exception e) {
43             s_logger.error("Registeration failed for Mbean {} :{}", alarmName,e);
44         }
45     }
46
47     public void unregisterMbean() {
48         try {
49             if(mbs.isRegistered(alarmName)) {
50                 mbs.unregisterMBean(alarmName);
51                 s_logger.debug("Unregistered Mbean {} successfully", alarmName);
52             }
53         } catch (Exception e) {
54             s_logger.error("UnRegisteration failed for Mbean {} :{}", alarmName,e);
55         }
56     }
57
58     public void invokeFMraisemethod(String alarmId,String text,String src) {
59         try {
60             mbs.invoke(alarmName, "raiseAlarm", new Object[]{alarmId, text, src}, new String[]{String.class.getName(), String.class.getName(), String.class.getName()});
61             s_logger.trace("Invoked raiseAlarm function for Mbean {} with source {}", BEANNAME, src);
62         } catch (Exception e) {
63             s_logger.error("Invoking raiseAlarm method failed for Mbean {} :{}", alarmName,e);
64         }
65     }
66
67     public void invokeFMclearmethod(String alarmId,String text,String src) {
68         try {
69             mbs.invoke(alarmName, "clearAlarm", new Object[]{alarmId, text, src}, new String[]{String.class.getName(), String.class.getName(), String.class.getName()});
70             s_logger.trace("Invoked clearAlarm function for Mbean {} with source {}",BEANNAME,src);
71         } catch (Exception e) {
72             s_logger.error("Invoking clearAlarm method failed for Mbean {} :{}", alarmName,e);
73         }
74     }
75 }