From: Alina Quereilhac Date: Sat, 31 May 2014 17:42:26 +0000 (+0200) Subject: Adding earlyStart option for Linux traceroute and mtr X-Git-Tag: nepi-3.1.0~51 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=9af120b9ef4f852691a15e55b3ccf9132109fc43;p=nepi.git Adding earlyStart option for Linux traceroute and mtr --- diff --git a/src/nepi/resources/linux/mtr.py b/src/nepi/resources/linux/mtr.py index b6944439..311990a9 100644 --- a/src/nepi/resources/linux/mtr.py +++ b/src/nepi/resources/linux/mtr.py @@ -70,6 +70,12 @@ class LinuxMtr(LinuxApplication): "mtr target host (host that will be pinged)", flags = Flags.Design) + early_start = Attribute("earlyStart", + "Start ping as early as deployment. ", + type = Types.Bool, + default = False, + flags = Flags.Design) + cls._register_attribute(report_cycles) cls._register_attribute(no_dns) cls._register_attribute(address) @@ -77,12 +83,19 @@ class LinuxMtr(LinuxApplication): cls._register_attribute(countinuous) cls._register_attribute(print_timestamp) cls._register_attribute(target) + cls._register_attribute(early_start) def __init__(self, ec, guid): super(LinuxMtr, self).__init__(ec, guid) self._home = "mtr-%s" % self.guid self._sudo_kill = True + def upload_start_command(self): + super(LinuxMtr, self).upload_start_command() + + if self.get("earlyStart") == True: + self._run_in_background() + def do_deploy(self): if not self.get("command"): self.set("command", self._start_command) @@ -95,6 +108,20 @@ class LinuxMtr(LinuxApplication): super(LinuxMtr, self).do_deploy() + def do_start(self): + if self.get("earlyStart") == True: + if self.state == ResourceState.READY: + command = self.get("command") + self.info("Starting command '%s'" % command) + + self.set_started() + else: + msg = " Failed to execute command '%s'" % command + self.error(msg, out, err) + raise RuntimeError, msg + else: + super(LinuxMtr, self).do_start() + @property def _start_command(self): args = [] diff --git a/src/nepi/resources/linux/traceroute.py b/src/nepi/resources/linux/traceroute.py index 3c3310a9..0da90a2a 100644 --- a/src/nepi/resources/linux/traceroute.py +++ b/src/nepi/resources/linux/traceroute.py @@ -55,15 +55,28 @@ class LinuxTraceroute(LinuxApplication): "Traceroute target host (host that will be pinged)", flags = Flags.Design) + early_start = Attribute("earlyStart", + "Start ping as early as deployment. ", + type = Types.Bool, + default = False, + flags = Flags.Design) + cls._register_attribute(countinuous) cls._register_attribute(print_timestamp) cls._register_attribute(use_ip) cls._register_attribute(target) + cls._register_attribute(early_start) def __init__(self, ec, guid): super(LinuxTraceroute, self).__init__(ec, guid) self._home = "traceroute-%s" % self.guid + def upload_start_command(self): + super(LinuxTraceroute, self).upload_start_command() + + if self.get("earlyStart") == True: + self._run_in_background() + def do_deploy(self): if not self.get("command"): self.set("command", self._start_command) @@ -73,6 +86,20 @@ class LinuxTraceroute(LinuxApplication): super(LinuxTraceroute, self).do_deploy() + def do_start(self): + if self.get("earlyStart") == True: + if self.state == ResourceState.READY: + command = self.get("command") + self.info("Starting command '%s'" % command) + + self.set_started() + else: + msg = " Failed to execute command '%s'" % command + self.error(msg, out, err) + raise RuntimeError, msg + else: + super(LinuxTraceroute, self).do_start() + @property def _start_command(self): args = []