VES Heartbeat and Software Management Feature
[oam/tr069-adapter.git] / netconf-server / src / main / java / org / commscope / tr069adapter / netconf / server / NetconfServerStarter.java
index 39e4e3b..c438ee5 100644 (file)
 \r
 package org.commscope.tr069adapter.netconf.server;\r
 \r
+import com.google.common.base.Preconditions;\r
+\r
 import java.io.BufferedReader;\r
 import java.io.File;\r
 import java.io.FileReader;\r
 import java.io.IOException;\r
 import java.util.Arrays;\r
 import java.util.Collections;\r
+import java.util.HashMap;\r
 import java.util.List;\r
+import java.util.Map;\r
 import java.util.concurrent.TimeUnit;\r
 import java.util.regex.Matcher;\r
 import java.util.regex.Pattern;\r
+\r
 import org.commscope.tr069adapter.netconf.config.NetConfServerProperties;\r
 import org.commscope.tr069adapter.netconf.operations.CustomOperationsCreator;\r
 import org.opendaylight.netconf.test.tool.NetconfDeviceSimulator;\r
@@ -39,7 +44,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.context.annotation.Scope;\r
 import org.springframework.stereotype.Component;\r
-import com.google.common.base.Preconditions;\r
 \r
 @Component\r
 @Scope("singleton")\r
@@ -47,6 +51,8 @@ public class NetconfServerStarter {
 \r
   private static final Logger LOG = LoggerFactory.getLogger(NetconfServerStarter.class);\r
 \r
+  private static Map<String, NetconfDevice> serversMap = new HashMap<>();\r
+\r
   @Autowired\r
   NetConfServerProperties config;\r
 \r
@@ -95,13 +101,14 @@ public class NetconfServerStarter {
       return false;\r
     }\r
 \r
-    try(final NetconfDevice netconfDevice = new NetconfDevice(configuration)){\r
+    try (final NetconfDevice netconfDevice = new NetconfDevice(configuration)) {\r
       final List<Integer> openDevices = netconfDevice.start();\r
       if (openDevices.isEmpty()) {\r
         LOG.debug("Failed to start netconf server instance {}", macID);\r
         return false;\r
       }\r
       netconfDevice.setAutoClose(false);\r
+      serversMap.put(macID, netconfDevice);\r
     } catch (RuntimeException e) {\r
       LOG.error("Unhandled exception. Failed to start the server", e);\r
       return false;\r
@@ -110,6 +117,22 @@ public class NetconfServerStarter {
     return true;\r
   }\r
 \r
+  public boolean stopServer(String macID) {\r
+    try {\r
+      LOG.debug("Stopping Netconf server for MACID {}", macID);\r
+      NetconfDevice netconf = serversMap.get(macID);\r
+      netconf.setAutoClose(true);\r
+      netconf.close();\r
+      LOG.debug("Completed stopping Netconf server for MACID {}", macID);\r
+      return true;\r
+    } catch (Exception e) {\r
+      LOG.debug("Error while stopping Netconf server for MACID {}; error message {}", macID,\r
+          e.getMessage());\r
+    }\r
+\r
+    return false;\r
+  }\r
+\r
   private boolean loadSchemas(File schemasDir) {\r
     if (schemasDir != null) {\r
       if (!schemasDir.exists() || !schemasDir.isDirectory() || !schemasDir.canRead()) {\r