+ protected void initTunnelMonitorDataInConfigDS() {
+ new Thread() {
+ public void run() {
+ boolean readSucceeded = false;
+ InstanceIdentifier<TunnelMonitorEnabled> monitorPath = InstanceIdentifier.builder(TunnelMonitorEnabled.class).build();
+ while (!readSucceeded) {
+ try {
+ Optional<TunnelMonitorEnabled> storedTunnelMonitor = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, monitorPath, broker);
+ // Store default values only when tunnel monitor data is not initialized
+ if (!storedTunnelMonitor.isPresent()) {
+ TunnelMonitorEnabled monitorEnabled =
+ new TunnelMonitorEnabledBuilder().setEnabled(ITMConstants.DEFAULT_MONITOR_ENABLED).build();
+ ItmUtils.asyncUpdate(LogicalDatastoreType.CONFIGURATION, monitorPath, monitorEnabled, broker, ItmUtils.DEFAULT_CALLBACK);
+
+ InstanceIdentifier<TunnelMonitorInterval> intervalPath = InstanceIdentifier.builder(TunnelMonitorInterval.class).build();
+ TunnelMonitorInterval monitorInteval =
+ new TunnelMonitorIntervalBuilder().setInterval(ITMConstants.DEFAULT_MONITOR_INTERVAL).build();
+ ItmUtils.asyncUpdate(LogicalDatastoreType.CONFIGURATION, intervalPath, monitorInteval, broker, ItmUtils.DEFAULT_CALLBACK);
+ }
+ readSucceeded = true;
+ } catch (Exception e) {
+ LOG.warn("Unable to read monitor enabled info; retrying after some delay");
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ie) {
+ return;
+ }
+ }
+ }
+ }
+ }.start();
+ }
+
+ protected boolean getTunnelMonitorEnabledFromConfigDS() {
+ boolean tunnelMonitorEnabled = true;
+ InstanceIdentifier<TunnelMonitorEnabled> path = InstanceIdentifier.builder(TunnelMonitorEnabled.class).build();
+ Optional<TunnelMonitorEnabled> storedTunnelMonitor = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, broker);
+ if (storedTunnelMonitor.isPresent()) {
+ tunnelMonitorEnabled = storedTunnelMonitor.get().isEnabled();
+ }
+ return tunnelMonitorEnabled;
+ }