1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import subprocess
from charmhelpers.core import hookenv
from lib.action import MaintenanceAction
from lib.error import CharmError
from lib.paths import default_paths, LSCTL
class ProcessesNotStartedError(CharmError):
"""Some of the Landscape server processes couldn't be started."""
def __init__(self, start_output, status_output):
message = "Some services failed to start.\n\n{}\n\n{}".format(
start_output, status_output)
super(ProcessesNotStartedError, self).__init__(message)
class ResumeAction(MaintenanceAction):
"""Resume all Landscape services on the unit."""
def __init__(self, hookenv=hookenv, paths=default_paths,
subprocess=subprocess):
super(ResumeAction, self).__init__(hookenv=hookenv, paths=paths)
self._subprocess = subprocess
def _run(self):
self._hookenv.status_set("maintenance", "Starting services.")
start_output = self._subprocess.check_output((LSCTL, "start"))
try:
self._subprocess.check_output((LSCTL, "status"))
except subprocess.CalledProcessError as status_error:
self._hookenv.status_set("maintenance", "Stopping services.")
self._subprocess.call((LSCTL, "stop"))
self._hookenv.status_set(
"maintenance", "Services failed to start.")
raise ProcessesNotStartedError(start_output, status_error.output)
else:
self._hookenv.status_set("active", "")
|