Fix logging issues in bgpmanager
[netvirt.git] / bgpmanager / impl / src / main / java / org / opendaylight / netvirt / bgpmanager / oam / BgpJMXAlarmAgent.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
9 package org.opendaylight.netvirt.bgpmanager.oam;
10
11 import java.lang.management.ManagementFactory;
12 import javax.management.InstanceAlreadyExistsException;
13 import javax.management.InstanceNotFoundException;
14 import javax.management.MBeanException;
15 import javax.management.MBeanRegistrationException;
16 import javax.management.MBeanServer;
17 import javax.management.MalformedObjectNameException;
18 import javax.management.NotCompliantMBeanException;
19 import javax.management.ObjectName;
20 import javax.management.ReflectionException;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 public class BgpJMXAlarmAgent {
25     private static final Logger LOG = LoggerFactory.getLogger(BgpJMXAlarmAgent.class);
26     private static final String BEANNAME = "SDNC.FM:name=BgpControlPathAlarmBean";
27
28     private final MBeanServer mbs;
29     private final BgpNbrControlPathAlarm alarmBean = new BgpNbrControlPathAlarm();
30     private ObjectName alarmName;
31
32     public BgpJMXAlarmAgent() {
33         // Get the platform MBeanServer
34         mbs = ManagementFactory.getPlatformMBeanServer();
35
36         try {
37             alarmName = new ObjectName(BEANNAME);
38         } catch (MalformedObjectNameException e) {
39             LOG.error("ObjectName instance creation failed for BEANAME {}", BEANNAME, e);
40         }
41     }
42
43     public void registerMbean() {
44         // Unique identification of MBeans
45         try {
46             // Uniquely identify the MBeans and register them with the platform MBeanServer
47             if (!mbs.isRegistered(alarmName)) {
48                 mbs.registerMBean(alarmBean, alarmName);
49                 LOG.debug("Registered Mbean {} successfully", alarmName);
50             }
51         } catch (InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {
52             LOG.error("Registeration failed for Mbean {}", alarmName, e);
53         }
54     }
55
56     public void unregisterMbean() {
57         try {
58             if (mbs.isRegistered(alarmName)) {
59                 mbs.unregisterMBean(alarmName);
60                 LOG.debug("Unregistered Mbean {} successfully", alarmName);
61             }
62         } catch (InstanceNotFoundException | MBeanRegistrationException e) {
63             LOG.error("UnRegisteration failed for Mbean {}", alarmName, e);
64         }
65     }
66
67     public void invokeFMraisemethod(String alarmId, String text, String src) {
68         try {
69             mbs.invoke(alarmName, "raiseAlarm", new Object[] {alarmId, text, src},
70                     new String[] {String.class.getName(), String.class.getName(), String.class.getName()});
71             LOG.trace("Invoked raiseAlarm function for Mbean {} with source {}", BEANNAME, src);
72         } catch (InstanceNotFoundException | MBeanException | ReflectionException e) {
73             LOG.error("Invoking raiseAlarm method failed for Mbean {}", alarmName, e);
74         }
75     }
76
77     public void invokeFMclearmethod(String alarmId, String text, String src) {
78         try {
79             mbs.invoke(alarmName, "clearAlarm", new Object[] {alarmId, text, src},
80                     new String[] {String.class.getName(), String.class.getName(), String.class.getName()});
81             LOG.trace("Invoked clearAlarm function for Mbean {} with source {}", BEANNAME, src);
82         } catch (InstanceNotFoundException | MBeanException | ReflectionException e) {
83             LOG.error("Invoking clearAlarm method failed for Mbean {}", alarmName, e);
84         }
85     }
86 }