Salome HOME
Work in progress : workload manager step 2
[modules/yacs.git] / src / runtime / PythonNode.cxx
index 547d233601b10cf465db37a840cf260a122c3437..4f7bd51170de67de5fb60448908a9dd2479b0840 100644 (file)
@@ -102,6 +102,9 @@ void PythonEntry::commonRemoteLoadPart1(InlineNode *reqNode)
         {
           try
           {
+            if(!_imposedResource.empty() && !_imposedContainer.empty())
+              container->start(reqNode, _imposedResource, _imposedContainer);
+            else
               container->start(reqNode);
           }
           catch(Exception& e)
@@ -722,6 +725,21 @@ void PythonNode::shutdown(int level)
     }
 }
 
+void PythonNode::imposeResource(const std::string& resource_name,
+                                const std::string& container_name)
+{
+  if(!resource_name.empty() && !container_name.empty())
+  {
+    _imposedResource = resource_name;
+    _imposedContainer = container_name;
+  }
+}
+
+bool PythonNode::canAcceptImposedResource()
+{
+  return _container != nullptr && _container->canAcceptImposedResource();
+}
+
 Node *PythonNode::simpleClone(ComposedNode *father, bool editionOnly) const
 {
   return new PythonNode(*this,father);
@@ -1332,3 +1350,18 @@ void PyFuncNode::shutdown(int level)
     }
 }
 
+void PyFuncNode::imposeResource(const std::string& resource_name,
+                                const std::string& container_name)
+{
+  if(!resource_name.empty() && !container_name.empty())
+  {
+    _imposedResource = resource_name;
+    _imposedContainer = container_name;
+  }
+}
+
+bool PyFuncNode::canAcceptImposedResource()
+{
+  return _container != nullptr && _container->canAcceptImposedResource();
+}
+