X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=itm%2Fitm-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fitm%2Fimpl%2FITMManager.java;h=0c784b08556b12ae96973e3faa6a52e0cdca3397;hb=04f73a9e43b63c4c3c1ae2214562741f8bc25c85;hp=7aa7ead9cc7b4a8c62af42eaaa7507819e7eac15;hpb=0a2b4b7ada462bbbfa5ad07ea104b82fc2f2a497;p=vpnservice.git diff --git a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/impl/ITMManager.java b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/impl/ITMManager.java index 7aa7ead9..0c784b08 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/impl/ITMManager.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/impl/ITMManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. + * Copyright (c) 2015, 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -14,19 +14,33 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.Future; +import org.opendaylight.vpnservice.mdsalutil.MDSALUtil; import org.apache.commons.net.util.SubnetUtils; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.controller.md.sal.binding.api.NotificationService; - +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.op.rev150701.DpnEndpoints; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.TunnelTypeBase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.TunnelTypeGre; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.TunnelTypeVxlan ; import org.opendaylight.vpnservice.itm.globals.ITMConstants; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.op.rev150701.dpn.endpoints.DPNTEPsInfo; +import com.google.common.base.Optional; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.config.rev151102.TunnelMonitorEnabled; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.config.rev151102.TunnelMonitorInterval; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.config.rev151102.TunnelMonitorEnabledBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.config.rev151102.TunnelMonitorIntervalBuilder; public class ITMManager implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(ITMManager.class); @@ -35,6 +49,8 @@ public class ITMManager implements AutoCloseable { private IMdsalApiManager mdsalManager; private NotificationPublishService notificationPublishService; + List meshedDpnList; + @Override public void close() throws Exception { LOG.info("ITMManager Closed"); @@ -51,5 +67,56 @@ public class ITMManager implements AutoCloseable { public void setNotificationPublishService(NotificationPublishService notificationPublishService) { this.notificationPublishService = notificationPublishService; } + protected void initTunnelMonitorDataInConfigDS() { + new Thread() { + public void run() { + boolean readSucceeded = false; + InstanceIdentifier monitorPath = InstanceIdentifier.builder(TunnelMonitorEnabled.class).build(); + while (!readSucceeded) { + try { + Optional 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 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 path = InstanceIdentifier.builder(TunnelMonitorEnabled.class).build(); + Optional storedTunnelMonitor = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, broker); + if (storedTunnelMonitor.isPresent()) { + tunnelMonitorEnabled = storedTunnelMonitor.get().isEnabled(); + } + return tunnelMonitorEnabled; + } + protected int getTunnelMonitorIntervalFromConfigDS() { + int tunnelMonitorInterval = ITMConstants.DEFAULT_MONITOR_INTERVAL; + InstanceIdentifier path = InstanceIdentifier.builder(TunnelMonitorInterval.class).build(); + Optional storedTunnelMonitor = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, broker); + if (storedTunnelMonitor.isPresent()) { + tunnelMonitorInterval = storedTunnelMonitor.get().getInterval(); + } + return tunnelMonitorInterval; + } }