X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Flinux%2Fccn%2Ffibentry.py;h=2af3b2cfc579a9c4a887a7c9f4304d65c96d7e56;hb=46da4690c5120b820385fd47b7fbf995c1bff2a0;hp=9f4d1d3512aad55a7652e624f606701d2aec7310;hpb=87f44a7c2853afb7021276dd3700858cff950703;p=nepi.git diff --git a/src/nepi/resources/linux/ccn/fibentry.py b/src/nepi/resources/linux/ccn/fibentry.py index 9f4d1d35..2af3b2cf 100644 --- a/src/nepi/resources/linux/ccn/fibentry.py +++ b/src/nepi/resources/linux/ccn/fibentry.py @@ -21,7 +21,8 @@ from nepi.execution.attribute import Attribute, Flags, Types from nepi.execution.trace import Trace, TraceAttr from nepi.execution.resource import clsinit_copy, ResourceState, \ ResourceAction, reschedule_delay -from nepi.resources.linux.ccn.ccnapplication import LinuxCCNApplication +from nepi.resources.linux.application import LinuxApplication +from nepi.resources.linux.ccn.ccnd import LinuxCCND from nepi.util.timefuncs import tnow import os @@ -31,7 +32,7 @@ import os # Implement ENTRY DELETE!! @clsinit_copy -class LinuxFIBEntry(LinuxCCNApplication): +class LinuxFIBEntry(LinuxApplication): _rtype = "LinuxFIBEntry" @classmethod @@ -67,6 +68,17 @@ class LinuxFIBEntry(LinuxCCNApplication): super(LinuxFIBEntry, self).__init__(ec, guid) self._home = "fib-%s" % self.guid + @property + def ccnd(self): + ccnd = self.get_connected(LinuxCCND.rtype()) + if ccnd: return ccnd[0] + return None + + @property + def node(self): + if self.ccnd: return self.ccnd.node + return None + def deploy(self): # Wait until associated ccnd is provisioned if not self.ccnd or self.ccnd.state < ResourceState.READY: @@ -80,8 +92,10 @@ class LinuxFIBEntry(LinuxCCNApplication): self.set("env", env) self.info("Deploying command '%s' " % command) - - self.node.mkdir(self.app_home) + + # create run dir for application + self.node.mkdir(self.run_home) + (out, err), proc = self.execute_command(command, env) if proc.poll(): @@ -90,7 +104,6 @@ class LinuxFIBEntry(LinuxCCNApplication): self.error(msg, out, err) raise RuntimeError, msg - self.debug("----- READY ---- ") self._ready_time = tnow() self._state = ResourceState.READY @@ -158,6 +171,17 @@ class LinuxFIBEntry(LinuxCCNApplication): "port": port }) + @property + def _environment(self): + 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) + + return self.node.execute(command) + def valid_connection(self, guid): # TODO: Validate! return True