55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
"""Classes implementing different methods for running monasca-agent on startup as well as starting the process immediately.
|
|
|
|
"""
|
|
import psutil
|
|
|
|
|
|
class Service(object):
|
|
|
|
"""Abstract base class implementing the interface for various service types.
|
|
|
|
"""
|
|
|
|
def __init__(self, config_dir, log_dir, name='monasca-agent'):
|
|
self.config_dir = config_dir
|
|
self.log_dir = log_dir
|
|
self.name = name
|
|
|
|
def enable(self):
|
|
"""Sets monasca-agent to start on boot.
|
|
|
|
Generally this requires running as super user
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def start(self, restart=True):
|
|
"""Starts monasca-agent.
|
|
|
|
If the agent is running and restart is True, restart
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def stop(self):
|
|
"""Stops monasca-agent.
|
|
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def is_enabled(self):
|
|
"""Returns True if monasca-agent is setup to start on boot, false otherwise.
|
|
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
@staticmethod
|
|
def is_running():
|
|
"""Returns True if monasca-agent is running, false otherwise.
|
|
|
|
"""
|
|
# Looking for the supervisor process not the individual components
|
|
for process in psutil.process_iter():
|
|
if '/etc/monasca/agent/supervisor.conf' in process.cmdline():
|
|
return True
|
|
|
|
return False
|