Merge lp:~gnuoy/charms/precise/ceph/add-preinstall-hook into lp:~charmers/charms/precise/ceph/trunk

Proposed by Liam Young
Status: Merged
Merged at revision: 66
Proposed branch: lp:~gnuoy/charms/precise/ceph/add-preinstall-hook
Merge into: lp:~charmers/charms/precise/ceph/trunk
Diff against target: 90 lines (+54/-0)
4 files modified
charm-helpers-sync.yaml (+1/-0)
hooks/charmhelpers/payload/__init__.py (+1/-0)
hooks/charmhelpers/payload/execd.py (+50/-0)
hooks/hooks.py (+2/-0)
To merge this branch: bzr merge lp:~gnuoy/charms/precise/ceph/add-preinstall-hook
Reviewer Review Type Date Requested Status
Marco Ceppi (community) Approve
Review via email: mp+194897@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Marco Ceppi (marcoceppi) wrote :

LGTM, Thanks for the improvements! +!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'charm-helpers-sync.yaml'
--- charm-helpers-sync.yaml 2013-07-03 20:51:57 +0000
+++ charm-helpers-sync.yaml 2013-11-12 16:48:22 +0000
@@ -5,3 +5,4 @@
5 - fetch5 - fetch
6 - contrib.storage.linux:6 - contrib.storage.linux:
7 - utils7 - utils
8 - payload.execd
89
=== added directory 'hooks/charmhelpers/payload'
=== added file 'hooks/charmhelpers/payload/__init__.py'
--- hooks/charmhelpers/payload/__init__.py 1970-01-01 00:00:00 +0000
+++ hooks/charmhelpers/payload/__init__.py 2013-11-12 16:48:22 +0000
@@ -0,0 +1,1 @@
1"Tools for working with files injected into a charm just before deployment."
02
=== added file 'hooks/charmhelpers/payload/execd.py'
--- hooks/charmhelpers/payload/execd.py 1970-01-01 00:00:00 +0000
+++ hooks/charmhelpers/payload/execd.py 2013-11-12 16:48:22 +0000
@@ -0,0 +1,50 @@
1#!/usr/bin/env python
2
3import os
4import sys
5import subprocess
6from charmhelpers.core import hookenv
7
8
9def default_execd_dir():
10 return os.path.join(os.environ['CHARM_DIR'], 'exec.d')
11
12
13def execd_module_paths(execd_dir=None):
14 """Generate a list of full paths to modules within execd_dir."""
15 if not execd_dir:
16 execd_dir = default_execd_dir()
17
18 if not os.path.exists(execd_dir):
19 return
20
21 for subpath in os.listdir(execd_dir):
22 module = os.path.join(execd_dir, subpath)
23 if os.path.isdir(module):
24 yield module
25
26
27def execd_submodule_paths(command, execd_dir=None):
28 """Generate a list of full paths to the specified command within exec_dir.
29 """
30 for module_path in execd_module_paths(execd_dir):
31 path = os.path.join(module_path, command)
32 if os.access(path, os.X_OK) and os.path.isfile(path):
33 yield path
34
35
36def execd_run(command, execd_dir=None, die_on_error=False, stderr=None):
37 """Run command for each module within execd_dir which defines it."""
38 for submodule_path in execd_submodule_paths(command, execd_dir):
39 try:
40 subprocess.check_call(submodule_path, shell=True, stderr=stderr)
41 except subprocess.CalledProcessError as e:
42 hookenv.log("Error ({}) running {}. Output: {}".format(
43 e.returncode, e.cmd, e.output))
44 if die_on_error:
45 sys.exit(e.returncode)
46
47
48def execd_preinstall(execd_dir=None):
49 """Run charm-pre-install for each module within execd_dir."""
50 execd_run('charm-pre-install', execd_dir=execd_dir)
051
=== modified file 'hooks/hooks.py'
--- hooks/hooks.py 2013-09-23 10:13:17 +0000
+++ hooks/hooks.py 2013-11-12 16:48:22 +0000
@@ -32,6 +32,7 @@
32 umount32 umount
33)33)
34from charmhelpers.fetch import add_source34from charmhelpers.fetch import add_source
35from charmhelpers.payload.execd import execd_preinstall
3536
36from utils import (37from utils import (
37 render_template,38 render_template,
@@ -51,6 +52,7 @@
51@hooks.hook('install')52@hooks.hook('install')
52def install():53def install():
53 log('Begin install hook.')54 log('Begin install hook.')
55 execd_preinstall()
54 add_source(config('source'), config('key'))56 add_source(config('source'), config('key'))
55 apt_update(fatal=True)57 apt_update(fatal=True)
56 apt_install(packages=ceph.PACKAGES, fatal=True)58 apt_install(packages=ceph.PACKAGES, fatal=True)

Subscribers

People subscribed via source and target branches

to all changes: