from .Framework import PIDChangeService
from .lib import processes


class WebServerFlapping(PIDChangeService):
    def __init__(self):
        PIDChangeService.__init__(self)
        self.pid_globs = [
            '/var/run/apache2/httpd.pid',
            '/usr/local/apache/logs/httpd.pid',  # EasyApache 3
            '/run/httpd.pid',                    # DirectAdmin
            '/var/logs/httpd.pid',               # DirectAdmin
            '/etc/httpd/run/httpd.pid',          # Plesk
        ]

        self.proc_names = [
            'httpd',
        ]

    def _get_raw_data(self):
        try:
            with open('/var/run/lshttpd.pid', 'r') as f:
                pid = f.read().strip()
                process = processes.Process.from_pid(pid)
                if process.status_fields['Name'] == 'litespeed':
                    return 0
        except IOError:
            pass

        return super(WebServerFlapping, self)._get_raw_data()
