)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a0911750eeb408c690f7e2a491941dfb8bcdfb23","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In an editable install, e.g using `pip install -e .`, data_files are not"},{"line_number":14,"context_line":"installed into the virtualenv. Instead, we must follow the egg-link file"},{"line_number":15,"context_line":"to find out the actaul location."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Story: 2004252"},{"line_number":18,"context_line":"Task: 27787"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"dfd5e7cf_d5d5c744","line":15,"range":{"start_line":15,"start_character":16,"end_line":15,"end_character":22},"updated":"2019-01-09 15:56:51.000000000","message":"micronit: actual","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"}],"dev/functions":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a0911750eeb408c690f7e2a491941dfb8bcdfb23","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    source \"${KAYOBE_CONFIG_SOURCE_PATH}/kayobe-env\""},{"line_number":146,"context_line":"    # FIXME: it shouldn\u0027t matter where we run kayobe from"},{"line_number":147,"context_line":"    cd /tmp"},{"line_number":148,"context_line":"    #cd \"${KAYOBE_SOURCE_PATH}\""},{"line_number":149,"context_line":"}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"function run_kayobe {"}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"dfd5e7cf_9512df08","line":148,"updated":"2019-01-09 15:56:51.000000000","message":"For the Vagrant/development use case, would an editable installation be the right thing to do here? Any idea what happens if you do a normal install then upgrade to editable?","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"b576017a70b299d0fed890d279125fe0b9241279","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    source \"${KAYOBE_CONFIG_SOURCE_PATH}/kayobe-env\""},{"line_number":146,"context_line":"    # FIXME: it shouldn\u0027t matter where we run kayobe from"},{"line_number":147,"context_line":"    cd /tmp"},{"line_number":148,"context_line":"    #cd \"${KAYOBE_SOURCE_PATH}\""},{"line_number":149,"context_line":"}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"function run_kayobe {"}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"dfd5e7cf_e6793f93","line":148,"in_reply_to":"dfd5e7cf_9512df08","updated":"2019-01-11 18:01:38.000000000","message":"Since pip just uninstalls the old package before upgrading, this should function as expected. The old ansible galaxy roles will be left in place in the venv, but will not be used since the egg-link will be found and playbooks will get a path relative to the source checkout.","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a1a3627f4eb39cf57d77d9223bc450395d2ce3a6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    if [ ! -d \"${KAYOBE_VENV_PATH}/share/kayobe/ansible\" ]; then"},{"line_number":155,"context_line":"        cd \"${KAYOBE_SOURCE_PATH}\""},{"line_number":156,"context_line":"    else"},{"line_number":157,"context_line":"        # kayobe should still be able to function when the current working directory"},{"line_number":158,"context_line":"        # is not the source checkout"},{"line_number":159,"context_line":"        cd /tmp"},{"line_number":160,"context_line":"    fi"},{"line_number":161,"context_line":"}"},{"line_number":162,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"dfd5e7cf_481843d2","line":159,"range":{"start_line":157,"start_character":7,"end_line":159,"end_character":15},"updated":"2019-01-10 17:27:32.000000000","message":"We should probably remove this once it has proven that this works.","commit_id":"d50d65379552499b26f8a9b363f7fe864fa498fe"}],"kayobe/ansible.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a0911750eeb408c690f7e2a491941dfb8bcdfb23","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    \"\"\""},{"line_number":233,"context_line":"    LOG.info(\"Installing galaxy role dependencies from kayobe\")"},{"line_number":234,"context_line":"    requirements \u003d utils.get_data_files_path(\"requirements.yml\")"},{"line_number":235,"context_line":"    roles_destination \u003d utils.get_data_files_path(\u0027ansible\u0027, \u0027roles\u0027)"},{"line_number":236,"context_line":"    utils.galaxy_install(requirements, roles_destination, force\u003dforce)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    # Check for requirements in kayobe configuration."}],"source_content_type":"text/x-python","patch_set":8,"id":"dfd5e7cf_f59ecb61","line":235,"updated":"2019-01-09 15:56:51.000000000","message":"I think we\u0027ll need to be careful to test various upgrade paths, and ensure that the galaxy roles outlive the python package. i.e. a pip uninstall or pip install -U doesn\u0027t remove the galaxy roles.","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"b576017a70b299d0fed890d279125fe0b9241279","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    \"\"\""},{"line_number":233,"context_line":"    LOG.info(\"Installing galaxy role dependencies from kayobe\")"},{"line_number":234,"context_line":"    requirements \u003d utils.get_data_files_path(\"requirements.yml\")"},{"line_number":235,"context_line":"    roles_destination \u003d utils.get_data_files_path(\u0027ansible\u0027, \u0027roles\u0027)"},{"line_number":236,"context_line":"    utils.galaxy_install(requirements, roles_destination, force\u003dforce)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    # Check for requirements in kayobe configuration."}],"source_content_type":"text/x-python","patch_set":8,"id":"dfd5e7cf_66654fe1","line":235,"in_reply_to":"dfd5e7cf_f59ecb61","updated":"2019-01-11 18:01:38.000000000","message":"The galaxy roles are left in place since they are not part of the MANIFEST. The roles from the source checkout are removed.","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"}],"kayobe/cli/commands.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"9c9090569b8837c6cae88c03832f5ca68624b447","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        # If necessary, allocate IP addresses for the discovered hosts."},{"line_number":596,"context_line":"        self.run_kayobe_playbook(parsed_args,"},{"line_number":597,"context_line":"                                 os.path.join(_BASE_PATH, \"ansible\", \"ip-allocation.yml\"))"},{"line_number":598,"context_line":"        # Now populate the Kolla Ansible and Bifrost inventories."},{"line_number":599,"context_line":"        self.run_kayobe_playbook(parsed_args,"},{"line_number":600,"context_line":"                                 os.path.join(_BASE_PATH, \"ansible\", \"kolla-bifrost-hostvars.yml\"))"},{"line_number":601,"context_line":"        self.run_kayobe_playbook(parsed_args, os.path.join(_BASE_PATH, \"ansible\", \"kolla-ansible.yml\"),"},{"line_number":602,"context_line":"                                 tags\u003d\"config\")"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"class OvercloudIntrospectionDataSave(KayobeAnsibleMixin, VaultMixin, Command):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a7666952","line":602,"range":{"start_line":598,"start_character":8,"end_line":602,"end_character":47},"updated":"2018-12-21 14:38:00.000000000","message":"Where have these gone?","commit_id":"0442ff4d9f2eaaddf39e0fe93a4e0ca92f05fc37"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"9c9090569b8837c6cae88c03832f5ca68624b447","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            extra_vars[\"physical_network_interface_description_limit\"] \u003d ("},{"line_number":263,"context_line":"                parsed_args.interface_description_limit)"},{"line_number":264,"context_line":"        self.run_kayobe_playbook(parsed_args,"},{"line_number":265,"context_line":"                                 utils.get_data_files_path("},{"line_number":266,"context_line":"                                     \u0027ansible\u0027,"},{"line_number":267,"context_line":"                                     \u0027physical-network.yml\u0027),"},{"line_number":268,"context_line":"                                 limit\u003dparsed_args.group,"},{"line_number":269,"context_line":"                                 extra_vars\u003dextra_vars)"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_6775b1fe","line":267,"range":{"start_line":265,"start_character":33,"end_line":267,"end_character":60},"updated":"2018-12-21 14:38:00.000000000","message":"_build_playbook_list?","commit_id":"4c40d08d7f63800d620d41ec3a9666a1a89cee49"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a0911750eeb408c690f7e2a491941dfb8bcdfb23","unresolved":false,"context_lines":[{"line_number":26,"context_line":"def _build_playbook_list(*playbooks):"},{"line_number":27,"context_line":"    \"\"\"Return a list of names of playbook files given their basenames.\"\"\""},{"line_number":28,"context_line":"    return ["},{"line_number":29,"context_line":"        utils.get_data_files_path(\"ansible\", \"%s.yml\" % playbook)"},{"line_number":30,"context_line":"        for playbook in playbooks"},{"line_number":31,"context_line":"    ]"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfd5e7cf_f5c56b3d","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":65},"updated":"2019-01-09 15:56:51.000000000","message":"You could factor this out into a _get_playbook_path() function, and use that to DRY out some of the calls to get_data_files_path. (in a later review, if you prefer).","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"}],"kayobe/utils.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a0911750eeb408c690f7e2a491941dfb8bcdfb23","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    # Detect editable pip install / python setup.py develop and use a path"},{"line_number":33,"context_line":"    # relative to the source directory"},{"line_number":34,"context_line":"    egg_glob \u003d os.path.join("},{"line_number":35,"context_line":"        sys.prefix, \u0027lib*\u0027, \u0027*\u0027, \u0027site-packages\u0027, \u0027kayobe.egg-link\u0027"},{"line_number":36,"context_line":"    )"},{"line_number":37,"context_line":"    egg_link \u003d glob.glob(egg_glob)"},{"line_number":38,"context_line":"    if egg_link:"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfd5e7cf_15e02f96","line":35,"range":{"start_line":35,"start_character":28,"end_line":35,"end_character":31},"updated":"2019-01-09 15:56:51.000000000","message":"Could this be made more efficient by using \u0027python*\u0027?","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a0911750eeb408c690f7e2a491941dfb8bcdfb23","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    # Detect editable pip install / python setup.py develop and use a path"},{"line_number":33,"context_line":"    # relative to the source directory"},{"line_number":34,"context_line":"    egg_glob \u003d os.path.join("},{"line_number":35,"context_line":"        sys.prefix, \u0027lib*\u0027, \u0027*\u0027, \u0027site-packages\u0027, \u0027kayobe.egg-link\u0027"},{"line_number":36,"context_line":"    )"},{"line_number":37,"context_line":"    egg_link \u003d glob.glob(egg_glob)"},{"line_number":38,"context_line":"    if egg_link:"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfd5e7cf_b5f04369","line":35,"range":{"start_line":35,"start_character":33,"end_line":35,"end_character":48},"updated":"2019-01-09 15:56:51.000000000","message":"Will this work on Ubuntu/Debian, where they use dist-packages?","commit_id":"1ad8bfb7f8232b8dd42ce82b25c951f73e3e9aed"}],"releasenotes/notes/package-runtime-files-in-python-package-c3dda2bd32844fdf.yaml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a1a3627f4eb39cf57d77d9223bc450395d2ce3a6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"upgrade:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Kayobe will no longer search the current working directory when looking for"},{"line_number":11,"context_line":"    ansible playbooks. When using ``kayobe playbook run``, you must specify the"},{"line_number":12,"context_line":"    absolute path of the playbook that you want to run."},{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    Modifications to the Kayobe source tree will no longer have an immediate"},{"line_number":15,"context_line":"    effect. This is because the ansible playbooks are now shipped as part of the"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"dfd5e7cf_8872ab10","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":55},"updated":"2019-01-10 17:27:32.000000000","message":"Hmm, this makes running kayobe playbooks quite clunky, as you need to know the path in the virtualenv. Perhaps that\u0027s ok. It might be nice to make relative paths work though, if that\u0027s possible?","commit_id":"d50d65379552499b26f8a9b363f7fe864fa498fe"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"b576017a70b299d0fed890d279125fe0b9241279","unresolved":false,"context_lines":[{"line_number":8,"context_line":"upgrade:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Kayobe will no longer search the current working directory when looking for"},{"line_number":11,"context_line":"    ansible playbooks. When using ``kayobe playbook run``, you must specify the"},{"line_number":12,"context_line":"    absolute path of the playbook that you want to run."},{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    Modifications to the Kayobe source tree will no longer have an immediate"},{"line_number":15,"context_line":"    effect. This is because the ansible playbooks are now shipped as part of the"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bfdaf3ff_eccb961b","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":55},"in_reply_to":"dfd5e7cf_8872ab10","updated":"2019-01-11 18:01:38.000000000","message":"I was wrong about this. Turns out playbook run doesn\u0027t actually call get_data_files_path, so it turns out both relative and absolute paths work as expected.","commit_id":"d50d65379552499b26f8a9b363f7fe864fa498fe"}],"setup.cfg":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"77fba9bfd9bc8dc6a094308f38366c65d84eb304","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    # the above include will not include all roles, tested with:"},{"line_number":27,"context_line":"    # python-setuptools-0.9.8-7.el7.noarch, explicitly include eveything in"},{"line_number":28,"context_line":"    # the roles directory aswell."},{"line_number":29,"context_line":"    share/kayobe/ansible/roles \u003d ansible/roles/*"},{"line_number":30,"context_line":"    share/kayobe/doc \u003d doc/*"},{"line_number":31,"context_line":"    share/kayobe/etc_examples \u003d etc/*"},{"line_number":32,"context_line":"    share/kayobe \u003d setup.cfg"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"3f79a3b5_be050f69","line":29,"updated":"2018-12-21 18:30:17.000000000","message":"Do we need to add other directories? Kolla ansible only specifies ansible/*.","commit_id":"fb6bfef63d1aef718683d5d011f3319a3b4989cf"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"d83da4f7924a03d3f1524e6a64fcb629f463f083","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    # the above include will not include all roles, tested with:"},{"line_number":27,"context_line":"    # python-setuptools-0.9.8-7.el7.noarch, explicitly include eveything in"},{"line_number":28,"context_line":"    # the roles directory aswell."},{"line_number":29,"context_line":"    share/kayobe/ansible/roles \u003d ansible/roles/*"},{"line_number":30,"context_line":"    share/kayobe/doc \u003d doc/*"},{"line_number":31,"context_line":"    share/kayobe/etc_examples \u003d etc/*"},{"line_number":32,"context_line":"    share/kayobe \u003d setup.cfg"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"dfd5e7cf_68455570","line":29,"in_reply_to":"3f79a3b5_be050f69","updated":"2019-01-07 13:31:17.000000000","message":"It looks like setuputils renames kolla-ansible to kolla-share without this. I\u0027m not sure if this is a bug or a feature. I created a bug report, see: https://github.com/pypa/setuptools/issues/1629","commit_id":"fb6bfef63d1aef718683d5d011f3319a3b4989cf"}]}
