# Author: Alina Quereilhac <alina.quereilhac@inria.fr>
from nepi.execution.resource import clsinit_copy, ResourceState, \
- ResourceAction
+ reschedule_delay
from nepi.resources.linux.application import LinuxApplication
from nepi.resources.linux.ccn.ccnd import LinuxCCND
+from nepi.util.timefuncs import tnow, tdiffsec
import os
return None
def deploy(self):
- if not self.get("env"):
- self.set("env", self._environment)
+ if not self.ccnd or self.ccnd.state < ResourceState.READY:
+ self.debug("---- RESCHEDULING DEPLOY ---- node state %s " % self.node.state )
+ self.ec.schedule(reschedule_delay, self.deploy)
+ else:
+ try:
+ command = self.get("command") or ""
- super(LinuxCCNApplication, self).deploy()
+ self.info("Deploying command '%s' " % command)
+
+ if not self.get("env"):
+ self.set("env", self._environment)
+
+ self.discover()
+ self.provision()
+ except:
+ self.fail()
+ return
+
+ self.debug("----- READY ---- ")
+ self.set_ready()
@property
def _environment(self):
- env = "PATH=$PATH:${EXP_HOME}/ccnx/bin "
- return env
+ return self.ccnd.path
- def execute_command(self, command, env):
- environ = self.node.format_environment(env, inline = True)
- command = environ + command
- command = self.replace_paths(command)
-
- (out, err), proc = self.node.execute(command)
-
- if proc.poll():
- self._state = ResourceState.FAILED
- self.error(msg, out, err)
- raise RuntimeError, msg
-
def valid_connection(self, guid):
# TODO: Validate!
return True