)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"324a5fec55db25ee3c562bcd1d1a16580ebb621d","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2022-09-16 16:12:24 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added --skip-hooks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I4f2176aa056fec62e31d07140e3d05779480a93d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e3b7b85e_a9a1cd57","line":8,"updated":"2022-09-20 10:02:19.000000000","message":"Story: 2009241\nTask: 43390","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"8ee85a63cb015798f48da07b60fec64f77041a02","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2022-09-16 16:12:24 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added --skip-hooks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I4f2176aa056fec62e31d07140e3d05779480a93d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8b3cfb92_48b0e5b3","line":8,"in_reply_to":"e3b7b85e_a9a1cd57","updated":"2022-09-22 15:17:49.000000000","message":"Done","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f64bafc67473deab92f52defedcbb458afcedc96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7384ce4d_629b100e","updated":"2022-09-20 10:00:57.000000000","message":"Could you add a release note? https://docs.openstack.org/kayobe/latest/contributor/release-notes.html","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"107d520de6bcdd4f49307758c84ffaae851834aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"39f2b612_467f5649","updated":"2022-10-03 14:35:13.000000000","message":"Code looks good. Could you add a test to TestHookDispatcher in kayobe/tests/unit/cli/test_commands.py?","commit_id":"484559f55a578c07c882e2449fdf1a0b2e6eb93d"}],"doc/source/custom-ansible-playbooks.rst":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"9ebd581ec87d8fd4227a74c49bb2eb7d4c98e571","unresolved":true,"context_lines":[{"line_number":214,"context_line":"The sequence number for the ``foo.yml`` playbook is ``10``."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Hook execution can be disabled with ``--skip-hooks``. A pattern can optionally be supplied"},{"line_number":217,"context_line":"to only skip specific playbooks."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For example, if the following playbooks exist:"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f899c26_2313cbe2","line":217,"updated":"2022-09-20 10:00:32.000000000","message":"How do you skip all hooks?","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"8ee85a63cb015798f48da07b60fec64f77041a02","unresolved":false,"context_lines":[{"line_number":214,"context_line":"The sequence number for the ``foo.yml`` playbook is ``10``."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Hook execution can be disabled with ``--skip-hooks``. A pattern can optionally be supplied"},{"line_number":217,"context_line":"to only skip specific playbooks."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For example, if the following playbooks exist:"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"f9e5e4fa_2cfc4b03","line":217,"in_reply_to":"5f899c26_2313cbe2","updated":"2022-09-22 15:17:49.000000000","message":"The argument is no longer optional so I\u0027ve added that \"all\" will block everything","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"61ae4ed56ea8104337041c15643f89ac824b2bc9","unresolved":true,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"The sequence number for the ``foo.yml`` playbook is ``10``."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Hook execution can be disabled with ``--skip-hooks``. ``--skip-hooks all`` will halt hook execution altogether."},{"line_number":217,"context_line":"``--skip-hooks \u003cpattern\u003e`` will skip playbooks matching the ``\u003cpattern\u003e``."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For example, if the following playbooks exist:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f546a251_16cdb3ea","line":216,"range":{"start_line":216,"start_character":56,"end_line":216,"end_character":72},"updated":"2022-10-05 12:52:56.000000000","message":"Thoughts on making it so ``--skip-hooks`` without any arguments skips them all instead of using the magic `all` value?","commit_id":"d7069283fd89e6164414d83afa688c3d2afae48f"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"bac00079be487534c4d532b94700e2306371547c","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"The sequence number for the ``foo.yml`` playbook is ``10``."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Hook execution can be disabled with ``--skip-hooks``. ``--skip-hooks all`` will halt hook execution altogether."},{"line_number":217,"context_line":"``--skip-hooks \u003cpattern\u003e`` will skip playbooks matching the ``\u003cpattern\u003e``."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For example, if the following playbooks exist:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"63dca0d9_cb03612c","line":216,"range":{"start_line":216,"start_character":56,"end_line":216,"end_character":72},"in_reply_to":"1bb0dd9a_9bfddda9","updated":"2022-10-05 13:27:45.000000000","message":"Ahh, makes sense, thanks for pointing that out. Looks good to me then.","commit_id":"d7069283fd89e6164414d83afa688c3d2afae48f"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"7b9b83e4251df7f5a41b9a4fb863f5e96f15ca47","unresolved":true,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"The sequence number for the ``foo.yml`` playbook is ``10``."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Hook execution can be disabled with ``--skip-hooks``. ``--skip-hooks all`` will halt hook execution altogether."},{"line_number":217,"context_line":"``--skip-hooks \u003cpattern\u003e`` will skip playbooks matching the ``\u003cpattern\u003e``."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For example, if the following playbooks exist:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1bb0dd9a_9bfddda9","line":216,"range":{"start_line":216,"start_character":56,"end_line":216,"end_character":72},"in_reply_to":"f546a251_16cdb3ea","updated":"2022-10-05 13:04:15.000000000","message":"Used to have exactly that, however mark pointed out:\nOptional arguments can get a bit weird -\n kayobe playbook run --skip-hooks arg playbook.yml\nIs arg the name of a hook to skip, or a playbook to run?","commit_id":"d7069283fd89e6164414d83afa688c3d2afae48f"}],"kayobe/ansible.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"9ebd581ec87d8fd4227a74c49bb2eb7d4c98e571","unresolved":true,"context_lines":[{"line_number":77,"context_line":"                        action\u003d\"store_true\","},{"line_number":78,"context_line":"                        help\u003d\"only print names of tasks, don\u0027t run them, \""},{"line_number":79,"context_line":"                             \"note this has no affect on kolla-ansible.\")"},{"line_number":80,"context_line":"    parser.add_argument(\"-sh\", \"--skip-hooks\", action\u003d\"store\", nargs\u003d\"?\", "},{"line_number":81,"context_line":"                        default\u003d\"None\", const\u003d\"all\","},{"line_number":82,"context_line":"                        help\u003d\"disables hooks. Specify a pattern to skip\" "},{"line_number":83,"context_line":"                             \"specific playbooks\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"f4c631c1_5846746c","line":80,"range":{"start_line":80,"start_character":69,"end_line":80,"end_character":72},"updated":"2022-09-20 10:00:32.000000000","message":"Optional arguments can get a bit weird -\n\n kayobe playbook run --skip-hooks arg playbook.yml\n\nIs arg the name of a hook to skip, or a playbook to run?","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"8ee85a63cb015798f48da07b60fec64f77041a02","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                        action\u003d\"store_true\","},{"line_number":78,"context_line":"                        help\u003d\"only print names of tasks, don\u0027t run them, \""},{"line_number":79,"context_line":"                             \"note this has no affect on kolla-ansible.\")"},{"line_number":80,"context_line":"    parser.add_argument(\"-sh\", \"--skip-hooks\", action\u003d\"store\", nargs\u003d\"?\", "},{"line_number":81,"context_line":"                        default\u003d\"None\", const\u003d\"all\","},{"line_number":82,"context_line":"                        help\u003d\"disables hooks. Specify a pattern to skip\" "},{"line_number":83,"context_line":"                             \"specific playbooks\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"73945c20_b9077a88","line":80,"range":{"start_line":80,"start_character":69,"end_line":80,"end_character":72},"in_reply_to":"f4c631c1_5846746c","updated":"2022-09-22 15:17:49.000000000","message":"Fixed - No longer optional","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"04b3dc55155ce4616612d00f229e5bfcc96a63be","unresolved":true,"context_lines":[{"line_number":77,"context_line":"                        action\u003d\"store_true\","},{"line_number":78,"context_line":"                        help\u003d\"only print names of tasks, don\u0027t run them, \""},{"line_number":79,"context_line":"                             \"note this has no affect on kolla-ansible.\")"},{"line_number":80,"context_line":"    parser.add_argument(\"-sh\", \"--skip-hooks\", action\u003d\"store\", default\u003d\"None\","},{"line_number":81,"context_line":"                        help\u003d\"disables hooks. Specify a pattern to skip\""},{"line_number":82,"context_line":"                             \"specific playbooks. \\\"all\\\" skips all playbooks\")"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e08b6f7c_4f5e0f44","line":80,"range":{"start_line":80,"start_character":63,"end_line":80,"end_character":77},"updated":"2022-10-04 13:17:00.000000000","message":"This is a bit odd. I think if you drop this argument then the default value will be a proper None. You could handle that case in the hooks method, e.g.\n\n if filter and re.search...","commit_id":"a1b47f111a245d90fa3f51ed0cde8e878e06f30d"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"d4c0e258f0b245b71595fc58623707c7eeae7038","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                        action\u003d\"store_true\","},{"line_number":78,"context_line":"                        help\u003d\"only print names of tasks, don\u0027t run them, \""},{"line_number":79,"context_line":"                             \"note this has no affect on kolla-ansible.\")"},{"line_number":80,"context_line":"    parser.add_argument(\"-sh\", \"--skip-hooks\", action\u003d\"store\", default\u003d\"None\","},{"line_number":81,"context_line":"                        help\u003d\"disables hooks. Specify a pattern to skip\""},{"line_number":82,"context_line":"                             \"specific playbooks. \\\"all\\\" skips all playbooks\")"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ed54ffbe_3e1c826b","line":80,"range":{"start_line":80,"start_character":63,"end_line":80,"end_character":77},"in_reply_to":"e08b6f7c_4f5e0f44","updated":"2022-10-05 09:01:27.000000000","message":"Done","commit_id":"a1b47f111a245d90fa3f51ed0cde8e878e06f30d"}],"kayobe/cli/commands.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"9ebd581ec87d8fd4227a74c49bb2eb7d4c98e571","unresolved":true,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        config_path \u003d parsed_args.config_path"},{"line_number":208,"context_line":"        hooks \u003d self.hooks(config_path, target)"},{"line_number":209,"context_line":"        for hook in hooks:"},{"line_number":210,"context_line":"            if re.search(parsed_args.skip_hooks, hook):"},{"line_number":211,"context_line":"                hooks.remove(hook)"},{"line_number":212,"context_line":"                self.logger.debug(\"Skipping hook: %s\", hook) "}],"source_content_type":"text/x-python","patch_set":1,"id":"de2f557f_7327f74f","line":209,"range":{"start_line":209,"start_character":20,"end_line":209,"end_character":25},"updated":"2022-09-20 10:00:32.000000000","message":"Modifying a list while iterating over it can be dangerous","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"8ee85a63cb015798f48da07b60fec64f77041a02","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        config_path \u003d parsed_args.config_path"},{"line_number":208,"context_line":"        hooks \u003d self.hooks(config_path, target)"},{"line_number":209,"context_line":"        for hook in hooks:"},{"line_number":210,"context_line":"            if re.search(parsed_args.skip_hooks, hook):"},{"line_number":211,"context_line":"                hooks.remove(hook)"},{"line_number":212,"context_line":"                self.logger.debug(\"Skipping hook: %s\", hook) "}],"source_content_type":"text/x-python","patch_set":1,"id":"37f6e121_39671e5b","line":209,"range":{"start_line":209,"start_character":20,"end_line":209,"end_character":25},"in_reply_to":"de2f557f_7327f74f","updated":"2022-09-22 15:17:49.000000000","message":"now using list[:] which will create a new instance of the list to iterate through and edit the original","commit_id":"d7bd4b0329d69b076528e234ae5a4d0e84fba0ae"}],"kayobe/tests/unit/cli/test_commands.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"04b3dc55155ce4616612d00f229e5bfcc96a63be","unresolved":true,"context_lines":[{"line_number":2506,"context_line":"            \"z-test-alphabetical.yml\","},{"line_number":2507,"context_line":"        ]"},{"line_number":2508,"context_line":"        mock_path.realpath.side_effect \u003d lambda x: x"},{"line_number":2509,"context_line":"        actual \u003d dispatcher.hooks(\"config/path\", \"pre\", str(None))"},{"line_number":2510,"context_line":"        self.assertListEqual(actual, expected_result)"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"    @mock.patch(\u0027kayobe.cli.commands.os.path\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fd69fc0_bcfecc77","line":2509,"range":{"start_line":2509,"start_character":56,"end_line":2509,"end_character":65},"updated":"2022-10-04 13:17:00.000000000","message":"Also a bit odd","commit_id":"a1b47f111a245d90fa3f51ed0cde8e878e06f30d"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"d4c0e258f0b245b71595fc58623707c7eeae7038","unresolved":false,"context_lines":[{"line_number":2506,"context_line":"            \"z-test-alphabetical.yml\","},{"line_number":2507,"context_line":"        ]"},{"line_number":2508,"context_line":"        mock_path.realpath.side_effect \u003d lambda x: x"},{"line_number":2509,"context_line":"        actual \u003d dispatcher.hooks(\"config/path\", \"pre\", str(None))"},{"line_number":2510,"context_line":"        self.assertListEqual(actual, expected_result)"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"    @mock.patch(\u0027kayobe.cli.commands.os.path\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"e269b045_7ab7393a","line":2509,"range":{"start_line":2509,"start_character":56,"end_line":2509,"end_character":65},"in_reply_to":"9fd69fc0_bcfecc77","updated":"2022-10-05 09:01:27.000000000","message":"Done","commit_id":"a1b47f111a245d90fa3f51ed0cde8e878e06f30d"}]}
