)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"228cc9c8ab2dc1c51cb5542bde513c1fa2883bcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fd34679b_076b7e78","updated":"2024-03-27 16:58:28.000000000","message":"recheck\n\nJobs now non-voting","commit_id":"7d3962cad72ce34d11a0dea048bf4c91243d44c9"},{"author":{"_account_id":36781,"name":"Massimiliano Favaro-Bedford","display_name":"Max","email":"max@stackhpc.com","username":"MaxBed4d"},"change_message_id":"cee65179de17383556bb83652487acfda2d08e9b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"04954def_5bb8faff","updated":"2024-08-12 11:34:38.000000000","message":"Nice way to avoid having potential compatibility issues, my only question is whether all checks are tested before failing early? Meaning that it is able to spit out a \"list\" of all the issues with the Kayobe path, rather than having to fail *x*-number of times in a row. \n\nAlso, if someone were, for example, wanting to test a repo version of Kayobe on a known working Kayobe environment to see if it would break it, would there be a way to bypass one (or more) of the checks?\n\nHowever, if these cases aren\u0027t applicable, then feel free to disregard them 😊","commit_id":"1b0b1b03ca0a4c640fb170dedbdf459acfbd4894"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8348e97c912b432a3051205859029cf66f9a2c40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b522a454_f0beea44","updated":"2024-08-21 11:35:47.000000000","message":"recheck\n\nCI fixed","commit_id":"8930a3c1066e47c743e8f8bf2e6bd1ba03487aa7"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"048ff22daa5b9435092077469736b80922aa7a48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4e2d3890_f4c61623","updated":"2024-08-30 15:23:25.000000000","message":"recheck: failed to download the file: \u003curlopen error timed out\u003e","commit_id":"8930a3c1066e47c743e8f8bf2e6bd1ba03487aa7"}],"kayobe/ansible.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3be32192029f81167d5cf611e8fc726529bf8462","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                  parsed_args.config_path, result[\"message\"])"},{"line_number":118,"context_line":"        sys.exit(1)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    utils.validate_config_path(parsed_args.config_path, None)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if parsed_args.environment and parsed_args.environment \u003d\u003d \"kayobe\":"},{"line_number":123,"context_line":"        LOG.error(\"The environment name \u0027kayobe\u0027 is reserved for internal \""}],"source_content_type":"text/x-python","patch_set":2,"id":"13625214_3eb7c39d","line":120,"updated":"2024-03-27 17:11:34.000000000","message":"Consider moving to pre-hook as in https://review.opendev.org/c/openstack/kayobe/+/904224?","commit_id":"7d3962cad72ce34d11a0dea048bf4c91243d44c9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"828cb223ef4b076da63a5bef9b259b3f6d140d9c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                  parsed_args.config_path, result[\"message\"])"},{"line_number":118,"context_line":"        sys.exit(1)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    utils.validate_config_path(parsed_args.config_path, None)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if parsed_args.environment and parsed_args.environment \u003d\u003d \"kayobe\":"},{"line_number":123,"context_line":"        LOG.error(\"The environment name \u0027kayobe\u0027 is reserved for internal \""}],"source_content_type":"text/x-python","patch_set":2,"id":"924286ef_4257c6aa","line":120,"in_reply_to":"0db5f0ec_0e863f1d","updated":"2024-05-20 10:47:51.000000000","message":"Moved to a pre-hook.","commit_id":"7d3962cad72ce34d11a0dea048bf4c91243d44c9"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"2fdba507e31794a40eb1840241a441c209d56230","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                  parsed_args.config_path, result[\"message\"])"},{"line_number":118,"context_line":"        sys.exit(1)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    utils.validate_config_path(parsed_args.config_path, None)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if parsed_args.environment and parsed_args.environment \u003d\u003d \"kayobe\":"},{"line_number":123,"context_line":"        LOG.error(\"The environment name \u0027kayobe\u0027 is reserved for internal \""}],"source_content_type":"text/x-python","patch_set":2,"id":"22f07ac4_6cda6d5d","line":120,"in_reply_to":"13625214_3eb7c39d","updated":"2024-03-27 21:19:05.000000000","message":"If you\u0027re asking me? I think hooks is a enduser story.","commit_id":"7d3962cad72ce34d11a0dea048bf4c91243d44c9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"301d5c6e35cefdabdf9ef540e98080469acf37b8","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                  parsed_args.config_path, result[\"message\"])"},{"line_number":118,"context_line":"        sys.exit(1)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    utils.validate_config_path(parsed_args.config_path, None)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if parsed_args.environment and parsed_args.environment \u003d\u003d \"kayobe\":"},{"line_number":123,"context_line":"        LOG.error(\"The environment name \u0027kayobe\u0027 is reserved for internal \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5dc73f6b_2e11cc6b","line":120,"in_reply_to":"22f07ac4_6cda6d5d","updated":"2024-03-28 09:17:42.000000000","message":"It wouldn\u0027t be exposed to users. It\u0027s just a place in the code where we can call into this function very early that applies to every command.\n\nThere might currently be some cases where this check is missed or not applied early enough (although I can\u0027t think of any).","commit_id":"7d3962cad72ce34d11a0dea048bf4c91243d44c9"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"673ca8ce9ae021917d386e24b01284eb8ad02548","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                  parsed_args.config_path, result[\"message\"])"},{"line_number":118,"context_line":"        sys.exit(1)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    utils.validate_config_path(parsed_args.config_path, None)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    if parsed_args.environment and parsed_args.environment \u003d\u003d \"kayobe\":"},{"line_number":123,"context_line":"        LOG.error(\"The environment name \u0027kayobe\u0027 is reserved for internal \""}],"source_content_type":"text/x-python","patch_set":2,"id":"0db5f0ec_0e863f1d","line":120,"in_reply_to":"5dc73f6b_2e11cc6b","updated":"2024-04-02 11:00:44.000000000","message":"One example is the galaxy installs i.e with kayobe control host bootstrap which would presumably be prevented if we moved it to where you suggested, but other than that, this is pretty handy - nice feature!","commit_id":"7d3962cad72ce34d11a0dea048bf4c91243d44c9"}],"kayobe/utils.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2388c4b84be5f06c588634aa240c88e43dc005bf","unresolved":true,"context_lines":[{"line_number":427,"context_line":"        # CalledProcessError: probably not in a git repository."},{"line_number":428,"context_line":"        return"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    repo_root \u003d repo_root.decode().strip()"},{"line_number":431,"context_line":"    if config_path:"},{"line_number":432,"context_line":"        repo_config_path \u003d os.path.join(repo_root, \"etc\", \"kayobe\")"},{"line_number":433,"context_line":"        if repo_config_path \u003d\u003d os.path.realpath(config_path):"},{"line_number":434,"context_line":"            return"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    if kolla_config_path:"},{"line_number":437,"context_line":"        repo_kolla_config_path \u003d os.path.join(repo_root, \"etc\", \"kolla\")"},{"line_number":438,"context_line":"        if repo_kolla_config_path \u003d\u003d os.path.realpath(kolla_config_path):"},{"line_number":439,"context_line":"            return"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # Paths did not match. Check that repo_root does not look like a Kayobe"},{"line_number":442,"context_line":"    # configuration repo."}],"source_content_type":"text/x-python","patch_set":4,"id":"35f47429_028afadb","line":439,"range":{"start_line":430,"start_character":0,"end_line":439,"end_character":18},"updated":"2024-05-30 10:09:50.000000000","message":"Shouldn\u0027t we check both paths if they are both set?","commit_id":"1b0b1b03ca0a4c640fb170dedbdf459acfbd4894"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"77fe4c870c85e0c39e247586c16245202c60b3e7","unresolved":true,"context_lines":[{"line_number":427,"context_line":"        # CalledProcessError: probably not in a git repository."},{"line_number":428,"context_line":"        return"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    repo_root \u003d repo_root.decode().strip()"},{"line_number":431,"context_line":"    if config_path:"},{"line_number":432,"context_line":"        repo_config_path \u003d os.path.join(repo_root, \"etc\", \"kayobe\")"},{"line_number":433,"context_line":"        if repo_config_path \u003d\u003d os.path.realpath(config_path):"},{"line_number":434,"context_line":"            return"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    if kolla_config_path:"},{"line_number":437,"context_line":"        repo_kolla_config_path \u003d os.path.join(repo_root, \"etc\", \"kolla\")"},{"line_number":438,"context_line":"        if repo_kolla_config_path \u003d\u003d os.path.realpath(kolla_config_path):"},{"line_number":439,"context_line":"            return"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # Paths did not match. Check that repo_root does not look like a Kayobe"},{"line_number":442,"context_line":"    # configuration repo."}],"source_content_type":"text/x-python","patch_set":4,"id":"45eaa90b_c0bcd7e2","line":439,"range":{"start_line":430,"start_character":0,"end_line":439,"end_character":18},"in_reply_to":"35f47429_028afadb","updated":"2024-08-20 09:47:27.000000000","message":"I\u0027ve scratched my head over this a bit. I\u0027m now wondering whether kolla_config_path has any value here. All current CLI commands are subclasses of KayobeAnsibleMixin, so should have a config_path attribute.\n\nIn theory it should be possible to point KOLLA_CONFIG_PATH somewhere outside of kayobe config.\n\n    (config_path in repo_root)    (kolla_config_path in repo_root)    Situation    Ok?\n    yes    yes    Executing from config_path    yes\n    no     no     Executing from outside config_path    maybe\n    yes    no     Executing from config_path, kolla_config_path pointing somewhere else    yes\n    no     yes    Executing from kolla_config_path, config_path pointing somewhere else    maybe\n\nSo as suspected, I think kolla_config_path is a \"don\u0027t care\" here.","commit_id":"1b0b1b03ca0a4c640fb170dedbdf459acfbd4894"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"1f638531ddb963608431e484a9e5884828deae11","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        # CalledProcessError: probably not in a git repository."},{"line_number":428,"context_line":"        return"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    repo_root \u003d repo_root.decode().strip()"},{"line_number":431,"context_line":"    if config_path:"},{"line_number":432,"context_line":"        repo_config_path \u003d os.path.join(repo_root, \"etc\", \"kayobe\")"},{"line_number":433,"context_line":"        if repo_config_path \u003d\u003d os.path.realpath(config_path):"},{"line_number":434,"context_line":"            return"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    if kolla_config_path:"},{"line_number":437,"context_line":"        repo_kolla_config_path \u003d os.path.join(repo_root, \"etc\", \"kolla\")"},{"line_number":438,"context_line":"        if repo_kolla_config_path \u003d\u003d os.path.realpath(kolla_config_path):"},{"line_number":439,"context_line":"            return"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # Paths did not match. Check that repo_root does not look like a Kayobe"},{"line_number":442,"context_line":"    # configuration repo."}],"source_content_type":"text/x-python","patch_set":4,"id":"7d7d39d8_ba4408e3","line":439,"range":{"start_line":430,"start_character":0,"end_line":439,"end_character":18},"in_reply_to":"45eaa90b_c0bcd7e2","updated":"2024-09-13 15:38:02.000000000","message":"Acknowledged","commit_id":"1b0b1b03ca0a4c640fb170dedbdf459acfbd4894"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2388c4b84be5f06c588634aa240c88e43dc005bf","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            return"},{"line_number":452,"context_line":"        gerrit_project \u003d os.path.basename(gerrit_project)"},{"line_number":453,"context_line":"        gerrit_project \u003d os.path.splitext(gerrit_project)[0]"},{"line_number":454,"context_line":"        if gerrit_project \u003d\u003d \u0027kayobe-config\u0027:"},{"line_number":455,"context_line":"            LOG.error(\"Executing from within a different Kayobe configuration \""},{"line_number":456,"context_line":"                      \"repository is not allowed\")"},{"line_number":457,"context_line":"            sys.exit(1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"17042102_88f34f82","line":457,"range":{"start_line":454,"start_character":0,"end_line":457,"end_character":23},"updated":"2024-05-30 10:09:50.000000000","message":"I initially thought the function would fail in the case of AUFN where we clone kayobe-config in a subdirectory of $PWD, but the repo_root would be kayobe, not kayobe-config, so I believe it will work.","commit_id":"1b0b1b03ca0a4c640fb170dedbdf459acfbd4894"}]}
