LGTM with a few nits found upon rereading the text. On Fri, Nov 20, 2015 at 5:11 PM, 'Oleg Ponomarev' via ganeti-devel < [email protected]> wrote:
> Make the design document consistent with the current global post hooks > implementation. > > Signed-off-by: Oleg Ponomarev <[email protected]> > --- > doc/design-global-hooks.rst | 60 > +++++++++++++++++++++++++++++++++------------ > 1 file changed, 44 insertions(+), 16 deletions(-) > > diff --git a/doc/design-global-hooks.rst b/doc/design-global-hooks.rst > index 1778fa4..86e5f24 100644 > --- a/doc/design-global-hooks.rst > +++ b/doc/design-global-hooks.rst > @@ -40,6 +40,7 @@ process death. The organization of such hooks will be > preserved the > same as for the :ref:`existing per-opcode hooks <hooks-organization>`. > The same :ref:`common variables <common-variables>` will be available as > for the usual hooks. In addition to common variables, > +:ref:`additional variables <additional-variables>` and > :ref:`specialized variables <specialized-variables>`, corresponding to > the surrounded opcode, will also be provided. See > :ref:`per-opcode hooks parameters documentation <opcode-params>` for > @@ -47,12 +48,20 @@ more details. > > For the opcodes that are currently unsupported by hooks, and thus, don't > presented in :ref:`opcodes list <opcode-params>`, only > -:ref:`common variables <common-variables>` will be available in the > -corresponding *global* hooks. *OBJECT_TYPE* variable for such hooks will > +:ref:`common variables <common-variables>` and > +:ref:`additional variables <additional-variables>` will be available > +inside the *global* hooks. *OBJECT_TYPE* variable for such hooks will > be initialized with special ``NOT_APPLICABLE`` value. The hooks will be > executed only on master daemon as their opcodes won't provide any lists > containing target nodes. > > +For the *global* post hooks executing after a failure or death of > +the job process, only :ref:`common variables <common-variables>` > +(except OBJECT_TYPE) and > +:ref:`additional variables <additional-variables>` will be provided. > + > +.. _additional-variables: > + > Additional variables > ~~~~~~~~~~~~~~~~~~~~ > > @@ -62,32 +71,51 @@ in order to identify the current job: > GANETI_JOB_ID > Id of the job current opcode belongs to. > > +GANETI_IS_MASTER > + The variable showing if the current node is a master node. It might > + be useful e.g. if global hooks are used for the logging purposes. > + > + The ``master`` value means that the node is the master node > + > + The ``not_master`` value means that the node is not the master > + > Due to the fact that global hooks will be executed even after job > process has dead, a new environmental variable is introduced for the > *global* post hooks: > > GANETI_POST_STATUS > - String containing status of the opcode execution: ``succeeded``, > - ``failed`` or ``disappeared``. > + String containing status of the opcode execution: ``success``, > + ``error`` or ``disappear``. > I'd suggest keeping disappeared here, it's the correct choice despite the forms of success and error. Sorry for the back and forth :/ > > - The ``succeded`` status means that the logical unit corresponding to > - opcode succesfully finished. > + The ``success`` status means that the logical unit corresponding to > + the opcode and the non-global post hooks for the opcodes have > + succesfully finished. > > - The ``failed`` status means that the corresponding logical unit caused > - an exception which has been logged. > + The ``error`` status means that the corresponding logical unit or > + the non-global hooks caused an exception which has been logged. > > - The ``disappeared`` status means that job process has died during > - the logical unit execution. > + The ``disappear`` status means that job process has died during > the job process > + the logical unit or the non-global hooks execution. > > Behaviour details > ~~~~~~~~~~~~~~~~~ > > -The code executing the logical unit will start a process which will be > -responsible for the *global* hooks execution. All the pre hooks will end > -their execution before the start of the opcode execution on each node. > -All the post hooks will start after the end of logical unit execution or > -after the job process death. In case of the job process death, the hooks > -will not be executed for the further opcodes in the job. > +*Global* pre hooks will be always executed just before the usual pre > will always be > +hooks on the same nodes set and on the master node. The hooks > node set > +execution result will be ignored. In case of opcodes which don't > +support hooks, *global* pre hooks also will be executed but only on > +the master node. > + > +With the post hooks the situation is more complicated. In case of > +successful job process execution, *global* hooks will be executed just > +after the usual post hooks have run and all the errors have been > +checked. In case of ``error`` status, *global* post hooks will be > +executed only on the master node from the exception handler. Just after > +the *global* post hooks execution, the exception will be raised again > +as usual. In case of job process disappear, the scheduler will execute > +the *global* post hooks in a separate process as soon as the job > +process death is registered. The *global* post hooks will be executed > +only for the opcodes with an initialized start_timestamp. > > .. vim: set textwidth=72 : > .. Local Variables: > -- > 2.6.0.rc2.230.g3dd15c0 > > Hrvoje Ribicic Ganeti Engineering Google Germany GmbH Dienerstr. 12, 80331, München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen Sie die E-Mail und alle Anhänge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks.
