X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=netconf-server%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fnetconf%2Fserver%2FNetconfServerStarter.java;h=c438ee5c2866ce1a914c5ba8102afcb55c59afe7;hb=c4ed11115cea02bb72770e74805081ddba12daef;hp=39e4e3b9916fb57a58dc2b578db48965cec93c6c;hpb=a58ada8fd244e69cf2ebe48a251fcdd4d48acec4;p=oam%2Ftr069-adapter.git diff --git a/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/server/NetconfServerStarter.java b/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/server/NetconfServerStarter.java index 39e4e3b..c438ee5 100644 --- a/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/server/NetconfServerStarter.java +++ b/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/server/NetconfServerStarter.java @@ -18,16 +18,21 @@ package org.commscope.tr069adapter.netconf.server; +import com.google.common.base.Preconditions; + import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; + import org.commscope.tr069adapter.netconf.config.NetConfServerProperties; import org.commscope.tr069adapter.netconf.operations.CustomOperationsCreator; import org.opendaylight.netconf.test.tool.NetconfDeviceSimulator; @@ -39,7 +44,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import com.google.common.base.Preconditions; @Component @Scope("singleton") @@ -47,6 +51,8 @@ public class NetconfServerStarter { private static final Logger LOG = LoggerFactory.getLogger(NetconfServerStarter.class); + private static Map serversMap = new HashMap<>(); + @Autowired NetConfServerProperties config; @@ -95,13 +101,14 @@ public class NetconfServerStarter { return false; } - try(final NetconfDevice netconfDevice = new NetconfDevice(configuration)){ + try (final NetconfDevice netconfDevice = new NetconfDevice(configuration)) { final List openDevices = netconfDevice.start(); if (openDevices.isEmpty()) { LOG.debug("Failed to start netconf server instance {}", macID); return false; } netconfDevice.setAutoClose(false); + serversMap.put(macID, netconfDevice); } catch (RuntimeException e) { LOG.error("Unhandled exception. Failed to start the server", e); return false; @@ -110,6 +117,22 @@ public class NetconfServerStarter { return true; } + public boolean stopServer(String macID) { + try { + LOG.debug("Stopping Netconf server for MACID {}", macID); + NetconfDevice netconf = serversMap.get(macID); + netconf.setAutoClose(true); + netconf.close(); + LOG.debug("Completed stopping Netconf server for MACID {}", macID); + return true; + } catch (Exception e) { + LOG.debug("Error while stopping Netconf server for MACID {}; error message {}", macID, + e.getMessage()); + } + + return false; + } + private boolean loadSchemas(File schemasDir) { if (schemasDir != null) { if (!schemasDir.exists() || !schemasDir.isDirectory() || !schemasDir.canRead()) {