218.2.1
by Free Ekanayaka
Add testable install hook |
1 |
from charmhelpers.core import hookenv |
218.2.2
by Free Ekanayaka
Improve testing |
2 |
from charmhelpers.core.hookenv import ERROR |
3 |
||
297.2.8
by Danilo Šegan
Drop HookError. |
4 |
from lib.error import CharmError |
294.2.1
by Danilo Šegan
Introduce MaintenanceHook and make UpgradeAction use it. |
5 |
|
218.2.2
by Free Ekanayaka
Improve testing |
6 |
|
218.2.1
by Free Ekanayaka
Add testable install hook |
7 |
class Hook(object): |
8 |
"""Juju hook Abstraction, providing dependency injection for testing."""
|
|
9 |
||
218.2.2
by Free Ekanayaka
Improve testing |
10 |
def __init__(self, hookenv=hookenv): |
11 |
"""
|
|
12 |
@param hookenv: The charm-helpers C{hookenv} module, will be replaced
|
|
13 |
by tests.
|
|
14 |
"""
|
|
15 |
self._hookenv = hookenv |
|
218.2.1
by Free Ekanayaka
Add testable install hook |
16 |
|
218.2.2
by Free Ekanayaka
Improve testing |
17 |
def __call__(self): |
18 |
"""Invoke the hook.
|
|
218.2.1
by Free Ekanayaka
Add testable install hook |
19 |
|
20 |
@return: An integer with the exit code for the hook.
|
|
21 |
"""
|
|
218.3.1
by Free Ekanayaka
Add PostgreSQLRelationContext |
22 |
self._hookenv.log("Invoke handler for %s" % self._hookenv.hook_name()) |
218.2.2
by Free Ekanayaka
Improve testing |
23 |
try: |
24 |
self._run() |
|
297.2.8
by Danilo Šegan
Drop HookError. |
25 |
except CharmError as error: |
218.2.2
by Free Ekanayaka
Improve testing |
26 |
self._hookenv.log(str(error), ERROR) |
27 |
return 1 |
|
28 |
return 0 |
|
29 |
||
30 |
def _run(self): |
|
31 |
"""Do the job."""
|
|
218.2.1
by Free Ekanayaka
Add testable install hook |
32 |
raise NotImplementedError("Must be implemented by sub-classes") |