)]}'
{"lib/heat":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"5c53afd33259495db2277f3d85cde6ae79cfb47e","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    # plugin; so it will only load one of them.  Linking them all"},{"line_number":178,"context_line":"    # to a common location with unique names avoids that type of"},{"line_number":179,"context_line":"    # collision, while still allowing the plugins to be edited in-tree."},{"line_number":180,"context_line":"    err_count\u003d0"},{"line_number":181,"context_line":"    HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":182,"context_line":"    if [ -n \"$ENABLE_HEAT_PLUGINS\" ]; then"},{"line_number":183,"context_line":"        mkdir -p $HEAT_PLUGIN_DIR"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a930d6b_81b0c08c","line":180,"updated":"2015-01-22 00:15:38.000000000","message":"You should use local declaration.\n\nerr_count\u003d0 -\u003e local err_count\u003d0","commit_id":"105c04a6b6f9c07f7011baccf562871991475e1a"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"da9570a6302f8fa7acfc4baf8b02ce0e2c6f5d51","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    # plugin; so it will only load one of them.  Linking them all"},{"line_number":178,"context_line":"    # to a common location with unique names avoids that type of"},{"line_number":179,"context_line":"    # collision, while still allowing the plugins to be edited in-tree."},{"line_number":180,"context_line":"    err_count\u003d0"},{"line_number":181,"context_line":"    HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":182,"context_line":"    if [ -n \"$ENABLE_HEAT_PLUGINS\" ]; then"},{"line_number":183,"context_line":"        mkdir -p $HEAT_PLUGIN_DIR"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a930d6b_f52afe8e","line":180,"in_reply_to":"1a930d6b_81b0c08c","updated":"2015-01-22 17:57:39.000000000","message":"Done","commit_id":"105c04a6b6f9c07f7011baccf562871991475e1a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"17032c745ba77dabd8e0e0cf37a8376aab50f64a","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    # location with unique names avoids that type of collision,"},{"line_number":180,"context_line":"    # while still allowing the plugins to be edited in-tree."},{"line_number":181,"context_line":"    local err_count\u003d0"},{"line_number":182,"context_line":"    HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":183,"context_line":"    if [ -n \"$ENABLE_HEAT_PLUGINS\" ]; then"},{"line_number":184,"context_line":"        mkdir -p $HEAT_PLUGIN_DIR"},{"line_number":185,"context_line":"        # Clean up cruft from any previous runs"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"1a930d6b_77715243","line":182,"updated":"2015-01-26 15:57:39.000000000","message":"All defaults should be defined lear the top of lib/heat","commit_id":"2922e37237629bf08b7f3ca6234f13d998e0411a"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"2777450dc087e1ac917f02cb614fae85f3c45be0","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    # location with unique names avoids that type of collision,"},{"line_number":180,"context_line":"    # while still allowing the plugins to be edited in-tree."},{"line_number":181,"context_line":"    local err_count\u003d0"},{"line_number":182,"context_line":"    HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":183,"context_line":"    if [ -n \"$ENABLE_HEAT_PLUGINS\" ]; then"},{"line_number":184,"context_line":"        mkdir -p $HEAT_PLUGIN_DIR"},{"line_number":185,"context_line":"        # Clean up cruft from any previous runs"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"1a930d6b_76e3ddd8","line":182,"in_reply_to":"1a930d6b_77715243","updated":"2015-01-27 17:47:37.000000000","message":"Done","commit_id":"2922e37237629bf08b7f3ca6234f13d998e0411a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"17032c745ba77dabd8e0e0cf37a8376aab50f64a","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    # while still allowing the plugins to be edited in-tree."},{"line_number":181,"context_line":"    local err_count\u003d0"},{"line_number":182,"context_line":"    HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":183,"context_line":"    if [ -n \"$ENABLE_HEAT_PLUGINS\" ]; then"},{"line_number":184,"context_line":"        mkdir -p $HEAT_PLUGIN_DIR"},{"line_number":185,"context_line":"        # Clean up cruft from any previous runs"},{"line_number":186,"context_line":"        rm -f $HEAT_PLUGIN_DIR/*"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"1a930d6b_6d60c701","line":183,"updated":"2015-01-26 15:57:39.000000000","message":"ENABLE_HEAT_PLUGINS needs to be initialized with nounset enabled, such as with this near the top of lib/heat:\n\n  ENABLE_HEAT_PLUGINS\u003d${ENABLE_HEAT_PLUGINS:-}","commit_id":"2922e37237629bf08b7f3ca6234f13d998e0411a"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"2777450dc087e1ac917f02cb614fae85f3c45be0","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    # while still allowing the plugins to be edited in-tree."},{"line_number":181,"context_line":"    local err_count\u003d0"},{"line_number":182,"context_line":"    HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":183,"context_line":"    if [ -n \"$ENABLE_HEAT_PLUGINS\" ]; then"},{"line_number":184,"context_line":"        mkdir -p $HEAT_PLUGIN_DIR"},{"line_number":185,"context_line":"        # Clean up cruft from any previous runs"},{"line_number":186,"context_line":"        rm -f $HEAT_PLUGIN_DIR/*"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"1a930d6b_d6d3b101","line":183,"in_reply_to":"1a930d6b_6d60c701","updated":"2015-01-27 17:47:37.000000000","message":"Done","commit_id":"2922e37237629bf08b7f3ca6234f13d998e0411a"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"d6f87f846b1ecf8d541d45c582259c4e5bd9bf4e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"HEAT_STACK_DOMAIN\u003d$(trueorfalse True HEAT_STACK_DOMAIN)"},{"line_number":48,"context_line":"HEAT_API_HOST\u003d${HEAT_API_HOST:-$HOST_IP}"},{"line_number":49,"context_line":"HEAT_API_PORT\u003d${HEAT_API_PORT:-8004}"},{"line_number":50,"context_line":"HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":51,"context_line":"HEAT_FUNCTIONAL_IMAGE_ELEMENTS\u003d${HEAT_FUNCTIONAL_IMAGE_ELEMENTS:-\\"},{"line_number":52,"context_line":"vm fedora selinux-permissive pypi  os-collect-config os-refresh-config \\"},{"line_number":53,"context_line":"os-apply-config heat-cfntools heat-config heat-config-cfn-init \\"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"da86d52c_08edb1ef","line":50,"updated":"2015-02-03 02:29:23.000000000","message":"why not configurable?","commit_id":"fd48f0dc277d26e793087274f067f06766ac8851"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"ce4d882e56fce9f8ca9ab5a5d42c78d7b21f5b6b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"HEAT_STACK_DOMAIN\u003d$(trueorfalse True HEAT_STACK_DOMAIN)"},{"line_number":48,"context_line":"HEAT_API_HOST\u003d${HEAT_API_HOST:-$HOST_IP}"},{"line_number":49,"context_line":"HEAT_API_PORT\u003d${HEAT_API_PORT:-8004}"},{"line_number":50,"context_line":"HEAT_PLUGIN_DIR\u003d$DATA_DIR/heat/plugins"},{"line_number":51,"context_line":"HEAT_FUNCTIONAL_IMAGE_ELEMENTS\u003d${HEAT_FUNCTIONAL_IMAGE_ELEMENTS:-\\"},{"line_number":52,"context_line":"vm fedora selinux-permissive pypi  os-collect-config os-refresh-config \\"},{"line_number":53,"context_line":"os-apply-config heat-cfntools heat-config heat-config-cfn-init \\"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"da86d52c_f013c463","line":50,"in_reply_to":"da86d52c_08edb1ef","updated":"2015-02-03 18:05:21.000000000","message":"Well, when you put it like that...","commit_id":"fd48f0dc277d26e793087274f067f06766ac8851"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"d6f87f846b1ecf8d541d45c582259c4e5bd9bf4e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        iniset $HEAT_CONF DEFAULT plugin_dirs $HEAT_PLUGIN_DIR"},{"line_number":207,"context_line":"    fi"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    for HEAT_PLUGIN in $ENABLE_HEAT_PLUGINS; do"},{"line_number":210,"context_line":"        if [ -d $HEAT_DIR/contrib/$HEAT_PLUGIN ]; then"},{"line_number":211,"context_line":"            setup_package $HEAT_DIR/contrib/$HEAT_PLUGIN -e"},{"line_number":212,"context_line":"            ln -s $HEAT_DIR/contrib/$HEAT_PLUGIN/$HEAT_PLUGIN/resources $HEAT_PLUGIN_DIR/$HEAT_PLUGIN"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"da86d52c_081691f1","line":209,"updated":"2015-02-03 02:29:23.000000000","message":"HEAT_PLUGIN shouldn\u0027t be caps","commit_id":"fd48f0dc277d26e793087274f067f06766ac8851"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"ce4d882e56fce9f8ca9ab5a5d42c78d7b21f5b6b","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        iniset $HEAT_CONF DEFAULT plugin_dirs $HEAT_PLUGIN_DIR"},{"line_number":207,"context_line":"    fi"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    for HEAT_PLUGIN in $ENABLE_HEAT_PLUGINS; do"},{"line_number":210,"context_line":"        if [ -d $HEAT_DIR/contrib/$HEAT_PLUGIN ]; then"},{"line_number":211,"context_line":"            setup_package $HEAT_DIR/contrib/$HEAT_PLUGIN -e"},{"line_number":212,"context_line":"            ln -s $HEAT_DIR/contrib/$HEAT_PLUGIN/$HEAT_PLUGIN/resources $HEAT_PLUGIN_DIR/$HEAT_PLUGIN"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"da86d52c_7007d41c","line":209,"in_reply_to":"da86d52c_081691f1","updated":"2015-02-03 18:05:21.000000000","message":"Fair enough.","commit_id":"fd48f0dc277d26e793087274f067f06766ac8851"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"d6f87f846b1ecf8d541d45c582259c4e5bd9bf4e","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            setup_package $HEAT_DIR/contrib/$HEAT_PLUGIN -e"},{"line_number":212,"context_line":"            ln -s $HEAT_DIR/contrib/$HEAT_PLUGIN/$HEAT_PLUGIN/resources $HEAT_PLUGIN_DIR/$HEAT_PLUGIN"},{"line_number":213,"context_line":"        else"},{"line_number":214,"context_line":"            : clear retval on the test so that we can roll up errors"},{"line_number":215,"context_line":"            err $LINENO \"Requested Heat plugin(${HEAT_PLUGIN}) not found.\""},{"line_number":216,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":217,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"da86d52c_08ff71ab","line":214,"updated":"2015-02-03 02:29:23.000000000","message":"#?","commit_id":"fd48f0dc277d26e793087274f067f06766ac8851"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"ce4d882e56fce9f8ca9ab5a5d42c78d7b21f5b6b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            setup_package $HEAT_DIR/contrib/$HEAT_PLUGIN -e"},{"line_number":212,"context_line":"            ln -s $HEAT_DIR/contrib/$HEAT_PLUGIN/$HEAT_PLUGIN/resources $HEAT_PLUGIN_DIR/$HEAT_PLUGIN"},{"line_number":213,"context_line":"        else"},{"line_number":214,"context_line":"            : clear retval on the test so that we can roll up errors"},{"line_number":215,"context_line":"            err $LINENO \"Requested Heat plugin(${HEAT_PLUGIN}) not found.\""},{"line_number":216,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":217,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"da86d52c_c4860165","line":214,"in_reply_to":"da86d52c_08ff71ab","updated":"2015-02-03 18:05:21.000000000","message":"# denotes a comment, and is ignored.  : is the \"null command\", and is essentially a built-in form of /bin/true.\n\nIt\u0027s in the POSIX standard, but nobody seems to know about it, so I\u0027ll add an explicit comment char (even though it\u0027s not needed, : eats all cmdline args) to tamp down the confusion.","commit_id":"fd48f0dc277d26e793087274f067f06766ac8851"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"0b4df6c11ad60a02100a77bc16689d207e0c42d4","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            setup_package $HEAT_DIR/contrib/$heat_plugin -e"},{"line_number":209,"context_line":"            ln -s $HEAT_DIR/contrib/$heat_plugin/$heat_plugin/resources $HEAT_PLUGIN_DIR/$heat_plugin"},{"line_number":210,"context_line":"        else"},{"line_number":211,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":212,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":213,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":214,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"da86d52c_c839d940","line":211,"updated":"2015-02-10 01:16:02.000000000","message":"oh, so you\u0027re resetting $? so the err call doesn\u0027t return and fail out due to \"set -e\"\n\ni think it\u0027s clearer to do \n\n err ... || true\n\nto avoid this","commit_id":"e2c54d2acaa3ac047e089b1f55cb791787307e47"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"0b4df6c11ad60a02100a77bc16689d207e0c42d4","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        else"},{"line_number":211,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":212,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":213,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":214,"context_line":"        fi"},{"line_number":215,"context_line":"    done"},{"line_number":216,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could be installed.\""}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"da86d52c_68838dcc","line":213,"updated":"2015-02-10 01:16:02.000000000","message":"devstack has a lot more err_count\u003d$((err_count + 1)) so prefer to see that","commit_id":"e2c54d2acaa3ac047e089b1f55cb791787307e47"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"0b4df6c11ad60a02100a77bc16689d207e0c42d4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":214,"context_line":"        fi"},{"line_number":215,"context_line":"    done"},{"line_number":216,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could be installed.\""},{"line_number":217,"context_line":"}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"# init_heat() - Initialize database"}],"source_content_type":"application/x-shellscript","patch_set":8,"id":"da86d52c_68b62d8c","line":216,"updated":"2015-02-10 01:16:02.000000000","message":"err_count can\u0027t actually be unset at this point, right?","commit_id":"e2c54d2acaa3ac047e089b1f55cb791787307e47"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"83a6270ebd623c7ba4177a8eeb5c9d5e5c3e0adc","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        else"},{"line_number":210,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":211,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"},{"line_number":214,"context_line":"    done"},{"line_number":215,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could be installed.\""}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"fa32b979_34a733a8","line":212,"updated":"2015-06-19 04:14:29.000000000","message":"so we should be running with set -e , which is going to fail out before this and invalidate this.  i\u0027d prefer to KISS and just fail when the first plugin fails to install, rather than try and install them all and report which don\u0027t work","commit_id":"29b1ee4fd73d81ef98b561fc0c6d0a6b6a303f1c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5c0a406fd5121f20cef6ee61580ec69df0ae7208","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            setup_package $HEAT_DIR/contrib/$heat_plugin -e"},{"line_number":208,"context_line":"            ln -s $HEAT_DIR/contrib/$heat_plugin/$heat_plugin/resources $HEAT_PLUGIN_DIR/$heat_plugin"},{"line_number":209,"context_line":"        else"},{"line_number":210,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":211,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"3a50d1a3_0bb3170b","line":210,"updated":"2015-07-23 08:29:04.000000000","message":"You don\u0027t this the colon at the beginning of the line","commit_id":"c5822370c8033d520fd844db5697e198083774d4"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"7357a61655dcdc0716c0fef83e6911a79dbf1917","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            setup_package $HEAT_DIR/contrib/$heat_plugin -e"},{"line_number":208,"context_line":"            ln -s $HEAT_DIR/contrib/$heat_plugin/$heat_plugin/resources $HEAT_PLUGIN_DIR/$heat_plugin"},{"line_number":209,"context_line":"        else"},{"line_number":210,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":211,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"3a50d1a3_d90ad078","line":210,"in_reply_to":"3a50d1a3_0bb3170b","updated":"2015-07-23 14:40:02.000000000","message":"Yes, I do, it\u0027s the null command:\n\nhttp://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html\n\nIt\u0027s resetting $?, just like the comment says.  The comment character is the unnecessary part, but I was asked to add it in an earlier review to reduce confusion.  Or something.","commit_id":"c5822370c8033d520fd844db5697e198083774d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5c0a406fd5121f20cef6ee61580ec69df0ae7208","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        else"},{"line_number":210,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":211,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"},{"line_number":214,"context_line":"    done"},{"line_number":215,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could not be installed.\""}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"3a50d1a3_4b8b5f1f","line":212,"updated":"2015-07-23 08:29:04.000000000","message":"Devstack coding style favors:\n\n  err_count\u003d$(($err_count + 1))","commit_id":"c5822370c8033d520fd844db5697e198083774d4"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"7357a61655dcdc0716c0fef83e6911a79dbf1917","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        else"},{"line_number":210,"context_line":"            : # clear retval on the test so that we can roll up errors"},{"line_number":211,"context_line":"            err $LINENO \"Requested Heat plugin(${heat_plugin}) not found.\""},{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"},{"line_number":214,"context_line":"    done"},{"line_number":215,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could not be installed.\""}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"3a50d1a3_3932d4a7","line":212,"in_reply_to":"3a50d1a3_4b8b5f1f","updated":"2015-07-23 14:40:02.000000000","message":"Agreed, devstack does lots of things wrong.  :-P","commit_id":"c5822370c8033d520fd844db5697e198083774d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5c0a406fd5121f20cef6ee61580ec69df0ae7208","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"},{"line_number":214,"context_line":"    done"},{"line_number":215,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could not be installed.\""},{"line_number":216,"context_line":"}"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"# init_heat() - Initialize database"}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"3a50d1a3_0be6b7e7","line":215,"updated":"2015-07-23 08:29:04.000000000","message":"[ ${err_count} -eq 0 ] is enough as you set a default value L196","commit_id":"c5822370c8033d520fd844db5697e198083774d4"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"7357a61655dcdc0716c0fef83e6911a79dbf1917","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            let err_count\u003d\"$err_count + 1\""},{"line_number":213,"context_line":"        fi"},{"line_number":214,"context_line":"    done"},{"line_number":215,"context_line":"    [ ${err_count:-0} -eq 0 ] || die $LINENO \"$err_count of the requested Heat plugins could not be installed.\""},{"line_number":216,"context_line":"}"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"# init_heat() - Initialize database"}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"3a50d1a3_19bfd861","line":215,"in_reply_to":"3a50d1a3_0be6b7e7","updated":"2015-07-23 14:40:02.000000000","message":"True, but I\u0027ve been hurt by bash before.  Suspenders-and-a-belt hurts nothing.","commit_id":"c5822370c8033d520fd844db5697e198083774d4"}]}
