On Jan 21, 2016 2:05 PM, "'Klaus Aehlig' via ganeti-devel" < [email protected]> wrote: > > > > commit 506c5b3a21a04f9e1c23bf4b1393153a5cfc3b25 > Merge: 643c66b 5d93952 > Author: Klaus Aehlig <[email protected]> > Date: Thu Jan 21 13:53:36 2016 +0100 > > Merge branch 'stable-2.17' into master > > * stable-2.17 > Clean up after failed node-add-pre hooks > Light-weight SSH key removal > Introduce HooksAbortCallBack > Add useful hints to hooks documentation > Introduce backoff to RetryByNumberOfTimes > Unit tests for RetryByNumberOfTimes > Disable file-logging for tools on ext. nodes > Update documentation of gnt-node {add,remove,modify} > Propagate --debug/verbose in gnt-node add/remove/modify > Catch IOError of SSH files when removing node > Fix renew-crypto on one-node-cluster > Update documentation of renew-crypto > Increase loglevel of renew-crypto after upgrades > Expose verbose/debug option to renew-crypto > ssh_update: log data that is received > Make all tools log with their name > Propagate verbose/debug option to ssh_update calls > Make SetupToolsLogging use tools logfile > > * stable-2.16 > Document the increased timeout as an incompatible change > Increase timeouts for luxi by a factor of 3 > Do not repeat constants in comments > Send messages as Strings > > * stable-2.15 > Catch IOError of SSH files when removing node > Fix renew-crypto on one-node-cluster > ssh_update: log data that is received > Increase timeout of RPC adding/removing keys > After TestNodeModify, fix the pool of master candidates > > * stable-2.14 > Test disk attachment with different primary nodes > Check for same primary node before disk attachment > Add detach/attach sequence test > Allow disk attachment with external storage > > * stable-2.13 > Run ssh-key renewal in debug mode during upgrade > > * stable-2.12 > Increase minimal sizes of test online nodes > Also log the high-level upgrade steps > Add function to provide logged user feedback > Run renew-crypto in upgrades in debug mode > Unconditionally log upgrades at debug level > Document healthy-majority restriction on master-failover > Check for healthy majority on master failover with voting > Add a predicate testing that a majority of nodes is healthy > Fix outdated comment > Pass arguments to correct daemons during master-failover > Fix documentation for master-failover > > * stable-2.11 > (no changes) > > * stable-2.10 > KVM: explicitly configure routed NICs late > > Conflicts: > doc/hooks.rst: take both additions > lib/mcpu.py: run all hooks in an environment > with HooksAbortCallBack > > Signed-off-by: Klaus Aehlig <[email protected]> > > diff --cc doc/hooks.rst > index bf3fc67,667906b..6d2b071 > --- a/doc/hooks.rst > +++ b/doc/hooks.rst > @@@ -17,8 -18,10 +18,12 @@@ are named ``$hook-$phase.d``, where ``$ > This is similar to the ``/etc/network/`` structure present in Debian > for network interface handling. > > + Note that Ganeti does not create its ``hooks`` directory by default. > + If you want to use hooks scripts, create it on all nodes. This applies > + also to all sub directories such as ``node-add-pre.d``. > + > +.. _hooks-organization: > + > Organisation > ------------ > > diff --cc lib/mcpu.py > index 4ef1bd5,b3d4966..6bd6f85 > --- a/lib/mcpu.py > +++ b/lib/mcpu.py > @@@ -484,10 -483,17 +484,20 @@@ class Processor(object) > lu.cfg.OutDate() > lu.CheckPrereq() > > + self._hm = self.BuildHooksManager(lu) > - # Run hooks twice: first for the global hooks, then for the usual hooks. > - self._hm.RunPhase(constants.HOOKS_PHASE_PRE, is_global=True) > - h_results = self._hm.RunPhase(constants.HOOKS_PHASE_PRE) > + hm = self.BuildHooksManager(lu)
Shouldn't this have been removed as well? > + try: > - h_results = hm.RunPhase(constants.HOOKS_PHASE_PRE) > ++ # Run hooks twice: first for the global hooks, then for the usual hooks. > ++ self._hm.RunPhase(constants.HOOKS_PHASE_PRE, is_global=True) > ++ h_results = self._hm.RunPhase(constants.HOOKS_PHASE_PRE) > + except Exception, err: # pylint: disable=W0703 > + # This gives the LU a chance of cleaning up in case of an hooks failure. > + # The type of exception is deliberately broad to be able to react to > + # any kind of failure. > + lu.HooksAbortCallBack(constants.HOOKS_PHASE_PRE, self.Log, err) > + # We re-raise the exception to not alter the behavior of LU handling > + # otherwise. > + raise err > lu.HooksCallBack(constants.HOOKS_PHASE_PRE, h_results, > self.Log, None) > > > -- > Klaus Aehlig > Google Germany GmbH, Dienerstr. 12, 80331 Muenchen > Registergericht und -nummer: Hamburg, HRB 86891 > Sitz der Gesellschaft: Hamburg > Geschaeftsfuehrer: Matthew Scott Sucherman, Paul Terence Manicle
