\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
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
\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
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
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