~james-page/charm-helpers/haproxy-stats-1.6

« back to all changes in this revision

Viewing changes to charmhelpers/payload/execd.py

  • Committer: Matthew Wedgwood
  • Date: 2013-05-18 23:25:48 UTC
  • mto: (11.1.9 refactor-to-core)
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: matthew.wedgwood@canonical.com-20130518232548-fxjl9gm6oou7fqly
Improve test coverage for execd

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
    return os.path.join(os.environ['CHARM_DIR'],'exec.d')
11
11
 
12
12
 
13
 
def execd_modules(execd_dir=None):
 
13
def execd_module_paths(execd_dir=None):
14
14
    if not execd_dir:
15
15
        execd_dir = default_execd_dir()
16
16
    for subpath in os.listdir(execd_dir):
17
17
        module = os.path.join(execd_dir, subpath)
18
18
        if os.path.isdir(module):
19
 
                yield module
20
 
 
21
 
 
22
 
def execd_run(submodule, execd_dir=None, die_on_error=False):
23
 
    for module_path in execd_modules(execd_dir):
 
19
            yield module
 
20
 
 
21
 
 
22
def execd_submodule_paths(submodule, execd_dir=None):
 
23
    for module_path in execd_module_paths(execd_dir):
24
24
        path = os.path.join(module_path, submodule)
25
25
        if os.access(path, os.X_OK) and os.path.isfile(path):
26
 
            try:
27
 
                subprocess.check_call(path, shell=True)
28
 
            except subprocess.CalledProcessError as e:
29
 
                hookenv.log(e.output)
30
 
                if die_on_error:
31
 
                    sys.exit(e.returncode)
 
26
            yield path
 
27
 
 
28
 
 
29
def execd_run(submodule, execd_dir=None, die_on_error=False):
 
30
    for submodule_path in execd_submodule_paths(submodule, execd_dir):
 
31
        try:
 
32
            subprocess.check_call(submodule_path, shell=True)
 
33
        except subprocess.CalledProcessError as e:
 
34
            hookenv.log(e.output)
 
35
            if die_on_error:
 
36
                sys.exit(e.returncode)
32
37
 
33
38
 
34
39
def execd_preinstall(execd_dir=None):