Merge lp:~james-page/charm-helpers/disable-hookenv-config-save into lp:charm-helpers

Proposed by James Page
Status: Merged
Merge reported by: Tim Van Steenburgh
Merged at revision: not available
Proposed branch: lp:~james-page/charm-helpers/disable-hookenv-config-save
Merge into: lp:charm-helpers
Diff against target: 51 lines (+17/-4)
2 files modified
charmhelpers/core/hookenv.py (+6/-4)
tests/core/test_hookenv.py (+11/-0)
To merge this branch: bzr merge lp:~james-page/charm-helpers/disable-hookenv-config-save
Reviewer Review Type Date Requested Status
Tim Van Steenburgh Approve
charmers Pending
Review via email: mp+235607@code.launchpad.net

Description of the change

Add option to allow override in hookenv of configuration implicit save.

The introduction of the implicit save in Hooks broken pretty much all unit tests
in the openstack charms which exercise hook registration directly to ensure
hooks are correctly registered.

This change allows the save to be by-passed completely.

To post a comment you must log in.
Revision history for this message
Tim Van Steenburgh (tvansteenburgh) wrote :

+1 LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'charmhelpers/core/hookenv.py'
--- charmhelpers/core/hookenv.py 2014-09-08 02:28:10 +0000
+++ charmhelpers/core/hookenv.py 2014-09-23 10:45:34 +0000
@@ -486,9 +486,10 @@
486 hooks.execute(sys.argv)486 hooks.execute(sys.argv)
487 """487 """
488488
489 def __init__(self):489 def __init__(self, config_save=True):
490 super(Hooks, self).__init__()490 super(Hooks, self).__init__()
491 self._hooks = {}491 self._hooks = {}
492 self._config_save = config_save
492493
493 def register(self, name, function):494 def register(self, name, function):
494 """Register a hook"""495 """Register a hook"""
@@ -499,9 +500,10 @@
499 hook_name = os.path.basename(args[0])500 hook_name = os.path.basename(args[0])
500 if hook_name in self._hooks:501 if hook_name in self._hooks:
501 self._hooks[hook_name]()502 self._hooks[hook_name]()
502 cfg = config()503 if self._config_save:
503 if cfg.implicit_save:504 cfg = config()
504 cfg.save()505 if cfg.implicit_save:
506 cfg.save()
505 else:507 else:
506 raise UnregisteredHookError(hook_name)508 raise UnregisteredHookError(hook_name)
507509
508510
=== modified file 'tests/core/test_hookenv.py'
--- tests/core/test_hookenv.py 2014-09-05 16:31:44 +0000
+++ tests/core/test_hookenv.py 2014-09-23 10:45:34 +0000
@@ -972,6 +972,17 @@
972972
973 self.assertFalse(config.save.called)973 self.assertFalse(config.save.called)
974974
975 def test_config_save_disabled(self):
976 config = hookenv.config()
977 config.implicit_save = True
978
979 foo = MagicMock()
980 hooks = hookenv.Hooks(config_save=False)
981 hooks.register('foo', foo)
982 hooks.execute(['foo', 'some', 'other', 'args'])
983
984 self.assertFalse(config.save.called)
985
975 def test_runs_a_registered_function(self):986 def test_runs_a_registered_function(self):
976 foo = MagicMock()987 foo = MagicMock()
977 hooks = hookenv.Hooks()988 hooks = hookenv.Hooks()

Subscribers

People subscribed via source and target branches