)]}'
{"lib/heat":[{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"00d542ab1e36f1031fa4b37a4843587bafaf1127","unresolved":false,"context_lines":[{"line_number":33,"context_line":"HEATCLIENT_DIR\u003d$DEST/python-heatclient"},{"line_number":34,"context_line":"HEAT_AUTH_CACHE_DIR\u003d${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}"},{"line_number":35,"context_line":"HEAT_STANDALONE\u003d`trueorfalse False $HEAT_STANDALONE`"},{"line_number":36,"context_line":"HEAT_CONTRIB_DOCKER\u003d`trueorfalse False $HEAT_CONTRIB_DOCKER`"},{"line_number":37,"context_line":"HEAT_CONTRIB_RACKSPACE\u003d`trueorfalse False $HEAT_CONTRIB_RACKSPACE`"},{"line_number":38,"context_line":"HEAT_CONTRIB_MARCONI\u003d`trueorfalse False $HEAT_CONTRIB_MARCONI`"},{"line_number":39,"context_line":"HEAT_CONF_DIR\u003d/etc/heat"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAUH%2F9qVY%3D","line":36,"updated":"2014-02-05 08:59:19.000000000","message":"This seems to be a recipe for options profileration, what about something like this ;\n\nHEAT_ENABLED_CONTRIBS\u003d\"rackspace, marconi\"\n\ndefault to empty, with a parser that enables it if found in there like we do for ENABLED_SERVICES and all over devstack?","commit_id":"7391f3a0310d3c2f292e076cee19ae1b3ec541fe"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"9c55d88d1c3fb847b222d74d50bbee3188d180ac","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        HEAT_PLUGIN_DIRS\u003d\"$HEAT_PLUGIN_DIRS,$HEAT_DIR/contrib/marconi-plugin/plugin\""},{"line_number":147,"context_line":"    fi"},{"line_number":148,"context_line":"    if [[ ,$HEAT_CONTRIB_PLUGINS, \u003d~ ,rackspace, ]]; then"},{"line_number":149,"context_line":"        HEAT_PLUGIN_DIRS\u003d\"$HEAT_PLUGIN_DIRS,$HEAT_DIR/contrib/rackspace/heat/engine/plugins\""},{"line_number":150,"context_line":"    fi"},{"line_number":151,"context_line":"    iniset $HEAT_CONF DEFAULT plugin_dirs $HEAT_PLUGIN_DIRS"},{"line_number":152,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAUH%2F9gF8%3D","line":149,"updated":"2014-02-06 13:58:14.000000000","message":"I wish all those plugins were respecting the same file hierachy so we could make those generics instead of case by case","commit_id":"d36eb10df27265b3a1510c648449eda9bc5af8a3"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"9c55d88d1c3fb847b222d74d50bbee3188d180ac","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"# install_heat_contrib - Install contributed plugins"},{"line_number":172,"context_line":"function install_heat_contrib() {"},{"line_number":173,"context_line":"    if [[ ,$HEAT_CONTRIB_PLUGINS, \u003d~ ,docker, ]]; then"},{"line_number":174,"context_line":"        pip_install -r $HEAT_DIR/contrib/docker-plugin/requirements.txt"},{"line_number":175,"context_line":"    fi"},{"line_number":176,"context_line":"    if [[ ,$HEAT_CONTRIB_PLUGINS, \u003d~ ,marconi, ]]; then"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAUH%2F9gCU%3D","line":173,"updated":"2014-02-06 13:58:14.000000000","message":"same comment as before","commit_id":"d36eb10df27265b3a1510c648449eda9bc5af8a3"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"9c55d88d1c3fb847b222d74d50bbee3188d180ac","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        pip_install -r $HEAT_DIR/contrib/marconi-plugin/requirements.txt"},{"line_number":178,"context_line":"    fi"},{"line_number":179,"context_line":"    if [[ ,$HEAT_CONTRIB_PLUGINS, \u003d~ ,rackspace, ]]; then"},{"line_number":180,"context_line":"        pip_install pyrax"},{"line_number":181,"context_line":"    fi"},{"line_number":182,"context_line":"}"},{"line_number":183,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAUH%2F9gB4%3D","line":180,"updated":"2014-02-06 13:58:14.000000000","message":"this is out of the scope of this review but why the rackspace one does not have a requirements ?","commit_id":"d36eb10df27265b3a1510c648449eda9bc5af8a3"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"7000005d3b06cbe9d5cdde727fa4053c713aafd7","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    iniuncomment $HEAT_CONF DEFAULT plugin_dirs"},{"line_number":141,"context_line":"    HEAT_PLUGIN_DIRS\u003d$(iniget $HEAT_CONF DEFAULT plugin_dirs)"},{"line_number":142,"context_line":"    for plug in ${HEAT_CONTRIB_PLUGINS//,/ }; do"},{"line_number":143,"context_line":"        new_path\u003d$HEAT_DIR/contrib/$plug/resources"},{"line_number":144,"context_line":"        warn $LINENO \"configuring contrib plugin $plug\""},{"line_number":145,"context_line":"        if [ -d $new_path ]; then"},{"line_number":146,"context_line":"            if ! [[ ,$HEAT_PLUGIN_DIRS, \u003d~ ,$new_path, ]]; then"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUH%2F9VFs%3D","line":143,"updated":"2014-02-07 17:31:24.000000000","message":"I know the Rackspace plug-ins require a version of clients.py as well which is loaded as a plug-in but lives (or will live) in another directory (so those resources won\u0027t work at runtime): \n\n https://review.openstack.org/#/c/68747","commit_id":"d8fa592f11540020ed77f891e0ab93ffb90c8a87"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"b05fab03c3e64e441babfb3b5f8332a08b100a96","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    iniuncomment $HEAT_CONF DEFAULT plugin_dirs"},{"line_number":141,"context_line":"    HEAT_PLUGIN_DIRS\u003d$(iniget $HEAT_CONF DEFAULT plugin_dirs)"},{"line_number":142,"context_line":"    for plug in ${HEAT_CONTRIB_PLUGINS//,/ }; do"},{"line_number":143,"context_line":"        new_path\u003d$HEAT_DIR/contrib/$plug/resources"},{"line_number":144,"context_line":"        warn $LINENO \"configuring contrib plugin $plug\""},{"line_number":145,"context_line":"        if [ -d $new_path ]; then"},{"line_number":146,"context_line":"            if ! [[ ,$HEAT_PLUGIN_DIRS, \u003d~ ,$new_path, ]]; then"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2F6Ow%3D","line":143,"in_reply_to":"AAAAUH%2F9VFs%3D","updated":"2014-02-10 01:17:28.000000000","message":"Randall what are the install instructions for that client?","commit_id":"d8fa592f11540020ed77f891e0ab93ffb90c8a87"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"d601dd8a27bee05abe882368198cff412f9eda07","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    iniuncomment $HEAT_CONF DEFAULT plugin_dirs"},{"line_number":141,"context_line":"    HEAT_PLUGIN_DIRS\u003d$(iniget $HEAT_CONF DEFAULT plugin_dirs)"},{"line_number":142,"context_line":"    for plug in ${HEAT_CONTRIB_PLUGINS//,/ }; do"},{"line_number":143,"context_line":"        new_path\u003d$HEAT_DIR/contrib/$plug/resources"},{"line_number":144,"context_line":"        warn $LINENO \"configuring contrib plugin $plug\""},{"line_number":145,"context_line":"        if [ -d $new_path ]; then"},{"line_number":146,"context_line":"            if ! [[ ,$HEAT_PLUGIN_DIRS, \u003d~ ,$new_path, ]]; then"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2F0hQ%3D","line":143,"in_reply_to":"AAAAUX%2F%2F6Ow%3D","updated":"2014-02-10 16:12:59.000000000","message":"For my local testing, I just add the \"rackspace\" folder to plugin_dirs and set the cloud_backend config to heat.engine.plugins.rackspace.clients.Client.","commit_id":"d8fa592f11540020ed77f891e0ab93ffb90c8a87"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1db055aa379f270426128b464c90c9299f3e7300","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    HEAT_PLUGIN_DIRS\u003d$(iniget $HEAT_CONF DEFAULT plugin_dirs)"},{"line_number":142,"context_line":"    for plug in ${HEAT_CONTRIB_PLUGINS//,/ }; do"},{"line_number":143,"context_line":"        new_path\u003d$HEAT_DIR/contrib/$plug/resources"},{"line_number":144,"context_line":"        warn $LINENO \"configuring contrib plugin $plug\""},{"line_number":145,"context_line":"        if [ -d $new_path ]; then"},{"line_number":146,"context_line":"            if ! [[ ,$HEAT_PLUGIN_DIRS, \u003d~ ,$new_path, ]]; then"},{"line_number":147,"context_line":"                HEAT_PLUGIN_DIRS\u003d\"$HEAT_PLUGIN_DIRS,$new_path\""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUH%2F9WLs%3D","line":144,"updated":"2014-02-07 15:34:16.000000000","message":"If you really need this message don\u0027t use warn as it is not an abnormal condition","commit_id":"d8fa592f11540020ed77f891e0ab93ffb90c8a87"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"b05fab03c3e64e441babfb3b5f8332a08b100a96","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    HEAT_PLUGIN_DIRS\u003d$(iniget $HEAT_CONF DEFAULT plugin_dirs)"},{"line_number":142,"context_line":"    for plug in ${HEAT_CONTRIB_PLUGINS//,/ }; do"},{"line_number":143,"context_line":"        new_path\u003d$HEAT_DIR/contrib/$plug/resources"},{"line_number":144,"context_line":"        warn $LINENO \"configuring contrib plugin $plug\""},{"line_number":145,"context_line":"        if [ -d $new_path ]; then"},{"line_number":146,"context_line":"            if ! [[ ,$HEAT_PLUGIN_DIRS, \u003d~ ,$new_path, ]]; then"},{"line_number":147,"context_line":"                HEAT_PLUGIN_DIRS\u003d\"$HEAT_PLUGIN_DIRS,$new_path\""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAUX%2F%2F6Os%3D","line":144,"in_reply_to":"AAAAUH%2F9WLs%3D","updated":"2014-02-10 01:17:28.000000000","message":"oops, sorry - I\u0027ll kill that.","commit_id":"d8fa592f11540020ed77f891e0ab93ffb90c8a87"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"f9cf9e04020e68fe1421463c575297c973efc0d7","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    if [[ ${HEAT_CONTRIB_PLUGINS} \u003d~ \"rackspace\"]]; then"},{"line_number":156,"context_line":"        iniset $HEAT_CONF DEFAULT cloud_backend heat.engine.plugins.rackspace.clients.Client"},{"line_number":157,"context_line":"    fi"},{"line_number":158,"context_line":"}"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"# init_heat() - Initialize database"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAUX%2F%2FWjs%3D","line":157,"updated":"2014-02-13 19:32:52.000000000","message":"Since we don\u0027t have a way of knowing beforehand which plugin should go set cloud_backend, I think we should either loop through all of them and add their clients issuing a warning/error that we\u0027re either skipping or overwriting the previous value, or we should not touch this option at all and issue another warning at the end if any of the plugins contain clients.\n\nRichard\u0027s suggestion would also be fine as well and let the user define a variable with their choice if they\u0027re enabling plugins.","commit_id":"f7f04175cbb965af70a54aa5466208450d57cb06"}]}
