X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Fns3%2Fns3base.py;h=73ec178a022c2fbc1fdfcb98b184785e2d798cd0;hb=ac866efb762875550bdc0c05d693e5eb026f435e;hp=f38915fbfdcf99d59aaeb72544f8e4f0dce18ea8;hpb=f4a5a9a345818610739e9e5841b9da5b1a062f5d;p=nepi.git diff --git a/src/nepi/resources/ns3/ns3base.py b/src/nepi/resources/ns3/ns3base.py index f38915fb..73ec178a 100644 --- a/src/nepi/resources/ns3/ns3base.py +++ b/src/nepi/resources/ns3/ns3base.py @@ -18,7 +18,7 @@ # Author: Alina Quereilhac from nepi.execution.resource import ResourceManager, clsinit_copy, \ - ResourceState, reschedule_delay + ResourceState from nepi.execution.attribute import Flags from nepi.execution.trace import TraceAttr @@ -32,6 +32,7 @@ class NS3Base(ResourceManager): self._uuid = None self._connected = set() self._trace_filename = dict() + self._node = None @property def connected(self): @@ -47,15 +48,17 @@ class NS3Base(ResourceManager): @property def node(self): - from nepi.resources.ns3.ns3node import NS3BaseNode - nodes = self.get_connected(NS3BaseNode.get_rtype()) - if nodes: return nodes[0] - return None + if not self._node: + from nepi.resources.ns3.ns3node import NS3BaseNode + nodes = self.get_connected(NS3BaseNode.get_rtype()) + if nodes: self._node = nodes[0] + + return self._node def trace(self, name, attr = TraceAttr.ALL, block = 512, offset = 0): filename = self._trace_filename.get(name) if not filename: - self.error("Can resolve trace %s. Did you enabled it?" % name) + self.error("Can not resolve trace %s. Did you enabled it?" % name) return "" return self.simulation.trace(filename, attr, block, offset) @@ -80,7 +83,7 @@ class NS3Base(ResourceManager): kwargs = dict() for attr in self._attrs.values(): - if not ( attr.has_flag(Flags.Construct) and attr.has_changed() ): + if not ( attr.has_flag(Flags.Construct) and attr.has_changed ): continue kwargs[attr.name] = attr._value @@ -99,14 +102,11 @@ class NS3Base(ResourceManager): def _wait_rms(self): """ Returns True if dependent RMs are not yer READY, False otherwise""" for rm in self._rms_to_wait: - if rm and rm.state < ResourceState.READY: + if rm.state < ResourceState.READY: return True return False def do_provision(self): - # TODO: create run dir for ns3 object !!!! - # self.simulation.node.mkdir(self.run_home) - self._instantiate_object() self._connect_object() self._configure_object() @@ -118,7 +118,7 @@ class NS3Base(ResourceManager): def do_deploy(self): if self._wait_rms(): self.debug("---- RESCHEDULING DEPLOY ----" ) - self.ec.schedule(reschedule_delay, self.deploy) + self.ec.schedule(self.reschedule_delay, self.deploy) else: self.do_discover() self.do_provision()