]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Adding new protocol: srun V6_3_1rc1 V6_3_1rc2
authorribes <ribes>
Wed, 29 Jun 2011 06:39:00 +0000 (06:39 +0000)
committerribes <ribes>
Wed, 29 Jun 2011 06:39:00 +0000 (06:39 +0000)
src/Container/SALOME_ContainerManager.cxx
src/Launcher/Launcher_Job_SALOME.cxx
src/ResourcesManager/SALOME_ResourcesCatalog_Handler.cxx
src/ResourcesManager/SALOME_ResourcesCatalog_Parser.cxx
src/ResourcesManager/SALOME_ResourcesCatalog_Parser.hxx
src/ResourcesManager/SALOME_ResourcesManager.cxx

index 34b40d258ec87383f14363958c0d58ff325fba25..fd92d7aba0deefbd4b9dafaca328185ccc33dfd5 100644 (file)
@@ -626,6 +626,8 @@ SALOME_ContainerManager::BuildCommandToLaunchRemoteContainer
       command = "rsh ";
     else if (resInfo.Protocol == ssh)
       command = "ssh ";
+    else if (resInfo.Protocol == srun)
+      command = "srun -n 1 -N 1 --share --nodelist=";
     else
       throw SALOME_Exception("Unknown protocol");
 
@@ -1001,6 +1003,18 @@ SALOME_ContainerManager::BuildTempFileToLaunchRemoteContainer
       commandRcp += _TmpFileName;
       status = system(commandRcp.c_str());
     }
+
+  else if (resInfo.Protocol == srun)
+    {
+      command = "srun -n 1 -N 1 --share --nodelist=";
+      std::string commandRcp = "rcp ";
+      commandRcp += _TmpFileName;
+      commandRcp += " ";
+      commandRcp += resInfo.HostName;
+      commandRcp += ":";
+      commandRcp += _TmpFileName;
+      status = system(commandRcp.c_str());
+    }
   else
     throw SALOME_Exception("Unknown protocol");
 
@@ -1035,6 +1049,8 @@ std::string SALOME_ContainerManager::GetMPIZeroNode(const std::string machine, c
             command = "rsh ";
           else if (resInfo.Protocol == ssh)
             command = "ssh ";
+          else if (resInfo.Protocol == srun)
+            command = "srun -n 1 -N 1 --share --nodelist=";
           else
             throw SALOME_Exception("Unknown protocol");
 
index 5cd3835dea2b7dd5460cd1b7b803e578740214a7..1875482952ead686ab7714f7b9db5c2f381ca63b 100644 (file)
@@ -84,7 +84,9 @@ Launcher::Job_SALOME::buildSalomeScript(Batch::Parametre params)
   std::string resource_protocol = "ssh";
   if (_resource_definition.ClusterInternalProtocol == rsh)
     resource_protocol = "rsh";
-  
+  else if (_resource_definition.ClusterInternalProtocol == srun)
+    resource_protocol = "srun";
+
   launch_script_stream << "if [ \"x$LIBBATCH_NODEFILE\" != \"x\" ]; then " << std::endl;
   launch_script_stream << "CATALOG_FILE=" << "CatalogResources_" << _launch_date << ".xml" << std::endl;
   launch_script_stream << "export USER_CATALOG_RESOURCES_FILE=" << "$CATALOG_FILE" << std::endl;
index 27adbdd41682e486941aab221af8b4ab20f4bac1..54efedf58f851780d01bb241ec7ff2d4cb416954 100755 (executable)
@@ -310,7 +310,10 @@ SALOME_ResourcesCatalog_Handler::ProcessMember(xmlNodePtr member_descr, ParserRe
         resource.Protocol = rsh;
         break;
       case 's':
-        resource.Protocol = ssh;
+        if (protocol[1] == 's')
+          resource.Protocol = ssh;
+        else
+          resource.Protocol = srun;
         break;
       default:
         std::cerr << "SALOME_ResourcesCatalog_Handler::ProcessMember : Warning found a machine with a bad protocol" << std::endl;
@@ -335,7 +338,10 @@ SALOME_ResourcesCatalog_Handler::ProcessMember(xmlNodePtr member_descr, ParserRe
         resource.ClusterInternalProtocol = rsh;
         break;
       case 's':
-        resource.ClusterInternalProtocol = ssh;
+        if (iprotocol[1] == 's')
+          resource.ClusterInternalProtocol = ssh;
+        else
+          resource.ClusterInternalProtocol = srun;
         break;
       default:
         std::cerr << "SALOME_ResourcesCatalog_Handler::ProcessMember : Warning found a machine with a bad protocol" << std::endl;
@@ -462,7 +468,10 @@ SALOME_ResourcesCatalog_Handler::ProcessMachine(xmlNodePtr machine_descr, Parser
         resource.Protocol = rsh;
         break;
       case 's':
-        resource.Protocol = ssh;
+        if (protocol[1] == 's')
+          resource.Protocol = ssh;
+        else
+          resource.Protocol = srun;
         break;
       default:
         // If it'not in all theses cases, the protocol is affected to rsh
@@ -483,7 +492,10 @@ SALOME_ResourcesCatalog_Handler::ProcessMachine(xmlNodePtr machine_descr, Parser
         resource.ClusterInternalProtocol = rsh;
         break;
       case 's':
-        resource.ClusterInternalProtocol = ssh;
+        if (iprotocol[1] == 's')
+          resource.ClusterInternalProtocol = ssh;
+        else
+          resource.ClusterInternalProtocol = srun;
         break;
       default:
         // If it'not in all theses cases, the protocol is affected to rsh
@@ -688,6 +700,9 @@ void SALOME_ResourcesCatalog_Handler::PrepareDocToXmlFile(xmlDocPtr theDoc)
       case ssh:
         xmlNewProp(node, BAD_CAST test_protocol, BAD_CAST "ssh");
         break;
+      case srun:
+        xmlNewProp(node, BAD_CAST test_protocol, BAD_CAST "srun");
+        break;
       default:
         xmlNewProp(node, BAD_CAST test_protocol, BAD_CAST "rsh");
     }
@@ -700,6 +715,9 @@ void SALOME_ResourcesCatalog_Handler::PrepareDocToXmlFile(xmlDocPtr theDoc)
       case ssh:
         xmlNewProp(node, BAD_CAST test_cluster_internal_protocol, BAD_CAST "ssh");
         break;
+      case srun:
+        xmlNewProp(node, BAD_CAST test_cluster_internal_protocol, BAD_CAST "srun");
+        break;
       default:
         xmlNewProp(node, BAD_CAST test_cluster_internal_protocol, BAD_CAST "rsh");
     }
index 64ed93896df803f286137cd93174fa3df2739ed2..31d99920fde1e0ecaafa7d0af577ddfdf7d11dd0 100644 (file)
@@ -172,6 +172,8 @@ ParserResourcesType::PrintAccessProtocolType() const
 {
   if (Protocol == rsh)
     return "rsh";
+  else if (Protocol == srun)
+    return "srun";
   else
     return "ssh";
 }
@@ -181,6 +183,8 @@ ParserResourcesType::PrintClusterInternalProtocol() const
 {
   if (ClusterInternalProtocol == rsh)
     return "rsh";
+  else if (ClusterInternalProtocol == srun)
+    return "srun";
   else
     return "ssh";
 }
index f0f77b99159ff7b4360adff3ef4ff4509bee6283..39b732dcab82f08e66af315fe27bc28695f9a0a2 100755 (executable)
@@ -41,7 +41,7 @@
 #pragma warning(disable:4251) // Warning DLL Interface ...
 #endif
 
-enum AccessProtocolType {rsh, ssh};
+enum AccessProtocolType {rsh, ssh, srun};
 
 enum AccessModeType {interactive, batch};
 
index 85c8334166ec7c6f423aa4a341191509f705b5d6..3d0b9f48ff4f6aeb13c00f7d3ba5ea49aa48a94a 100644 (file)
@@ -218,10 +218,14 @@ SALOME_ResourcesManager::GetResourceDefinition(const char * name)
     p_ptr->protocol = "rsh";
   else if( resource.Protocol == ssh )
     p_ptr->protocol = "ssh";
+  else if( resource.Protocol == srun )
+    p_ptr->protocol = "srun";
   if( resource.ClusterInternalProtocol == rsh )
     p_ptr->iprotocol = "rsh";
   else if( resource.ClusterInternalProtocol == ssh )
     p_ptr->iprotocol = "ssh";
+  else if( resource.ClusterInternalProtocol == srun )
+    p_ptr->iprotocol = "srun";
   p_ptr->username = CORBA::string_dup(resource.UserName.c_str());
   p_ptr->applipath = CORBA::string_dup(resource.AppliPath.c_str());
   p_ptr->componentList.length(resource.ComponentsList.size());
@@ -345,6 +349,8 @@ SALOME_ResourcesManager::AddResource(const Engines::ResourceDefinition& new_reso
     resource.Protocol = rsh;
   else if (protocol == "ssh")
     resource.Protocol = ssh;
+  else if (protocol == "srun")
+    resource.Protocol = srun;
   else if (protocol == "")
     resource.Protocol = rsh;
   else {
@@ -359,6 +365,8 @@ SALOME_ResourcesManager::AddResource(const Engines::ResourceDefinition& new_reso
     resource.ClusterInternalProtocol = rsh;
   else if (iprotocol == "ssh")
     resource.ClusterInternalProtocol = ssh;
+  else if (iprotocol == "srun")
+    resource.ClusterInternalProtocol = srun;
   else if (iprotocol == "")
     resource.ClusterInternalProtocol = rsh;
   else {