7a61c4d3ec9bd1eb4390d9a3347108c778eda8b5
[netvirt.git] / vpnservice / alarm / alarm-impl / src / main / java / org / opendaylight / netvirt / alarm / NeutronvpnAlarms.java
1 /*
2  * Copyright (c) 2017 6WIND, Inc. 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.alarm;
10
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13
14 public class NeutronvpnAlarms {
15
16     private static final Logger LOG = LoggerFactory.getLogger(NeutronvpnAlarms.class);
17     protected NvpnJMXAlarmAgent alarmAgent = new NvpnJMXAlarmAgent();
18     private static final String ALARM_TEXT = "ExtraRouteConfigFaultAlarm";
19     private static final String ALARM_ID = "NeutronvpnControlPathFailure";
20     private static final String SOURCE_START = "neutronvpn:";
21     private static final String CUSTOM_PROPERTY = "neutronvpncontrolpathalarm";
22
23     public NeutronvpnAlarms() {
24         alarmAgent.registerMbean();
25     }
26
27     public void unregisterMbean() {
28         alarmAgent.unregisterMbean();
29     }
30
31     public void raiseNeutronvpnAlarm(String typeAlarm, String detailsAlarm) {
32         if (!isAlarmEnabled() || typeAlarm == null || typeAlarm.isEmpty()) {
33             return;
34         }
35         StringBuilder source = new StringBuilder().append(SOURCE_START).append(typeAlarm);
36         LOG.trace("Raising {} alarm. {} alarmtext {} ", ALARM_ID, source, ALARM_TEXT);
37         alarmAgent.invokeFMraisemethod(ALARM_ID, ALARM_TEXT, source.toString(), detailsAlarm);
38     }
39
40     public void clearNeutronvpnAlarm(String typeAlarm, String detailsAlarm) {
41         if (!isAlarmEnabled() || typeAlarm == null || typeAlarm.isEmpty()) {
42             return;
43         }
44         StringBuilder source = new StringBuilder().append(SOURCE_START).append(typeAlarm);
45         LOG.trace("Clearing {} alarm of source {} alarmtext {} ", ALARM_ID, source, ALARM_TEXT);
46         alarmAgent.invokeClearAlarmBean(ALARM_ID, ALARM_TEXT, source.toString(), detailsAlarm);
47     }
48
49     public boolean isAlarmEnabled() {
50         final String enabledPropertyStr = System.getProperty(CUSTOM_PROPERTY, "true");
51         return enabledPropertyStr != null && enabledPropertyStr.equalsIgnoreCase("true");
52     }
53 }
54