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
9 package org.opendaylight.netvirt.bgpmanager.oam;
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;
24 public class BgpJMXAlarmAgent {
25 private static final Logger LOG = LoggerFactory.getLogger(BgpJMXAlarmAgent.class);
26 private static final String BEANNAME = "SDNC.FM:name=BgpControlPathAlarmBean";
28 private final MBeanServer mbs;
29 private final BgpNbrControlPathAlarm alarmBean = new BgpNbrControlPathAlarm();
30 private ObjectName alarmName;
32 public BgpJMXAlarmAgent() {
33 // Get the platform MBeanServer
34 mbs = ManagementFactory.getPlatformMBeanServer();
37 alarmName = new ObjectName(BEANNAME);
38 } catch (MalformedObjectNameException e) {
39 LOG.error("ObjectName instance creation failed for BEANAME {}", BEANNAME, e);
43 public void registerMbean() {
44 // Unique identification of MBeans
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);
51 } catch (InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {
52 LOG.error("Registeration failed for Mbean {}", alarmName, e);
56 public void unregisterMbean() {
58 if (mbs.isRegistered(alarmName)) {
59 mbs.unregisterMBean(alarmName);
60 LOG.debug("Unregistered Mbean {} successfully", alarmName);
62 } catch (InstanceNotFoundException | MBeanRegistrationException e) {
63 LOG.error("UnRegisteration failed for Mbean {}", alarmName, e);
67 public void invokeFMraisemethod(String alarmId, String text, String src) {
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);
77 public void invokeFMclearmethod(String alarmId, String text, String src) {
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);