)]}'
{"README.md":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"070c73b11b89ec125cf4ef0e0d2977f321dce614","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"The file is processed strictly in sequence.  Meta-sections may be specified more than once, if any settings are duplicated the last to appear in the file will be used."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"  [[nova|$NOVA_CONF]]"},{"line_number":264,"context_line":"  [DEFAULT]"},{"line_number":265,"context_line":"  use_syslog \u003d True"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAS3%2F%2F6aQ%3D","line":263,"updated":"2013-09-17 09:55:34.000000000","message":"I think it\u0027s worth saying here that you can (and probably should?) use the variable for the config file so if paths are updated the the script still works.\nAlthough I\u0027d also like some nice error messages if you use an environment variable that doesn\u0027t exist","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"}],"lib/config":[{"author":{"_account_id":6820,"name":"Francois Eleouet","email":"f.eleouet@gmail.com","username":"fanchon"},"change_message_id":"77573a82c6b94651aeee99c2531792780fe88ee5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            section\u003d$1"},{"line_number":91,"context_line":"            next"},{"line_number":92,"context_line":"        }"},{"line_number":93,"context_line":"        /^.+/ {"},{"line_number":94,"context_line":"            split($0, d, \" *\u003d *\")"},{"line_number":95,"context_line":"            print \"iniset \" configfile \" \" section \" \" d[1] \" \\\"\" d[2] \"\\\"\""},{"line_number":96,"context_line":"        }"}],"source_content_type":"text/x-ini","patch_set":5,"id":"AAAAS3%2F%2FZ34%3D","line":93,"updated":"2013-09-27 11:52:38.000000000","message":"Shouldn\u0027t commented lines be filtered out?","commit_id":"3cb214212c7dc90876c25235f28ed3d3dae5c848"}],"stack.sh":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7d2e9367956ebcafcda1168ebf29617c9bc06295","unresolved":false,"context_lines":[{"line_number":42,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Check for a ``localrc`` section embedded in ``local.conf`` and extract if"},{"line_number":45,"context_line":"# ``localrc`` does not already exist"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if [[ ! -r localrc \u0026\u0026 -r local.conf ]]; then"},{"line_number":48,"context_line":"    LRC\u003d$(get_meta_section_files local.conf local)"}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F6Pw%3D","line":45,"updated":"2013-09-17 10:32:03.000000000","message":"If the localrc file exists, do we want to update these in the localrc file? Or is that an overkill?","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"070c73b11b89ec125cf4ef0e0d2977f321dce614","unresolved":false,"context_lines":[{"line_number":44,"context_line":"# Check for a ``localrc`` section embedded in ``local.conf`` and extract if"},{"line_number":45,"context_line":"# ``localrc`` does not already exist"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if [[ ! -r localrc \u0026\u0026 -r local.conf ]]; then"},{"line_number":48,"context_line":"    LRC\u003d$(get_meta_section_files local.conf local)"},{"line_number":49,"context_line":"    for lfile in $LRC; do"},{"line_number":50,"context_line":"        if [[ \"$lfile\" \u003d\u003d \"localrc\" ]]; then"}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F6ec%3D","line":47,"updated":"2013-09-17 09:55:34.000000000","message":"I\u0027d prefer this to always replace - and perhaps never create localrc (perhaps localrc.generated?).  If I make changes to local.conf I want them to be honoured - even if they are in localrc.\n\nATM it seems as though changes to other sections would be honoured, but not the localrc section.  That could cause lots of confusion particularly when replacing local.conf wholesale.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"138cacdedc218300d5415a0a54ffdbf5c77d6dba","unresolved":false,"context_lines":[{"line_number":44,"context_line":"# Check for a ``localrc`` section embedded in ``local.conf`` and extract if"},{"line_number":45,"context_line":"# ``localrc`` does not already exist"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if [[ ! -r localrc \u0026\u0026 -r local.conf ]]; then"},{"line_number":48,"context_line":"    LRC\u003d$(get_meta_section_files local.conf local)"},{"line_number":49,"context_line":"    for lfile in $LRC; do"},{"line_number":50,"context_line":"        if [[ \"$lfile\" \u003d\u003d \"localrc\" ]]; then"}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F5dY%3D","line":47,"in_reply_to":"AAAAS3%2F%2F6ec%3D","updated":"2013-09-17 22:13:50.000000000","message":"This is the biggest question I have about this change...I don\u0027t want to break anything that currently works and we have a strict no-modify-localrc-except-for-passwords policy.  Let\u0027s have this conversation in the ML thread (http://lists.openstack.org/pipermail/openstack-dev/2013-September/015019.html) so a wider audience can chime in.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"070c73b11b89ec125cf4ef0e0d2977f321dce614","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"    echo \""},{"line_number":1455,"context_line":"[[nova|\\$NOVA_CONF]]"},{"line_number":1456,"context_line":"[DEFAULT]"},{"line_number":1457,"context_line":"$EXTRA_OPTS"},{"line_number":1458,"context_line":"\""},{"line_number":1459,"context_line":"fi"},{"line_number":1460,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F6eM%3D","line":1457,"updated":"2013-09-17 09:55:34.000000000","message":"Will this work when we\u0027re using multiple EXTRA_OPTs?\nI haven\u0027t tested in-line, but EXTRA_OPTs will be an array and I think this will only output the first of them?\n\nI\u0027d rather either output everything or nothing and leave it as an exercise to the user to generate the actual values.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"138cacdedc218300d5415a0a54ffdbf5c77d6dba","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"    echo \""},{"line_number":1455,"context_line":"[[nova|\\$NOVA_CONF]]"},{"line_number":1456,"context_line":"[DEFAULT]"},{"line_number":1457,"context_line":"$EXTRA_OPTS"},{"line_number":1458,"context_line":"\""},{"line_number":1459,"context_line":"fi"},{"line_number":1460,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F5dE%3D","line":1457,"in_reply_to":"AAAAS3%2F%2F6eM%3D","updated":"2013-09-17 22:13:50.000000000","message":"Good point","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"070c73b11b89ec125cf4ef0e0d2977f321dce614","unresolved":false,"context_lines":[{"line_number":1480,"context_line":"[DEFAULT]"},{"line_number":1481,"context_line":"$Q_SRV_EXTRA_DEFAULT_OPTS"},{"line_number":1482,"context_line":"\""},{"line_number":1483,"context_line":"fi"},{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"# Indicate how long this took to run (bash maintained variable ``SECONDS``)"},{"line_number":1486,"context_line":"echo_summary \"stack.sh completed in $SECONDS seconds.\""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F6dg%3D","line":1483,"updated":"2013-09-17 09:55:34.000000000","message":"EXTRA_BAREMETAL_OPTS too?","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"138cacdedc218300d5415a0a54ffdbf5c77d6dba","unresolved":false,"context_lines":[{"line_number":1480,"context_line":"[DEFAULT]"},{"line_number":1481,"context_line":"$Q_SRV_EXTRA_DEFAULT_OPTS"},{"line_number":1482,"context_line":"\""},{"line_number":1483,"context_line":"fi"},{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"# Indicate how long this took to run (bash maintained variable ``SECONDS``)"},{"line_number":1486,"context_line":"echo_summary \"stack.sh completed in $SECONDS seconds.\""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F5bw%3D","line":1483,"in_reply_to":"AAAAS3%2F%2F6dg%3D","updated":"2013-09-17 22:13:50.000000000","message":"There are also a number of non-XXX_OPTS variables too that need to be identified.  I don\u0027t want to hold up this patch for that, but they\u0027ll all be listed before they get removed.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":6820,"name":"Francois Eleouet","email":"f.eleouet@gmail.com","username":"fanchon"},"change_message_id":"e3f5ba7597db4573888d40140247ba95e24e61c1","unresolved":false,"context_lines":[{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"# Apply configuration from local.conf if it exists for layer 2 services"},{"line_number":1185,"context_line":"# Phase: post-config"},{"line_number":1186,"context_line":"merge_config_group local.conf post-config"},{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"# Launch Services"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAATH%2F%2FqWQ%3D","line":1186,"updated":"2013-10-11 15:32:46.000000000","message":"\"$TOP_DIR/local.conf\" may be used here instead: on compute node, with \"ENABLED_SERVICES\u003dn-cpu,q-agt\", $PWD\u003d/opt/stack/nova at this stage, this may be the cause of this issue mathieu described in its previous comment.","commit_id":"00761b208be59c8e48ab21efe0191100dba71602"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bc47f9af5a4422bf81ebe4d6e2f7c94ee9a42ee1","unresolved":false,"context_lines":[{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"# Apply configuration from local.conf if it exists for layer 2 services"},{"line_number":1185,"context_line":"# Phase: post-config"},{"line_number":1186,"context_line":"merge_config_group local.conf post-config"},{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"# Launch Services"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAATH%2F%2Fp%2BY%3D","line":1186,"in_reply_to":"AAAATH%2F%2FqWQ%3D","updated":"2013-10-11 16:44:01.000000000","message":"Good catch...it should be that way in all uses...","commit_id":"00761b208be59c8e48ab21efe0191100dba71602"}],"tests/meta_config.sh":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"070c73b11b89ec125cf4ef0e0d2977f321dce614","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Tests for DevStack meta-config functions"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F6bE%3D","line":1,"updated":"2013-09-17 09:55:34.000000000","message":"I\u0027m nervous that this test wouldn\u0027t be included in the standard tests?  If so, it\u0027d be easy to forget to run the tests and therefore break things inadvertently?  I guess we don\u0027t have unit tests for devstack - I\u0027d be happy with a quick sanity check at the start of each run.  If we did that, it\u0027d force them to be kept short.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"138cacdedc218300d5415a0a54ffdbf5c77d6dba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Tests for DevStack meta-config functions"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F5fc%3D","line":1,"in_reply_to":"AAAAS3%2F%2F6bE%3D","updated":"2013-09-17 22:13:50.000000000","message":"Standard tests?  ;)  What is here could use some organizing, but this is intended only as unit tests for the common functions.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"070c73b11b89ec125cf4ef0e0d2977f321dce614","unresolved":false,"context_lines":[{"line_number":51,"context_line":"EXPECT_VAL\u003d\"test1a.conf"},{"line_number":52,"context_line":"test1b.conf"},{"line_number":53,"context_line":"test1c.conf\""},{"line_number":54,"context_line":"if [[ \"$VAL\" \u003d\u003d \"$EXPECT_VAL\" ]]; then"},{"line_number":55,"context_line":"    echo \"OK\""},{"line_number":56,"context_line":"else"},{"line_number":57,"context_line":"    echo \"failed: $VAL !\u003d $EXPECT_VAL\""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F6cM%3D","line":54,"updated":"2013-09-17 09:55:34.000000000","message":"I think it\u0027d be worth extracting this test to a function to avoid repetition?","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"138cacdedc218300d5415a0a54ffdbf5c77d6dba","unresolved":false,"context_lines":[{"line_number":51,"context_line":"EXPECT_VAL\u003d\"test1a.conf"},{"line_number":52,"context_line":"test1b.conf"},{"line_number":53,"context_line":"test1c.conf\""},{"line_number":54,"context_line":"if [[ \"$VAL\" \u003d\u003d \"$EXPECT_VAL\" ]]; then"},{"line_number":55,"context_line":"    echo \"OK\""},{"line_number":56,"context_line":"else"},{"line_number":57,"context_line":"    echo \"failed: $VAL !\u003d $EXPECT_VAL\""}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAAS3%2F%2F5fA%3D","line":54,"in_reply_to":"AAAAS3%2F%2F6cM%3D","updated":"2013-09-17 22:13:50.000000000","message":"Probably.  And then a bit more of an actual framework.  And then...  it\u0027s just time.","commit_id":"b28f391f0bcc7261aecb2f1852fb6f753ffe7a3a"}]}
