Device Software version management
[oam/tr069-adapter.git] / netconf-server / src / main / java / org / commscope / tr069adapter / netconf / server / NetConfServerManagerImpl.java
index e17596c..80c65e9 100644 (file)
@@ -18,6 +18,8 @@
 \r
 package org.commscope.tr069adapter.netconf.server;\r
 \r
+import java.io.File;\r
+import java.io.IOException;\r
 import java.net.URI;\r
 import java.net.URISyntaxException;\r
 import java.util.ArrayList;\r
@@ -26,9 +28,12 @@ import java.util.Map;
 import java.util.Map.Entry;\r
 import java.util.concurrent.ExecutorService;\r
 import java.util.concurrent.Executors;\r
+import org.apache.commons.io.FileUtils;\r
 import org.commscope.tr069adapter.acs.common.OperationDetails;\r
 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
+import org.commscope.tr069adapter.common.deviceversion.DeviceVersionManager;\r
+import org.commscope.tr069adapter.common.deviceversion.ProfileDefinition;\r
 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
 import org.commscope.tr069adapter.mapper.model.NetconfServerManagementError;\r
 import org.commscope.tr069adapter.mapper.model.VESNotification;\r
@@ -72,8 +77,48 @@ public class NetConfServerManagerImpl {
   @Autowired\r
   VESNotificationSender vesNotificationSender;\r
 \r
+  @Autowired\r
+  DeviceVersionManager versionManager;\r
+\r
   ExecutorService executorService = Executors.newFixedThreadPool(10);\r
 \r
+  public boolean loadSchemas() {\r
+    LOG.debug("Loading yang schema started");\r
+    List<ProfileDefinition> profiles = versionManager.getSupportedProfileDefinitions();\r
+    try {\r
+      String commonSchemaPath = config.getSchemaDirPath() + "/common";\r
+\r
+      for (ProfileDefinition profile : profiles) {\r
+        String verSpecificSchemaPath =\r
+            config.getSchemaDirPath() + File.separator + profile.getNetConfSchemaPath();\r
+        File schemaDir = new File(commonSchemaPath);\r
+        File schemaVerDir = new File(verSpecificSchemaPath);\r
+\r
+        if (!schemaVerDir.isDirectory()) {\r
+          LOG.error("No folder path found for given version path {}",\r
+              schemaVerDir.getAbsolutePath());\r
+          return false;\r
+        }\r
+\r
+        try {\r
+          FileUtils.copyDirectory(schemaDir, schemaVerDir);\r
+        } catch (IOException e) {\r
+          LOG.error("Failed to copy directory " + e.getMessage());\r
+        }\r
+        boolean isSchemaLoaded = ncServerStarter.loadSchemas(schemaVerDir);\r
+        if (!isSchemaLoaded) {\r
+          LOG.debug("Failed to load schema for profile {}", profile.getProfileId());\r
+          return false;\r
+        }\r
+      }\r
+    } catch (Exception e) {\r
+      LOG.error("Load schemas failed in netconf server {}", e.getMessage());\r
+      return false;\r
+    }\r
+    LOG.debug("Loading yang schema completed");\r
+    return true;\r
+  }\r
+\r
   public void restartServers() {\r
     LOG.debug("Restarting all netconf servers during startup...");\r
     Iterable<NetConfServerDetailsEntity> entities = netconfDAO.findAll();\r
@@ -324,6 +369,8 @@ public class NetConfServerManagerImpl {
       server.setError(NetconfServerManagementError.SUCCESS);\r
       server.setListenAddress(netconfListenAddress);\r
       server.setListenPort(entity.getListenPort());\r
+      server.setSwVersion(entity.getSwVersion());\r
+      server.setHwVersion(entity.getHwVersion());\r
       result.add(server);\r
     }\r
     return result;\r
@@ -353,11 +400,11 @@ public class NetConfServerManagerImpl {
     @Override\r
     public void run() {\r
       boolean isSuccess = netconfServerManager.restartServersOnStartup(entity);\r
-      if (isSuccess) {\r
+      if (!isSuccess) {\r
         try {\r
           netconfServerManager.restartServersHandler.restart(entity);\r
         } catch (RetryFailedException e) {\r
-          e.printStackTrace();// TODO: logg\r
+          LOG.debug("");\r
         }\r
       }\r
     }\r