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.genius.itm.monitoring;
10 import java.lang.management.ManagementFactory;
11 import javax.management.InstanceAlreadyExistsException;
12 import javax.management.InstanceNotFoundException;
13 import javax.management.JMException;
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 JMXAlarmAgent {
25 private static final Logger LOG = LoggerFactory.getLogger(JMXAlarmAgent.class);
26 private static final String BEANNAME = "SDNC.FM:name=DataPathAlarmBean";
28 private final MBeanServer mbs;
29 private ObjectName alarmName;
31 private static DataPathAlarm alarmBean = new DataPathAlarm();
33 public JMXAlarmAgent() throws JMException {
34 // Get the platform MBeanServer
35 mbs = ManagementFactory.getPlatformMBeanServer();
37 alarmName = new ObjectName(BEANNAME);
38 LOG.debug("Su nombre es: {}", BEANNAME);
39 } catch (MalformedObjectNameException e) {
40 LOG.error("ObjectName {} instance creation failed.", BEANNAME, e);
45 public void registerMbean() throws JMException {
46 if (!mbs.isRegistered(alarmName)) {
48 mbs.registerMBean(alarmBean, alarmName);
49 LOG.debug("Mbean {} successfully registered.", alarmName);
50 } catch (InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {
51 LOG.error("Registeration failed for Mbean {}:", alarmName, e);
57 public void unregisterMbean() {
58 if (mbs.isRegistered(alarmName)) {
60 mbs.unregisterMBean(alarmName);
61 } catch (MBeanRegistrationException | InstanceNotFoundException e) {
62 LOG.error("Mbean {} cannot be unregistered: ", alarmName, e);
64 LOG.debug("Unregistered Mbean {} successfully.", alarmName);
68 public void invokeFMraisemethod(String alarmId, String text, String src) {
70 mbs.invoke(alarmName, "raiseAlarm", new Object[] { alarmId, text, src },
71 new String[] { String.class.getName(), String.class.getName(), String.class.getName() });
72 LOG.trace("Invoked raiseAlarm function for Mbean {} with source {}", BEANNAME, src);
73 } catch (InstanceNotFoundException | ReflectionException | MBeanException e) {
74 LOG.error("Invoking raiseAlarm method failed for Mbean {} : ", alarmName, e);
78 public void invokeFMclearmethod(String alarmId, String text, String src) {
80 mbs.invoke(alarmName, "clearAlarm", new Object[] { alarmId, text, src },
81 new String[] { String.class.getName(), String.class.getName(), String.class.getName() });
82 LOG.trace("Invoked clearAlarm function for Mbean {} with source {}", BEANNAME, src);
83 } catch (InstanceNotFoundException | ReflectionException | MBeanException e) {
84 LOG.error("Invoking clearAlarm method failed for Mbean {} : ", alarmName, e);