{"push_id":894561259,"size":13,"distinct_size":13,"ref":"refs/heads/master","head":"cdc923afa4a2751d331099422199ee173def61c2","before":"6857ddc6951806ebf849538a3f356abe50de133a","commits":[{"sha":"519d461c22ea33f825084202be82bbef8c5768b4","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Always pass node uuids but not node names to hooksmaster\n\nCurrently hooksmaster is able to deal with both uuids and names.\nWhile uuids are passed in most cases, the node list uses the legacy\nnaming *node_names* inside the hooksmaster implementation which leads\nto misunderstandings. This patch modifies the existing code to make\nit always pass node uuids to hooksmaster. It also renames the\nmisleading *node_names* parameter to *node_uuids*.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Helga Velroyen <helgav@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/519d461c22ea33f825084202be82bbef8c5768b4"},{"sha":"34bf3db3701bddd8bbe4ec392074b8e4badba64d","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Add global hooks support to the HooksMaster\n\nAdd the *glob* argument to the RunPhase function. With *is_global* set\nto True, HooksMaster runs global hooks instead of the opcode's hooks.\nThe global hooks should be placed in the \"global\" subdirectory of the\nhooks directory.\n\nAs more than one global hook can be triggered by the same Ganeti job in\na very unpredictable way, we set the IS_MASTER environmental variable\nto allow hooks to make sure that exactly one action gets executed per\nhook activation.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/34bf3db3701bddd8bbe4ec392074b8e4badba64d"},{"sha":"9bfd035e9f59f43eb98b52a320c2b67004420dd6","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Run global hooks in case of succesful opcode execution\n\nRun PRE and POST global hooks in case of succesful job execution on\nthe master node and on the node_list provided by the logical unit.\nPOST hooks are always executed with status equal to SUCCESS.\n\nAlso fix the python tests:\n - as currently at least global hooks are always executed and\n   hooksmaster checks the rpc results, call_hooks_runner mock modified\n   in order to always return successful results;\n - the helper function ensuring that hooks are executed only once is now\n   useless because of global hooks. They are replaced by a separate test\n   per each hooks execution.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/9bfd035e9f59f43eb98b52a320c2b67004420dd6"},{"sha":"b8d63274496bbb57f3796c5d2f26104e34cc96fc","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Execute POST-phase global hooks in case of failure\n\nAll the errors encountered during an opcode execution are reported via\nexceptions. Intercept all the exceptions and execute POST global hooks\nwith ERROR status.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/b8d63274496bbb57f3796c5d2f26104e34cc96fc"},{"sha":"21deeac5b8921ae0258dc4021b21ecd29e894eaf","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Make SafeLoadJobFromDisk a @staticmethod\n\nSafeLoadJobFromDisk will be used in further patches in order to load\njob files for jobs whose processes have disappeared. The functionality\nwill be used to run global post hooks for such jobs.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/21deeac5b8921ae0258dc4021b21ecd29e894eaf"},{"sha":"8fe4254b9b3cb6330e6fa62c21312edc7d5e2d3b","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Divide forkJobProcess into several functions\n\nThe forkJobProcess implementation consists of several steps. Move each\nlogically consistent step into the generalized function in order\nto reuse these code fragments in forkPostHooksProcess (will be the next\ncommit).\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/8fe4254b9b3cb6330e6fa62c21312edc7d5e2d3b"},{"sha":"b25a99fb8172de5bd30227e305cc98dfdb951f24","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Implement forkPostHooksProcess function\n\nforkPostHooksProcess function will be used to create process running\nglobal POST hooks for opcodes which job processes have disappeared.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/b25a99fb8172de5bd30227e305cc98dfdb951f24"},{"sha":"b5ab92b94891ffd6a2ce044465a27b2260be88c2","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Implement python process executing global POST hooks\n\nImplement post_hooks_exec.py which has already been referred to by\nforkPostHooksProcess. This python process will be used in order to\nrun global POST hooks for opcodes whose processes have disappeared.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/b5ab92b94891ffd6a2ce044465a27b2260be88c2"},{"sha":"d8584e9484f8a9fcafab2fe0134818e5a9d20618","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Execute global POST hooks for disappeared job processes\n\nStart execution of global POST hooks as soon as the scheduler\nfinds out that a job process has disappeared.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/d8584e9484f8a9fcafab2fe0134818e5a9d20618"},{"sha":"4443febb5e78c56cd734d45784cd5702e90afc51","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Update design document for global hooks\n\nMake the design document consistent with the current global post hooks\nimplementation.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/4443febb5e78c56cd734d45784cd5702e90afc51"},{"sha":"8c4cbebbafc245296d4647b6a4b84295f6b90760","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Add QA tests for global hooks\n\nTest 3 main cases of global post hooks usage:\n  - successful LU execution;\n  - LU with the prerequisites failed;\n  - disappeared LU process.\nAll the tests are performed on the master node.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Hrvoje Ribicic <riba@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/8c4cbebbafc245296d4647b6a4b84295f6b90760"},{"sha":"3e6e3a0789671871c1d60016ff8670b128f565f9","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Add unit tests for global hooks\n\nThe tests check the following:\n  - global hooks should be run on the master node even in case of empty\n    nodes list;\n  - global hooks should be run on the master node separately from\n    the other nodes;\n  - the environmental variable IS_MASTER should be set to \"master\" when\n    executing on the master node;\n  - the environmental variable IS_MASTER should be set to \"not_master\" when\n    executing on the other nodes;\n  - for the post hooks *status* variable should be set correctly;\n  - the hooks path should be set to GLOBAL_HOOKS_DIR;\n  - phase variable should be set correctly.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Helga Velroyen <helgav@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/3e6e3a0789671871c1d60016ff8670b128f565f9"},{"sha":"cdc923afa4a2751d331099422199ee173def61c2","author":{"email":"c100474c6090841e9d55cde74d38d81efd269b8d@google.com","name":"Oleg Ponomarev"},"message":"Fix node root path in global hooks QA tests\n\nAs the root path is different on a virtual cluster, it is modified with\nqa_utils.MakeNodePath.\n\nSigned-off-by: Oleg Ponomarev <oponomarev@google.com>\nReviewed-by: Lisa Velden <velden@google.com>","distinct":true,"url":"https://api.github.com/repos/onponomarev/ganeti/commits/cdc923afa4a2751d331099422199ee173def61c2"}]}