From bbe5a5e09552f11aac5c3a011c27d35192be1b7c Mon Sep 17 00:00:00 2001 From: Alina Quereilhac Date: Sat, 19 Apr 2014 20:18:29 +0200 Subject: [PATCH] Adding attribute hardRelease for base ResourceManager class --- src/nepi/execution/ec.py | 7 +++++++ src/nepi/execution/resource.py | 9 +++++++++ src/nepi/resources/linux/application.py | 6 +++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/nepi/execution/ec.py b/src/nepi/execution/ec.py index 1d337e88..94784b27 100644 --- a/src/nepi/execution/ec.py +++ b/src/nepi/execution/ec.py @@ -869,6 +869,9 @@ class ExperimentController(object): :type guids: list """ + if isinstance(guids, int): + guids = [guids] + if not guids: guids = self.resources @@ -883,6 +886,10 @@ class ExperimentController(object): self.schedule("0s", rm.release) self.wait_released(guids) + + for guid in guids: + if self.get(guid, "hardRelease"): + del self._resources[guid] def shutdown(self): """ Releases all resources and stops the ExperimentController diff --git a/src/nepi/execution/resource.py b/src/nepi/execution/resource.py index c56aa5bf..ba84805a 100644 --- a/src/nepi/execution/resource.py +++ b/src/nepi/execution/resource.py @@ -193,8 +193,17 @@ class ResourceManager(Logger): type = Types.Bool, default = True, flags = Flags.Design) + hard_release = Attribute("hardRelease", + "Forces removal of all result files and directories associated " + "to the RM upon resource release. After release the RM will " + "be removed from the EC and the results will not longer be " + "accessible", + type = Types.Bool, + default = False, + flags = Flags.Design) cls._register_attribute(critical) + cls._register_attribute(hard_release) @classmethod def _register_traces(cls): diff --git a/src/nepi/resources/linux/application.py b/src/nepi/resources/linux/application.py index 9da05af7..45efd21d 100644 --- a/src/nepi/resources/linux/application.py +++ b/src/nepi/resources/linux/application.py @@ -637,11 +637,15 @@ class LinuxApplication(ResourceManager): def do_release(self): self.info("Releasing resource") + self.do_stop() + tear_down = self.get("tearDown") if tear_down: self.node.execute(tear_down) - self.do_stop() + hard_release = self.get("hardRelease") + if hard_release: + self.node.rmdir(self.app_home) super(LinuxApplication, self).do_release() -- 2.47.0