)]}'
{"README.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"OpenStack Dashboard plugin for Watcher project"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Installation"},{"line_number":5,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_f7958440","line":2,"range":{"start_line":2,"start_character":43,"end_line":2,"end_character":44},"updated":"2016-02-15 17:19:26.000000000","message":"missing \u003d","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"OpenStack Dashboard plugin for Watcher project"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Installation"},{"line_number":5,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_50140c43","line":2,"range":{"start_line":2,"start_character":43,"end_line":2,"end_character":44},"in_reply_to":"dae33548_f7958440","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Installation"},{"line_number":5,"context_line":"------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use ``pip`` to install the package on the server running Horizon. Then either"},{"line_number":8,"context_line":"copy or link the files in ``watcher_dashboard/enabled`` to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_f78904cc","line":5,"updated":"2016-02-15 17:19:26.000000000","message":"IMO, have a look on https://github.com/openstack/magnum-ui README.rst file.","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Installation"},{"line_number":5,"context_line":"------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use ``pip`` to install the package on the server running Horizon. Then either"},{"line_number":8,"context_line":"copy or link the files in ``watcher_dashboard/enabled`` to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_a9308a02","line":5,"in_reply_to":"dae33548_f78904cc","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Installation"},{"line_number":5,"context_line":"------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use ``pip`` to install the package on the server running Horizon. Then either"},{"line_number":8,"context_line":"copy or link the files in ``watcher_dashboard/enabled`` to"},{"line_number":9,"context_line":"``\u003cHORIZON_DIR\u003e/openstack_dashboard/local/enabled``, where ``\u003cHORIZON_DIR\u003e`` is"},{"line_number":10,"context_line":"the root folder of your horizon source code (e.g. ``/opt/stack/horizon`` on"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_27d06353","line":7,"range":{"start_line":7,"start_character":49,"end_line":7,"end_character":64},"updated":"2016-02-15 17:19:26.000000000","message":"How to install Horizon? IMO, add a link to http://docs.openstack.org/developer/horizon/quickstart.html (for dev) or http://docs.openstack.org/developer/horizon/topics/install.html (for production)","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Installation"},{"line_number":5,"context_line":"------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use ``pip`` to install the package on the server running Horizon. Then either"},{"line_number":8,"context_line":"copy or link the files in ``watcher_dashboard/enabled`` to"},{"line_number":9,"context_line":"``\u003cHORIZON_DIR\u003e/openstack_dashboard/local/enabled``, where ``\u003cHORIZON_DIR\u003e`` is"},{"line_number":10,"context_line":"the root folder of your horizon source code (e.g. ``/opt/stack/horizon`` on"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_4908de2d","line":7,"range":{"start_line":7,"start_character":49,"end_line":7,"end_character":64},"in_reply_to":"dae33548_27d06353","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":5,"context_line":"------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use ``pip`` to install the package on the server running Horizon. Then either"},{"line_number":8,"context_line":"copy or link the files in ``watcher_dashboard/enabled`` to"},{"line_number":9,"context_line":"``\u003cHORIZON_DIR\u003e/openstack_dashboard/local/enabled``, where ``\u003cHORIZON_DIR\u003e`` is"},{"line_number":10,"context_line":"the root folder of your horizon source code (e.g. ``/opt/stack/horizon`` on"},{"line_number":11,"context_line":"devstack) . This step will cause the Horizon service to pick up the watcher"},{"line_number":12,"context_line":"plugin when it starts."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_ac444f74","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":51},"updated":"2016-02-15 17:19:26.000000000","message":"IMO, not necessary if we use the script tool register_plugin.sh described just after","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use ``pip`` to install the package on the server running Horizon. Then either"},{"line_number":8,"context_line":"copy or link the files in ``watcher_dashboard/enabled`` to"},{"line_number":9,"context_line":"``\u003cHORIZON_DIR\u003e/openstack_dashboard/local/enabled``, where ``\u003cHORIZON_DIR\u003e`` is"},{"line_number":10,"context_line":"the root folder of your horizon source code (e.g. ``/opt/stack/horizon`` on"},{"line_number":11,"context_line":"devstack) . This step will cause the Horizon service to pick up the watcher"},{"line_number":12,"context_line":"plugin when it starts."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_9b635541","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":51},"in_reply_to":"dae33548_ac444f74","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    $ ./tools/register_plugin.sh . \u003cHORIZON_DIR\u003e"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This script will then create the needed symlinks in Horizon."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Devstack setup"},{"line_number":25,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_cc2273b9","line":22,"updated":"2016-02-15 17:19:26.000000000","message":"I have one error when I run this script:\n\n/tmp/watcher-dashboard/watcher_dashboard/enabled/__init__.py\n/tmp/watcher-dashboard/watcher_dashboard/enabled/__init__.py --\u003e /tmp/horizon/openstack_dashboard/local/enabled/__init__.py\nln: failed to create symbolic link \u0027/tmp/horizon/openstack_dashboard/local/enabled/__init__.py\u0027: File exists\n\n\nShould not this file __init__.py  be escaped ?","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    $ ./tools/register_plugin.sh . \u003cHORIZON_DIR\u003e"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This script will then create the needed symlinks in Horizon."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Devstack setup"},{"line_number":25,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_1b690526","line":22,"in_reply_to":"dae33548_cc2273b9","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This script will then create the needed symlinks in Horizon."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Devstack setup"},{"line_number":25,"context_line":"--------------"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_3756ccd2","line":23,"updated":"2016-02-15 17:19:26.000000000","message":"missing (for non devstack env) :\n\n$ cd watcher-dashboard\n$ sudo pip install .\n\n\n$ sudo service apache2 restart","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This script will then create the needed symlinks in Horizon."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Devstack setup"},{"line_number":25,"context_line":"--------------"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_c607bd7f","line":23,"in_reply_to":"dae33548_3756ccd2","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    $ ./run_tests.sh --integration"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"You can use PhantomJS as a headless browser to execute your integration tests"},{"line_number":72,"context_line":"like this::"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    $ ./run_tests.sh --integration --selenium-headless"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_12fab642","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":21},"updated":"2016-02-15 17:19:26.000000000","message":"how to install it ?\n\n$ sudo apt-get install phantomjs","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    $ ./run_tests.sh --integration"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"You can use PhantomJS as a headless browser to execute your integration tests"},{"line_number":72,"context_line":"like this::"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    $ ./run_tests.sh --integration --selenium-headless"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dae33548_66d23102","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":21},"in_reply_to":"dae33548_12fab642","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2810f909b9f4e2b828d3a7ed930e46e2af6f0684","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"NOTE:"},{"line_number":109,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"As of the Mitaka release, the dashboard for watcher is now maintained"},{"line_number":112,"context_line":"outside of the Horizon codebase, in this repository."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dae33548_7c328260","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":5},"updated":"2016-02-17 13:17:53.000000000","message":"-----","commit_id":"5954517f7eb83d6b5ee810c8d1d2f114ec2a902c"}],"devstack/plugin.sh":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":9,"context_line":"function configure_watcher_dashboard {"},{"line_number":10,"context_line":"    cp -a ${WATCHER_DASHBOARD_DIR}/watcher_dashboard/enabled/* ${DEST}/horizon/openstack_dashboard/local/enabled/"},{"line_number":11,"context_line":"}"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# check for service enabled"},{"line_number":14,"context_line":"if is_service_enabled watcher-dashboard; then"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-sh","patch_set":6,"id":"dae33548_f1b0e6df","line":12,"updated":"2016-02-15 17:19:26.000000000","message":"add :\n\n\nfunction init_watcher_dashboard {\n    # Setup alias for django-admin which could be different depending on distro\n    python ${DEST}/horizon/manage.py collectstatic --noinput\n    python ${DEST}/horizon//manage.py compress --force\n}","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"function configure_watcher_dashboard {"},{"line_number":10,"context_line":"    cp -a ${WATCHER_DASHBOARD_DIR}/watcher_dashboard/enabled/* ${DEST}/horizon/openstack_dashboard/local/enabled/"},{"line_number":11,"context_line":"}"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# check for service enabled"},{"line_number":14,"context_line":"if is_service_enabled watcher-dashboard; then"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-sh","patch_set":6,"id":"dae33548_ed7f4764","line":12,"in_reply_to":"dae33548_f1b0e6df","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        # Configure after the other layer 1 and 2 services have been configured"},{"line_number":28,"context_line":"        echo_summary \"Configurng Watcher Dashboard\""},{"line_number":29,"context_line":"        configure_watcher_dashboard"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"extra\"  ]]; then"},{"line_number":32,"context_line":"        # no-op"},{"line_number":33,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":6,"id":"dae33548_51c27234","line":30,"updated":"2016-02-15 17:19:26.000000000","message":"+         init_watcher_dashboard","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        # Configure after the other layer 1 and 2 services have been configured"},{"line_number":28,"context_line":"        echo_summary \"Configurng Watcher Dashboard\""},{"line_number":29,"context_line":"        configure_watcher_dashboard"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    elif [[ \"$1\" \u003d\u003d \"stack\" \u0026\u0026 \"$2\" \u003d\u003d \"extra\"  ]]; then"},{"line_number":32,"context_line":"        # no-op"},{"line_number":33,"context_line":"        :"}],"source_content_type":"text/x-sh","patch_set":6,"id":"dae33548_2d92cf9f","line":30,"in_reply_to":"dae33548_51c27234","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    fi"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    if [[ \"$1\" \u003d\u003d \"unstack\"  ]]; then"},{"line_number":37,"context_line":"        # no-op"},{"line_number":38,"context_line":"        :"},{"line_number":39,"context_line":"    fi"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    if [[ \"$1\" \u003d\u003d \"clean\"  ]]; then"}],"source_content_type":"text/x-sh","patch_set":6,"id":"dae33548_91e23ad4","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":9},"updated":"2016-02-15 17:19:26.000000000","message":"+        rm -f ${DEST}/horizon/openstack_dashboard/local/enabled/_310*","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    fi"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    if [[ \"$1\" \u003d\u003d \"unstack\"  ]]; then"},{"line_number":37,"context_line":"        # no-op"},{"line_number":38,"context_line":"        :"},{"line_number":39,"context_line":"    fi"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    if [[ \"$1\" \u003d\u003d \"clean\"  ]]; then"}],"source_content_type":"text/x-sh","patch_set":6,"id":"dae33548_8d915b9c","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":9},"in_reply_to":"dae33548_91e23ad4","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"}],"devstack/settings":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# settings file for trove-dashboard plugin"},{"line_number":2,"context_line":"enable_service trove-dashboard"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"dae33548_66a42357","line":1,"range":{"start_line":1,"start_character":20,"end_line":1,"end_character":25},"updated":"2016-02-15 17:19:26.000000000","message":"watcher","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# settings file for trove-dashboard plugin"},{"line_number":2,"context_line":"enable_service trove-dashboard"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"dae33548_2dd92f84","line":1,"range":{"start_line":1,"start_character":20,"end_line":1,"end_character":25},"in_reply_to":"dae33548_66a42357","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# settings file for trove-dashboard plugin"},{"line_number":2,"context_line":"enable_service trove-dashboard"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"dae33548_e69033ef","line":2,"range":{"start_line":2,"start_character":15,"end_line":2,"end_character":20},"updated":"2016-02-15 17:19:26.000000000","message":"ditto","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# settings file for trove-dashboard plugin"},{"line_number":2,"context_line":"enable_service trove-dashboard"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"dae33548_8de83b12","line":2,"range":{"start_line":2,"start_character":15,"end_line":2,"end_character":20},"in_reply_to":"dae33548_e69033ef","updated":"2016-02-16 13:28:59.000000000","message":"Done","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"}],"tools/install_venv.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"5a6b5441fc321b7470c67f24540db58056311162","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def print_help(venv, root):"},{"line_number":27,"context_line":"    help \u003d \"\"\""},{"line_number":28,"context_line":"    OpenStack development environment setup is complete."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    OpenStack development uses virtualenv to track and manage Python"},{"line_number":31,"context_line":"    dependencies while in development and testing."}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_9e6da306","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":4},"updated":"2016-02-10 23:05:22.000000000","message":"Just FYI - when triple-quoting multiple lines, the indentation is saved. I don\u0027t know if it is your intention to have all of the help text indented 4 spaces.","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"43adbdd46ac57c51205bf35839f534651c700439","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def print_help(venv, root):"},{"line_number":27,"context_line":"    help \u003d \"\"\""},{"line_number":28,"context_line":"    OpenStack development environment setup is complete."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    OpenStack development uses virtualenv to track and manage Python"},{"line_number":31,"context_line":"    dependencies while in development and testing."}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_b313e6b7","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":4},"in_reply_to":"3a57f1b5_9e6da306","updated":"2016-02-11 14:03:53.000000000","message":"This bash script (and all the others) are imports from the main Horizon repository with a few tweaks. So I\u0027m not sure I should be adapting this here or propose the change to Horizon first.","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"}],"tools/install_venv_common.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"5a6b5441fc321b7470c67f24540db58056311162","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        sys.exit(1)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def check_python_version(self):"},{"line_number":50,"context_line":"        if sys.version_info \u003c (2, 6):"},{"line_number":51,"context_line":"            self.die(\"Need Python Version \u003e\u003d 2.6\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def run_command_with_code(self, cmd, redirect_output\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_a1a5e204","line":50,"range":{"start_line":50,"start_character":31,"end_line":50,"end_character":35},"updated":"2016-02-10 23:05:22.000000000","message":"Most of OpenStack is moving to making Python 2.7 the minimum. Just FYI.","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"43adbdd46ac57c51205bf35839f534651c700439","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        sys.exit(1)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def check_python_version(self):"},{"line_number":50,"context_line":"        if sys.version_info \u003c (2, 6):"},{"line_number":51,"context_line":"            self.die(\"Need Python Version \u003e\u003d 2.6\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def run_command_with_code(self, cmd, redirect_output\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_b3c8c623","line":50,"range":{"start_line":50,"start_character":31,"end_line":50,"end_character":35},"in_reply_to":"3a57f1b5_a1a5e204","updated":"2016-02-11 14:03:53.000000000","message":"Again, this script has been imported from Horizon. So the objective for me was to make it all work without spending too much time on it. But if you think we should to do it, I\u0027m ok with.","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"5a6b5441fc321b7470c67f24540db58056311162","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            stdout \u003d None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        proc \u003d subprocess.Popen(cmd, cwd\u003dself.root, stdout\u003dstdout)"},{"line_number":65,"context_line":"        output \u003d proc.communicate()[0]"},{"line_number":66,"context_line":"        if check_exit_code and proc.returncode !\u003d 0:"},{"line_number":67,"context_line":"            self.die(\u0027Command \"%s\" failed.\\n%s\u0027, \u0027 \u0027.join(cmd), output)"},{"line_number":68,"context_line":"        return (output, proc.returncode)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_2156d2d2","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":38},"updated":"2016-02-10 23:05:22.000000000","message":"This just captures stdout output. You might also want to catch stderr, and report that in the error reporting. A better construct is:\n\n    out, err \u003d proc.communicate()","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"43adbdd46ac57c51205bf35839f534651c700439","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            stdout \u003d None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        proc \u003d subprocess.Popen(cmd, cwd\u003dself.root, stdout\u003dstdout)"},{"line_number":65,"context_line":"        output \u003d proc.communicate()[0]"},{"line_number":66,"context_line":"        if check_exit_code and proc.returncode !\u003d 0:"},{"line_number":67,"context_line":"            self.die(\u0027Command \"%s\" failed.\\n%s\u0027, \u0027 \u0027.join(cmd), output)"},{"line_number":68,"context_line":"        return (output, proc.returncode)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a57f1b5_b39686ee","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":38},"in_reply_to":"3a57f1b5_2156d2d2","updated":"2016-02-11 14:03:53.000000000","message":"ditto","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"}],"watcher_dashboard/enabled/__init__.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3a70b18195aea07b3fd7d66685c71f601aaf66fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dae33548_cbbb6f71","line":1,"updated":"2016-02-15 17:19:26.000000000","message":"remove this file","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b25d4cc0cf23dd81496c06b73983692bb62606c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dae33548_0d138b67","line":1,"in_reply_to":"dae33548_cbbb6f71","updated":"2016-02-16 13:28:59.000000000","message":"Updated the register_plugin.sh script instead","commit_id":"ad922cf7b4cf332fbac12ee982ea8af2358e7a0b"}]}
