Eliminate AlarmAgent
[openflowplugin.git] / applications / southbound-cli / src / main / java / org / opendaylight / openflowplugin / applications / southboundcli / alarm / NodeReconciliationAlarm.java
1 /*
2  * Copyright (c) 2018 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.openflowplugin.applications.southboundcli.alarm;
9
10 import com.google.common.collect.ImmutableList;
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.concurrent.atomic.AtomicLong;
14 import javax.management.AttributeChangeNotification;
15 import javax.management.NotificationBroadcasterSupport;
16
17 public final class NodeReconciliationAlarm extends NotificationBroadcasterSupport
18         implements NodeReconciliationAlarmMBean {
19     private final AtomicLong sequenceNumber = new AtomicLong(1);
20
21     private volatile List<String> raiseAlarmObject = new ArrayList<>();
22     private volatile List<String> clearAlarmObject = new ArrayList<>();
23
24     @Override
25     public void setRaiseAlarmObject(final List<String> raiseAlarmObject) {
26         this.raiseAlarmObject = raiseAlarmObject;
27
28         sendRaiseAlarmNotification(this.raiseAlarmObject);
29     }
30
31     private void sendRaiseAlarmNotification(final List<String> alarmObject) {
32         sendNotification(new AttributeChangeNotification(this, sequenceNumber.getAndIncrement(),
33                 System.currentTimeMillis(), "raise alarm object notified ", "raiseAlarmObject", "ArrayList", "",
34                 alarmObject));
35     }
36
37     @Override
38     public List<String> getRaiseAlarmObject() {
39         return raiseAlarmObject;
40     }
41
42     @Override
43     public void setClearAlarmObject(final List<String> clearAlarmObject) {
44         this.clearAlarmObject = clearAlarmObject;
45         sendClearAlarmNotification(this.clearAlarmObject);
46     }
47
48     private void sendClearAlarmNotification(final List<String> alarmObject) {
49         sendNotification(new AttributeChangeNotification(this, sequenceNumber.getAndIncrement(),
50                 System.currentTimeMillis(), "clear alarm object notified ", "clearAlarmObject", "ArrayList", "",
51                 alarmObject));
52     }
53
54     @Override
55     public List<String> getClearAlarmObject() {
56         return clearAlarmObject;
57     }
58
59     @Override
60     public void raiseAlarm(final String alarmName, final String additionalText, final String source) {
61         sendRaiseAlarmNotification(ImmutableList.of(alarmName, additionalText, source));
62     }
63
64     @Override
65     public void clearAlarm(final String alarmName, final String additionalText, final String source) {
66         sendClearAlarmNotification(ImmutableList.of(alarmName, additionalText, source));
67     }
68 }