Exemple #1
0
 def killProcess(self, sig):
     self.pid = self.getProcessPid(self.instance.process_name)
     try:
         os.kill(self.pid, sig)
         return CommandResultSuccess()
     except OSError as e:
         return CommandResultFailure(e.message)
Exemple #2
0
 def errorHandling(self):
     running = self.isRunning(self.instance.process_name)
     if running:
         return CommandResultSuccess("process is already running")
     valid = self.isValidInstanceForStart()
     if not valid:
         return valid
Exemple #3
0
    def errorHandling(self):
        if self.use_systemd:
            ret = subprocess.call([
                '/bin/systemctl', 'is-active', '--quiet',
                self.getSystemdServiceName()
            ])
            if not ret:
                return CommandResultSuccess('Running')
        else:
            running = self.isRunning(self.instance.process_name)
            if running:
                return CommandResultSuccess('Process is already running')

        valid = self.isValidInstanceForStart()
        if not valid:
            return valid
Exemple #4
0
 def reload(self):
     self.szig.reload()
     if self.szig.reload_result():
         result = CommandResultSuccess("Reload successful")
     else:
         result = CommandResultFailure("Reload failed")
     return result
Exemple #5
0
 def reject(self):
     try:
         result = self.szig.authorize_reject(self.session_id,
                                             self.description)
         return CommandResultSuccess(result)
     except SZIGError as e:
         return CommandResultFailure(e.msg)
Exemple #6
0
 def get(self):
     algorithm = GetProcInfoAlgorithm()
     algorithm.setInstance(self.instance)
     proc_info = algorithm.run()
     if not proc_info:
         return proc_info
     return CommandResultSuccess("", int(proc_info["rss"])*4)
Exemple #7
0
 def services(self):
     services = []
     service = self.szig.get_child("service")
     while service:
         services.append(service[len("service."):])
         service = self.szig.get_sibling(service)
     return CommandResultSuccess("", services)
Exemple #8
0
    def isValidInstanceForStart(self):
        if not 0 <= self.instance.process_num < self.instance.number_of_processes:
            return CommandResultFailure("number %d must be between [0..%d)"
                                        % (self.instance.process_num, self.instance.number_of_processes))
        if not self.instance.auto_start and not self.force:
            return CommandResultFailure("not started, because no-auto-start is set")

        return CommandResultSuccess()
Exemple #9
0
    def execute(self):
        error = self.errorHandling()
        if error != None:
            return error

        try:
            result = self.szig.stop_session(self.session_id)
            return CommandResultSuccess(result)
        except SZIGError as e:
            return CommandResultFailure(
                'Error while communicating through szig: ' + e.msg)
Exemple #10
0
    def errorHandling(self):
        running = self.isRunning(self.instance.process_name)
        if not running:
            # Ignore not running process
            return CommandResultSuccess(running.msg)

        try:
            self.szig = SZIG(self.instance.process_name)
        except IOError as e:
            return CommandResultFailure(e.message)
        return None
Exemple #11
0
 def start(self):
     args = self.assembleStartCommand()
     try:
         subprocess.Popen(args, stderr=open("/dev/null", 'w'))
     except OSError:
         pass
     self.waitTilTimoutToStart()
     running = self.isRunning(self.instance.process_name)
     if running:
         return CommandResultSuccess(running)
     else:
         return  CommandResultFailure("did not start in time")
Exemple #12
0
    def test_service_rate_algorithm(self):
        algorithm = GetServiceRateAlgorithm()
        algorithm.szig = self.szig
        rate = {}
        for service in self.data["service"].keys():
            avg1 = self.data["service"][service]["rate_avg1"]
            avg5 = self.data["service"][service]["rate_avg5"]
            avg15 = self.data["service"][service]["rate_avg15"]
            rate[service] = {"avg1": avg1, "avg5": avg5, "avg15": avg15}

        services = CommandResultSuccess("", self.data["service"].keys())
        self.assertEquals(algorithm.getServiceRate(services), rate)
Exemple #13
0
    def stop(self):
        sig = signal.SIGKILL if self.force else signal.SIGTERM
        isKilled = self.killProcess(sig)
        if not isKilled:
            return isKilled

        self.waitTilTimeoutToStop()
        if self.isRunning(self.instance.process_name):
            return CommandResultFailure(
                "did not exit in time (pid='%d', signo='%d', timeout='%d')" %
                (self.pid, sig, self.stop_timout))
        else:
            return CommandResultSuccess("stopped")
Exemple #14
0
    def start(self):
        args = self.assembleStartCommand()

        environment = None

        try:
            start_process = subprocess.Popen(args, env=environment)
        except OSError:
            pass
        self.waitTilTimoutToStart(start_process)

        running = self.isRunning(self.instance.process_name)
        if running:
            return CommandResultSuccess(running)
        else:
            return CommandResultFailure('Did not start in time')
Exemple #15
0
    def start_with_systemd(self):
        try:
            subprocess.check_call(
                ['/bin/systemctl', 'start',
                 self.getSystemdServiceName()])
        except:
            return CommandResultFailure(
                "Error invoking 'systemctl start zorp{}@{}.service'".format(
                    Zorp.Config.config.options.package_suffix,
                    self.instance.name))

        running = self.isRunning(self.instance.process_name)
        if running:
            return CommandResultSuccess(running)
        else:
            return CommandResultFailure('Failed to start')
Exemple #16
0
    def execute(self):
        def _prepend_instance_name(tree):
            return {self.instance.process_name : tree}

        error = self.errorHandling()
        if error != None:
            return error

        try:
            if self.root:
                szig_dict = _prepend_instance_name({self.root : self.walk(self.root)})
            else:
                szig_dict = _prepend_instance_name(self.walk(self.root))

            return CommandResultSuccess("", szig_dict)
        except SZIGError as e:
            return CommandResultFailure("error while communicating through szig: %s" % e.msg)
Exemple #17
0
    def isRunning(self, process):
        """
        Opening the right pidfile in the pidfile dir,
        checking if there is a running process with that pid,
        returning True if there is.

        FIXME: Delete pid file if there is no runnig processes with that pid
        """

        pid = self.getProcessPid(process)
        if not pid:
            if pid.value == "Permission denied":
                return CommandResultFailure(pid.value)
            else:
                return CommandResultFailure("Process not running")

        try:
            open('/proc/' + str(pid) + '/status')
        except IOError:
            return CommandResultFailure("Invalid pid file no running process with pid %d!" % pid)

        return CommandResultSuccess("running")
Exemple #18
0
 def getDeadlockcheck(self):
     return CommandResultSuccess('Deadlockcheck={}'.format(
         self.szig.deadlockcheck))
Exemple #19
0
 def getloglevel(self):
     return CommandResultSuccess(
         "verbose_level=%d, logspec='%s'" %
         (self.szig.loglevel, self.szig.logspec), self.szig.loglevel)
Exemple #20
0
 def modifyloglevel(self, value):
     self.szig.loglevel = value
     return CommandResultSuccess()
Exemple #21
0
 def setDeadlockcheck(self, value):
     self.szig.deadlockcheck = value
     return CommandResultSuccess("")
Exemple #22
0
 def getDeadlockcheck(self):
     return CommandResultSuccess("deadlockcheck=%s" %
                                 self.szig.deadlockcheck)
Exemple #23
0
 def setLevel(self, value):
     self.szig.loglevel = value
     return CommandResultSuccess('New verbose_level={}'.format(value))
Exemple #24
0
 def getLevel(self):
     return CommandResultSuccess(
         "verbose_level={}, logspec='{}'".format(self.szig.loglevel,
                                                 self.szig.logspec),
         self.szig.loglevel)
Exemple #25
0
 def errorHandling(self):
     running = self.isRunning(self.instance.process_name)
     if not running:
         # Ignore not running process
         return CommandResultSuccess(running.msg)
Exemple #26
0
 def execute(self):
     try:
         self.szig = SZIG(self.instance.process_name)
     except IOError as e:
         return CommandResultFailure(e.message)
     return CommandResultSuccess("", self.get())
Exemple #27
0
 def execute(self):
     self.parse_algorithm.setInstance(self.instance)
     self.errorHandling()
     zorp_arguments = self.parse_algorithm.run()
     return CommandResultSuccess("", zorp_arguments['threads'])