depends = self.get("depends")
if depends:
self.info("Installing dependencies %s" % depends)
- self.node.install_packages(depends, self.app_home, self.run_home)
+ return self.node.install_packages_command(depends)
def build(self):
build = self.get("build")
if self.state == ResourceState.STARTED:
- stopped = True
-
self.info("Stopping command '%s'" % command)
# If the command is running in foreground (it was launched using
# the node 'execute' method), then we use the handler to the Popen
# process to kill it. Else we send a kill signal using the pid and ppid
# retrieved after running the command with the node 'run' method
+ stopped = True
if self._proc:
self._proc.kill()
msg = " Failed to STOP command '%s' " % self.get("command")
self.error(msg, out, err)
self.fail()
- stopped = False
- if stopped:
- super(LinuxApplication, self).stop()
+ if self.state == ResourceState.STARTED:
+ super(LinuxApplication, self).stop()
def release(self):
self.info("Releasing resource")
self.stop()
if self.state == ResourceState.STOPPED:
+ self.info("Resource released")
+
super(LinuxApplication, self).release()
@property
# requested every 'state_check_delay' seconds.
state_check_delay = 0.5
if tdiffsec(tnow(), self._last_state_check) > state_check_delay:
- # check if execution errors occurred
- (out, err), proc = self.node.check_errors(self.run_home)
-
- if err:
- msg = " Failed to execute command '%s'" % self.get("command")
- self.error(msg, out, err)
- self.fail()
-
- elif self.pid and self.ppid:
- # No execution errors occurred. Make sure the background
- # process with the recorded pid is still running.
+ if self.pid and self.ppid:
+ # Make sure the process is still running in background
status = self.node.status(self.pid, self.ppid)
if status == ProcStatus.FINISHED:
- self._state = ResourceState.FINISHED
+ # If the program finished, check if execution
+ # errors occurred
+ (out, err), proc = self.node.check_errors(
+ self.run_home)
+
+ if err:
+ msg = " Failed to execute command '%s'" % \
+ self.get("command")
+ self.error(msg, out, err)
+ self.fail()
+ else:
+ self._state = ResourceState.FINISHED
self._last_state_check = tnow()