)]}'
{"extras.d/80-opendaylight.sh":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"7fe1c4190aa906a7b337c594a76d523ae4d99f7c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"if [ \"$ODL_FOUND\" \u003d\u003d \"0\" ] ; then"},{"line_number":5,"context_line":"    if [[ \"$1\" \u003d\u003d \"source\" ]]; then"},{"line_number":6,"context_line":"        # Initial source"},{"line_number":7,"context_line":"        source $TOP_DIR/lib/neutron"},{"line_number":8,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"install\" ]]; then"},{"line_number":9,"context_line":"        # no-op"},{"line_number":10,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F%2BDTk%3D","line":7,"updated":"2014-01-30 16:59:06.000000000","message":"If you check for is_service_enabled neutron above you should be able to assume that lib/neutron has already been sourced.","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"502825faa2ceb71ca8b97084300529f7e7990947","unresolved":false,"context_lines":[{"line_number":4,"context_line":"if [ \"$ODL_FOUND\" \u003d\u003d \"0\" ] ; then"},{"line_number":5,"context_line":"    if [[ \"$1\" \u003d\u003d \"source\" ]]; then"},{"line_number":6,"context_line":"        # Initial source"},{"line_number":7,"context_line":"        source $TOP_DIR/lib/neutron"},{"line_number":8,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"install\" ]]; then"},{"line_number":9,"context_line":"        # no-op"},{"line_number":10,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F98Ak%3D","line":7,"in_reply_to":"AAAAUH%2F%2BDTk%3D","updated":"2014-01-31 21:46:05.000000000","message":"Done","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"7fe1c4190aa906a7b337c594a76d523ae4d99f7c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"        :"},{"line_number":14,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"extra\" ]]; then"},{"line_number":15,"context_line":"        echo_summary \"Initializing OpenDaylight\""},{"line_number":16,"context_line":"        if [ \"$ODL_LOCAL_IP\" \u003d\u003d \"\" ]; then"},{"line_number":17,"context_line":"            ODL_LOCAL_IP\u003d$HOST_IP"},{"line_number":18,"context_line":"        fi"},{"line_number":19,"context_line":"        if [ \"$ODL_MGR_IP\" \u003d\u003d \"\" ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F%2BDRo%3D","line":16,"updated":"2014-01-30 16:59:06.000000000","message":"If you are just setting defaults, the Bash default values substitution is cleaner:\n\n  ODL_LOCAL_IP\u003d${ODL_LOCAL_IP:-$HOST_IP}","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"502825faa2ceb71ca8b97084300529f7e7990947","unresolved":false,"context_lines":[{"line_number":13,"context_line":"        :"},{"line_number":14,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"extra\" ]]; then"},{"line_number":15,"context_line":"        echo_summary \"Initializing OpenDaylight\""},{"line_number":16,"context_line":"        if [ \"$ODL_LOCAL_IP\" \u003d\u003d \"\" ]; then"},{"line_number":17,"context_line":"            ODL_LOCAL_IP\u003d$HOST_IP"},{"line_number":18,"context_line":"        fi"},{"line_number":19,"context_line":"        if [ \"$ODL_MGR_IP\" \u003d\u003d \"\" ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F98AM%3D","line":16,"in_reply_to":"AAAAUH%2F%2BDRo%3D","updated":"2014-01-31 21:46:05.000000000","message":"Done","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ec72570ea876e51fa3e091dc4099e58b130fa4fb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            ODL_LOCAL_IP\u003d$HOST_IP"},{"line_number":18,"context_line":"        fi"},{"line_number":19,"context_line":"        if [ \"$ODL_MGR_IP\" \u003d\u003d \"\" ]; then"},{"line_number":20,"context_line":"            read ovstbl \u003c\u003c\u003c $(sudo ovs-vsctl get Open_vSwitch . _uuid)"},{"line_number":21,"context_line":"            ODL_MGR_IP\u003d$(grep url /$Q_PLUGIN_CONF_FILE | sed -e s\u0027/.*\\/\\///\u0027g -e \u0027s/\\:.*//\u0027g)"},{"line_number":22,"context_line":"        fi"},{"line_number":23,"context_line":"        if [ \"$ODL_MGR_PORT\" \u003d\u003d \"\" ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F%2BDc0%3D","line":20,"updated":"2014-01-30 16:25:43.000000000","message":"I think this line should go to line 26 ? Otherwise $ovstbl might not be set when it is used.","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"502825faa2ceb71ca8b97084300529f7e7990947","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            ODL_LOCAL_IP\u003d$HOST_IP"},{"line_number":18,"context_line":"        fi"},{"line_number":19,"context_line":"        if [ \"$ODL_MGR_IP\" \u003d\u003d \"\" ]; then"},{"line_number":20,"context_line":"            read ovstbl \u003c\u003c\u003c $(sudo ovs-vsctl get Open_vSwitch . _uuid)"},{"line_number":21,"context_line":"            ODL_MGR_IP\u003d$(grep url /$Q_PLUGIN_CONF_FILE | sed -e s\u0027/.*\\/\\///\u0027g -e \u0027s/\\:.*//\u0027g)"},{"line_number":22,"context_line":"        fi"},{"line_number":23,"context_line":"        if [ \"$ODL_MGR_PORT\" \u003d\u003d \"\" ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F97%2Fw%3D","line":20,"in_reply_to":"AAAAUH%2F%2BDc0%3D","updated":"2014-01-31 21:46:05.000000000","message":"Done","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"7fe1c4190aa906a7b337c594a76d523ae4d99f7c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"            read ovstbl \u003c\u003c\u003c $(sudo ovs-vsctl get Open_vSwitch . _uuid)"},{"line_number":21,"context_line":"            ODL_MGR_IP\u003d$(grep url /$Q_PLUGIN_CONF_FILE | sed -e s\u0027/.*\\/\\///\u0027g -e \u0027s/\\:.*//\u0027g)"},{"line_number":22,"context_line":"        fi"},{"line_number":23,"context_line":"        if [ \"$ODL_MGR_PORT\" \u003d\u003d \"\" ]; then"},{"line_number":24,"context_line":"            ODL_MGR_PORT\u003d6640"},{"line_number":25,"context_line":"        fi"},{"line_number":26,"context_line":"        sudo ovs-vsctl set-manager tcp:$ODL_MGR_IP:$ODL_MGR_PORT"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F%2BDRY%3D","line":23,"updated":"2014-01-30 16:59:06.000000000","message":"Same comment on default values as above","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"502825faa2ceb71ca8b97084300529f7e7990947","unresolved":false,"context_lines":[{"line_number":20,"context_line":"            read ovstbl \u003c\u003c\u003c $(sudo ovs-vsctl get Open_vSwitch . _uuid)"},{"line_number":21,"context_line":"            ODL_MGR_IP\u003d$(grep url /$Q_PLUGIN_CONF_FILE | sed -e s\u0027/.*\\/\\///\u0027g -e \u0027s/\\:.*//\u0027g)"},{"line_number":22,"context_line":"        fi"},{"line_number":23,"context_line":"        if [ \"$ODL_MGR_PORT\" \u003d\u003d \"\" ]; then"},{"line_number":24,"context_line":"            ODL_MGR_PORT\u003d6640"},{"line_number":25,"context_line":"        fi"},{"line_number":26,"context_line":"        sudo ovs-vsctl set-manager tcp:$ODL_MGR_IP:$ODL_MGR_PORT"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAUH%2F98AI%3D","line":23,"in_reply_to":"AAAAUH%2F%2BDRY%3D","updated":"2014-01-31 21:46:05.000000000","message":"Done","commit_id":"04f798b1bb4d90844b68ffca781a5d3696e32a03"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8919512889783a6b10b41f01e9011a73b24cea54","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"post-config\" ]]; then"},{"line_number":11,"context_line":"        # OpenDaylight configuration comes after all services are up"},{"line_number":12,"context_line":"        :"},{"line_number":13,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"extra\" ]]; then"},{"line_number":14,"context_line":"        echo_summary \"Initializing OpenDaylight\""},{"line_number":15,"context_line":"        ODL_LOCAL_IP\u003d${ODL_LOCAL_IP:-$HOST_IP}"},{"line_number":16,"context_line":"        ODL_MGR_PORT\u003d${ODL_MGR_PORT:-6640}"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAVX%2F%2Fqfo%3D","line":13,"updated":"2014-03-01 15:06:28.000000000","message":"This should go in start_opendaylight(), which should be called from here.","commit_id":"afecde52cc41eb8b65243863bf989103c1ad8fda"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8919512889783a6b10b41f01e9011a73b24cea54","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :"},{"line_number":23,"context_line":"    fi"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    if [[ \"$1\" \u003d\u003d \"unstack\" ]]; then"},{"line_number":26,"context_line":"        sudo ovs-vsctl del-manager"},{"line_number":27,"context_line":"        BRIDGES\u003d$(sudo ovs-vsctl list-br)"},{"line_number":28,"context_line":"        for bridge in $BRIDGES ; do"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAVX%2F%2Fqfw%3D","line":25,"updated":"2014-03-01 15:06:28.000000000","message":"This block belongs in stop_opendaylight()\n\nThe bits in unstack.sh go here","commit_id":"afecde52cc41eb8b65243863bf989103c1ad8fda"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Need this first to get the is_***_enabled for ODL"},{"line_number":4,"context_line":"source $TOP_DIR/lib/opendaylight"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"if is_service_enabled opendaylight; then"},{"line_number":7,"context_line":"    if [[ \"$1\" \u003d\u003d \"source\" ]]; then"},{"line_number":8,"context_line":"        # no-op"},{"line_number":9,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":16,"id":"AAAAVn%2F%2FUJM%3D","line":6,"updated":"2014-03-06 22:04:56.000000000","message":"is_service_enabled odl-server","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Need this first to get the is_***_enabled for ODL"},{"line_number":4,"context_line":"source $TOP_DIR/lib/opendaylight"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"if is_service_enabled opendaylight; then"},{"line_number":7,"context_line":"    if [[ \"$1\" \u003d\u003d \"source\" ]]; then"},{"line_number":8,"context_line":"        # no-op"},{"line_number":9,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":16,"id":"AAAAVn%2F%2FT%2Fo%3D","line":6,"in_reply_to":"AAAAVn%2F%2FUJM%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"fi"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"if is_service_enabled opendaylight-compute; then"},{"line_number":34,"context_line":"    if [[ \"$1\" \u003d\u003d \"source\" ]]; then"},{"line_number":35,"context_line":"        # no-op"},{"line_number":36,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":16,"id":"AAAAVn%2F%2FUI4%3D","line":33,"updated":"2014-03-06 22:04:56.000000000","message":"is_service_enabled odl-compute","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"fi"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"if is_service_enabled opendaylight-compute; then"},{"line_number":34,"context_line":"    if [[ \"$1\" \u003d\u003d \"source\" ]]; then"},{"line_number":35,"context_line":"        # no-op"},{"line_number":36,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":16,"id":"AAAAVn%2F%2FT%2Fk%3D","line":33,"in_reply_to":"AAAAVn%2F%2FUI4%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"}],"lib/opendaylight":[{"author":{"_account_id":10310,"name":"Mandeep Dhami","email":"dhami@noironetworks.com","username":"mandeepdhami"},"change_message_id":"9520139d0d27e7b6b9a8b231df43228b488757ce","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Remove simple forwarder"},{"line_number":75,"context_line":"    rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # Configure OpenFlow 1.3"},{"line_number":78,"context_line":"    echo \"ovsdb.of.version\u003d1.3\" \u003e\u003e $ODL_DIR/opendaylight/configuration/config.ini"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAVn%2F%2FzCM%3D","line":75,"updated":"2014-03-04 03:04:30.000000000","message":"If $ODL_DIR has a space or other special characters, this will not work (and might damage the current configuration). I\u0027d recommend that you use cd \"$ODL_DIR/...\" to avoid that.","commit_id":"2bda09385ae1b7893f03aa510df7c9c818bc3f29"},{"author":{"_account_id":10310,"name":"Mandeep Dhami","email":"dhami@noironetworks.com","username":"mandeepdhami"},"change_message_id":"9923039d6bf9392f40fe5b7f4c9ed599fd6afb73","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Remove simple forwarder"},{"line_number":75,"context_line":"    rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # Configure OpenFlow 1.3"},{"line_number":78,"context_line":"    echo \"ovsdb.of.version\u003d1.3\" \u003e\u003e $ODL_DIR/opendaylight/configuration/config.ini"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAVn%2F%2Fxyc%3D","line":75,"in_reply_to":"AAAAVn%2F%2Fyy4%3D","updated":"2014-03-04 06:05:17.000000000","message":"Ooops I meant:\nrm -f \"$ODL_DIR/...\"\n\nNot cd. But I agree that it is all over devstack, so i will retract the -1.","commit_id":"2bda09385ae1b7893f03aa510df7c9c818bc3f29"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"aa129bc51be3fed12b1a1bb5881365fc9197b36c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Remove simple forwarder"},{"line_number":75,"context_line":"    rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    # Configure OpenFlow 1.3"},{"line_number":78,"context_line":"    echo \"ovsdb.of.version\u003d1.3\" \u003e\u003e $ODL_DIR/opendaylight/configuration/config.ini"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAVn%2F%2Fyy4%3D","line":75,"in_reply_to":"AAAAVn%2F%2FzCM%3D","updated":"2014-03-04 03:47:39.000000000","message":"This problem is not unique to this patch, it\u0027s all over devstack. I could add logic to save $pwd and pop back, I imagine, but a straight \"cd\" may not fly because I\u0027m not sure if devstack makes assumptions on current working directories or not.","commit_id":"2bda09385ae1b7893f03aa510df7c9c818bc3f29"},{"author":{"_account_id":10310,"name":"Mandeep Dhami","email":"dhami@noironetworks.com","username":"mandeepdhami"},"change_message_id":"9520139d0d27e7b6b9a8b231df43228b488757ce","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        yum_install maven java-1.7.0-openjdk"},{"line_number":96,"context_line":"    fi"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    # Download OpenDaylight"},{"line_number":99,"context_line":"    mkdir -p $ODL_DIR"},{"line_number":100,"context_line":"    cd $ODL_DIR"},{"line_number":101,"context_line":"    wget -N $ODL_URL/$ODL_PKG"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAVn%2F%2FzB4%3D","line":98,"updated":"2014-03-04 03:04:30.000000000","message":"As above, If $ODL_DIR or the $ODL_URL have space or other special characters, this will not work (and might damage the current configuration). I\u0027d recommend that you use cd \"$ODL_DIR\" etc. in the following lines (and in multiple places in this script) to avoid that.","commit_id":"2bda09385ae1b7893f03aa510df7c9c818bc3f29"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"bed0841be9323efe4fff61fd6463faf080d86280","unresolved":false,"context_lines":[{"line_number":80,"context_line":"# configure_opendaylight() - Set config files, create data dirs, etc"},{"line_number":81,"context_line":"function configure_opendaylight {"},{"line_number":82,"context_line":"    # Ensure this is set, if not, die."},{"line_number":83,"context_line":"    if [ \"$ODL_MGR_IP\" \u003d\u003d \"\" ]; then"},{"line_number":84,"context_line":"        die $LINENO \"When using OpenDaylight, you must configure ODL_MGR_IP to the IP of OpenDaylight.\""},{"line_number":85,"context_line":"    fi"},{"line_number":86,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX8M%3D","line":83,"updated":"2014-03-06 14:56:30.000000000","message":"is there a reason this can\u0027t default to SERVICE_HOST ?","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"447a84e51905a78f0a0afcb52c00131c9f727d8f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"# configure_opendaylight() - Set config files, create data dirs, etc"},{"line_number":81,"context_line":"function configure_opendaylight {"},{"line_number":82,"context_line":"    # Ensure this is set, if not, die."},{"line_number":83,"context_line":"    if [ \"$ODL_MGR_IP\" \u003d\u003d \"\" ]; then"},{"line_number":84,"context_line":"        die $LINENO \"When using OpenDaylight, you must configure ODL_MGR_IP to the IP of OpenDaylight.\""},{"line_number":85,"context_line":"    fi"},{"line_number":86,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX44%3D","line":83,"in_reply_to":"AAAAVn%2F%2FX8M%3D","updated":"2014-03-06 15:14:59.000000000","message":"Nope, I will make this change now, thanks!","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"bed0841be9323efe4fff61fd6463faf080d86280","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Configure OpenFlow 1.3"},{"line_number":91,"context_line":"    echo \"ovsdb.of.version\u003d1.3\" \u003e\u003e $ODL_DIR/opendaylight/configuration/config.ini"},{"line_number":92,"context_line":"}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# init_opendaylight() - Initialize databases, etc."}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX70%3D","line":91,"updated":"2014-03-06 14:56:30.000000000","message":"what about using the functions in devstack for adding config options?","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"447a84e51905a78f0a0afcb52c00131c9f727d8f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Configure OpenFlow 1.3"},{"line_number":91,"context_line":"    echo \"ovsdb.of.version\u003d1.3\" \u003e\u003e $ODL_DIR/opendaylight/configuration/config.ini"},{"line_number":92,"context_line":"}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# init_opendaylight() - Initialize databases, etc."}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FXzA%3D","line":91,"in_reply_to":"AAAAVn%2F%2FX70%3D","updated":"2014-03-06 15:14:59.000000000","message":"So, the OpenDaylight configuration file has no \"sections\" for it\u0027s config, it\u0027s one giant blob. The current functions assume that. I can clean those up post-this patch, is that ok? Then I can use them.","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"bed0841be9323efe4fff61fd6463faf080d86280","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # Install deps"},{"line_number":122,"context_line":"    # FIXME add to ``files/apts/neutron``, but don\u0027t install if not needed!"},{"line_number":123,"context_line":"    if is_ubuntu; then"},{"line_number":124,"context_line":"        kernel_version\u003d`cat /proc/version | cut -d \" \" -f3`"},{"line_number":125,"context_line":"        install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version"},{"line_number":126,"context_line":"    elif is_fedora; then"},{"line_number":127,"context_line":"        install_package openvswitch"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX9Q%3D","line":124,"updated":"2014-03-06 14:56:30.000000000","message":"minor, why not \u0027uname -a\u0027 ?","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"447a84e51905a78f0a0afcb52c00131c9f727d8f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # Install deps"},{"line_number":122,"context_line":"    # FIXME add to ``files/apts/neutron``, but don\u0027t install if not needed!"},{"line_number":123,"context_line":"    if is_ubuntu; then"},{"line_number":124,"context_line":"        kernel_version\u003d`cat /proc/version | cut -d \" \" -f3`"},{"line_number":125,"context_line":"        install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version"},{"line_number":126,"context_line":"    elif is_fedora; then"},{"line_number":127,"context_line":"        install_package openvswitch"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX3Q%3D","line":124,"in_reply_to":"AAAAVn%2F%2FX9Q%3D","updated":"2014-03-06 15:14:59.000000000","message":"No particular reason I guess. :)","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"bed0841be9323efe4fff61fd6463faf080d86280","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    else"},{"line_number":142,"context_line":"        JHOME\u003d/usr/lib/jvm/java-1.7.0-openjdk"},{"line_number":143,"context_line":"    fi"},{"line_number":144,"context_line":"    screen_it opendaylight \"cd $ODL_DIR/opendaylight \u0026\u0026 JAVE_HOME\u003d$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    # Sleep a bit to let OpenDaylight finish starting up"},{"line_number":147,"context_line":"    sleep $ODL_BOOT_WAIT"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX8c%3D","line":144,"updated":"2014-03-06 14:56:30.000000000","message":"for educational purposes, can you document what those flags do for OpenDaylight?","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"447a84e51905a78f0a0afcb52c00131c9f727d8f","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    else"},{"line_number":142,"context_line":"        JHOME\u003d/usr/lib/jvm/java-1.7.0-openjdk"},{"line_number":143,"context_line":"    fi"},{"line_number":144,"context_line":"    screen_it opendaylight \"cd $ODL_DIR/opendaylight \u0026\u0026 JAVE_HOME\u003d$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    # Sleep a bit to let OpenDaylight finish starting up"},{"line_number":147,"context_line":"    sleep $ODL_BOOT_WAIT"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAAVn%2F%2FX38%3D","line":144,"in_reply_to":"AAAAVn%2F%2FX8c%3D","updated":"2014-03-06 15:14:59.000000000","message":"Done","commit_id":"fc4e3a72b2e93b398a8bdb69af6110f1d1d724d6"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":61,"context_line":"# Test if OpenDaylight is enabled"},{"line_number":62,"context_line":"# is_opendaylight_enabled"},{"line_number":63,"context_line":"function is_opendaylight_enabled {"},{"line_number":64,"context_line":"    [[ ,${ENABLED_SERVICES} \u003d~ ,\"odl-server\" ]] \u0026\u0026 return 0"},{"line_number":65,"context_line":"    return 1"},{"line_number":66,"context_line":"}"},{"line_number":67,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FUIU%3D","line":64,"updated":"2014-03-06 22:04:56.000000000","message":",\"odl-\"\n\nwill find both (either) services when you do\n\n  is_service_enabled opendaylight","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":61,"context_line":"# Test if OpenDaylight is enabled"},{"line_number":62,"context_line":"# is_opendaylight_enabled"},{"line_number":63,"context_line":"function is_opendaylight_enabled {"},{"line_number":64,"context_line":"    [[ ,${ENABLED_SERVICES} \u003d~ ,\"odl-server\" ]] \u0026\u0026 return 0"},{"line_number":65,"context_line":"    return 1"},{"line_number":66,"context_line":"}"},{"line_number":67,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FT9g%3D","line":64,"in_reply_to":"AAAAVn%2F%2FUIU%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Test if OpenDaylight on compute nodes is enabled"},{"line_number":69,"context_line":"# is_opendaylight-compute_enabled"},{"line_number":70,"context_line":"function is_opendaylight-compute_enabled {"},{"line_number":71,"context_line":"    [[ ,${ENABLED_SERVICES} \u003d~ ,\"odl-compute\" ]] \u0026\u0026 return 0"},{"line_number":72,"context_line":"    return 1"},{"line_number":73,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FUH8%3D","line":70,"updated":"2014-03-06 22:04:56.000000000","message":"you do not need this function","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Test if OpenDaylight on compute nodes is enabled"},{"line_number":69,"context_line":"# is_opendaylight-compute_enabled"},{"line_number":70,"context_line":"function is_opendaylight-compute_enabled {"},{"line_number":71,"context_line":"    [[ ,${ENABLED_SERVICES} \u003d~ ,\"odl-compute\" ]] \u0026\u0026 return 0"},{"line_number":72,"context_line":"    return 1"},{"line_number":73,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FT9Q%3D","line":70,"in_reply_to":"AAAAVn%2F%2FUH8%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":115,"context_line":"function install_opendaylight-compute {"},{"line_number":116,"context_line":"    local kernel_version"},{"line_number":117,"context_line":"    # Install deps"},{"line_number":118,"context_line":"    # FIXME add to ``files/apts/neutron``, but don\u0027t install if not needed!"},{"line_number":119,"context_line":"    if is_ubuntu; then"},{"line_number":120,"context_line":"        kernel_version\u003d`cat /proc/version | cut -d \" \" -f3`"},{"line_number":121,"context_line":"        install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FURU%3D","line":118,"updated":"2014-03-06 22:04:56.000000000","message":"Any packages you need but only get installed conditionally here should be added to files/*/* as required and appended with # NORPIME.  That is the signal to not automatically install them but still satisfies the dependency checking.","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"function install_opendaylight-compute {"},{"line_number":116,"context_line":"    local kernel_version"},{"line_number":117,"context_line":"    # Install deps"},{"line_number":118,"context_line":"    # FIXME add to ``files/apts/neutron``, but don\u0027t install if not needed!"},{"line_number":119,"context_line":"    if is_ubuntu; then"},{"line_number":120,"context_line":"        kernel_version\u003d`cat /proc/version | cut -d \" \" -f3`"},{"line_number":121,"context_line":"        install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FT7Q%3D","line":118,"in_reply_to":"AAAAVn%2F%2FURU%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    # The flags to ODL have the following meaning:"},{"line_number":142,"context_line":"    #   -of13: runs ODL using OpenFlow 1.3 protocol support."},{"line_number":143,"context_line":"    #   -virt ovsdb: Runs ODL in \"virtualization\" mode with OVSDB support"},{"line_number":144,"context_line":"    screen_it opendaylight \"cd $ODL_DIR/opendaylight \u0026\u0026 JAVE_HOME\u003d$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    # Sleep a bit to let OpenDaylight finish starting up"},{"line_number":147,"context_line":"    sleep $ODL_BOOT_WAIT"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FUHg%3D","line":144,"updated":"2014-03-06 22:04:56.000000000","message":"screen_it odl-server ...","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    # The flags to ODL have the following meaning:"},{"line_number":142,"context_line":"    #   -of13: runs ODL using OpenFlow 1.3 protocol support."},{"line_number":143,"context_line":"    #   -virt ovsdb: Runs ODL in \"virtualization\" mode with OVSDB support"},{"line_number":144,"context_line":"    screen_it opendaylight \"cd $ODL_DIR/opendaylight \u0026\u0026 JAVE_HOME\u003d$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    # Sleep a bit to let OpenDaylight finish starting up"},{"line_number":147,"context_line":"    sleep $ODL_BOOT_WAIT"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FT%2B8%3D","line":144,"in_reply_to":"AAAAVn%2F%2FUHg%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"383bc6e146663cd5e7f1f37b95d5e8358e799f88","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# stop_opendaylight() - Stop running processes (non-screen)"},{"line_number":151,"context_line":"function stop_opendaylight {"},{"line_number":152,"context_line":"    :"},{"line_number":153,"context_line":"}"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"# stop_opendaylight-compute() - Remove OVS bridges"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FUPw%3D","line":152,"updated":"2014-03-06 22:04:56.000000000","message":"The opendaylight service started with screen_it should be stopped here:\n\n  screen_stop odl-server","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"f750f9fed2c8ee99696655b9fc18d7ffba05999a","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# stop_opendaylight() - Stop running processes (non-screen)"},{"line_number":151,"context_line":"function stop_opendaylight {"},{"line_number":152,"context_line":"    :"},{"line_number":153,"context_line":"}"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"# stop_opendaylight-compute() - Remove OVS bridges"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAAVn%2F%2FT%2FA%3D","line":152,"in_reply_to":"AAAAVn%2F%2FUPw%3D","updated":"2014-03-06 22:15:28.000000000","message":"Done","commit_id":"6ba92f0bb2fb7bf5442ee9f4ee4502591e481190"}],"stack.sh":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8919512889783a6b10b41f01e9011a73b24cea54","unresolved":false,"context_lines":[{"line_number":646,"context_line":"    install_database"},{"line_number":647,"context_line":"fi"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"if is_service_enabled opendaylight; then"},{"line_number":650,"context_line":"    install_opendaylight"},{"line_number":651,"context_line":"fi"},{"line_number":652,"context_line":""}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAVX%2F%2FqgM%3D","line":649,"updated":"2014-03-01 15:06:28.000000000","message":"This should be called in extras.d/80-opendaylight.sh","commit_id":"afecde52cc41eb8b65243863bf989103c1ad8fda"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8919512889783a6b10b41f01e9011a73b24cea54","unresolved":false,"context_lines":[{"line_number":977,"context_line":"# OpenDaylight"},{"line_number":978,"context_line":"# ------------"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"if is_service_enabled opendaylight; then"},{"line_number":981,"context_line":"    echo_summary \"Configuring OpenDaylight\""},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    configure_opendaylight"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAVX%2F%2FqgI%3D","line":980,"updated":"2014-03-01 15:06:28.000000000","message":"This should be called in extras.d/80-opendaylight.sh","commit_id":"afecde52cc41eb8b65243863bf989103c1ad8fda"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8919512889783a6b10b41f01e9011a73b24cea54","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"    start_nova_api"},{"line_number":1187,"context_line":"fi"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"if is_service_enabled opendaylight; then"},{"line_number":1190,"context_line":"    start_opendaylight"},{"line_number":1191,"context_line":"fi"},{"line_number":1192,"context_line":""}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAVX%2F%2FqgA%3D","line":1189,"updated":"2014-03-01 15:06:28.000000000","message":"This should be called in extras.d/80-opendaylight.sh","commit_id":"afecde52cc41eb8b65243863bf989103c1ad8fda"}],"unstack.sh":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8919512889783a6b10b41f01e9011a73b24cea54","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    cleanup_neutron"},{"line_number":164,"context_line":"fi"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"if is_service_enabled opendaylight; then"},{"line_number":167,"context_line":"    stop_opendaylight"},{"line_number":168,"context_line":"    cleanup_opendaylight"},{"line_number":169,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAVX%2F%2Fqf8%3D","line":166,"updated":"2014-03-01 15:06:28.000000000","message":"This should be called in extras.d/80-opendaylight.sh","commit_id":"afecde52cc41eb8b65243863bf989103c1ad8fda"}]}
