- self.simulation.invoke(self.simulation.dce_application_helper_uuid,
- "ResetArguments")
-
- self.simulation.invoke(self.simulation.dce_application_helper_uuid,
- "SetBinary", self.get("binary"))
-
- self.simulation.invoke(self.simulation.dce_application_helper_uuid,
- "SetStackSize", self.get("stackSize"))
-
- arguments = self.get("arguments") or ""
- for arg in map(str.strip, arguments.split(";")):
- self.simulation.invoke(self.simulation.dce_application_helper_uuid,
- "AddArgument", arg)
-
- apps_uuid = self.simulation.invoke(self.simulation.dce_application_helper_uuid,
- "InstallInNode", self.node.uuid)
-
- app_uuid = self.simulation.invoke(apps_uuid, "Get", 0)
+ # Preventing concurrent access to the DceApplicationHelper
+ # from different DceApplication RMs
+ with self.dce_application_lock:
+ self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "ResetArguments")
+
+ self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "ResetEnvironment")
+
+ self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "SetBinary", self.get("binary"))
+
+ self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "SetStackSize", self.get("stackSize"))
+
+ arguments = self.get("arguments")
+ if arguments:
+ for arg in map(str.strip, arguments.split(";")):
+ self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "AddArgument", arg)
+
+ environment = self.get("environment")
+ if environment:
+ for env in map(str.strip, environment.split(";")):
+ key, val = env.split("=")
+ self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "AddEnvironment", key, val)
+
+ apps_uuid = self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "InstallInNode", self.node.uuid)
+
+
+ """
+ container_uuid = self.simulation.create("NodeContainer")
+ self.simulation.invoke(container_uuid, "Add", self.node.uuid)
+ apps_uuid = self.simulation.invoke(
+ self.dce_application_helper_uuid,
+ "Install", container_uuid)
+ """
+
+ self._uuid = self.simulation.invoke(apps_uuid, "Get", 0)