)]}'
{"scripts/run-upgrade.sh":[{"author":{"_account_id":14805,"name":"Jimmy McCrory","email":"jimmy.mccrory@gmail.com","username":"jimmy-mccrory"},"change_message_id":"117e4d99479a7708e2908e42ba66b3c4b1aa3332","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/user-secrets-adjustments.yml\")"},{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"setup-hosts.yml\")"},{"line_number":140,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/container-network-bounce.yml || true\")"},{"line_number":141,"context_line":"        RUN_TASKS+\u003d(\"setup-infrastructure.yml -e \u0027rabbitmq_upgrade\u003dtrue\u0027 -e \u0027galera_ignore_cluster_state\u003dtrue\u0027\")"},{"line_number":142,"context_line":"        RUN_TASKS+\u003d(\"set-openstack.yml\")"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # Run the tasks in order"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9a68dd71_b3703a73","line":141,"updated":"2016-01-25 22:09:17.000000000","message":"Needs another option for upgrading MariaDB from 5.5 to 10 after https://review.openstack.org/#/c/271591/ lands.\n-e \u0027galera_upgrade\u003dtrue\u0027","commit_id":"af23089e02a33d91e555f47f059bf37ba670c29c"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"07a02360ee3edb357039a0c7468f39297e20bea5","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/user-secrets-adjustments.yml\")"},{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"setup-hosts.yml\")"},{"line_number":140,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/container-network-bounce.yml || true\")"},{"line_number":141,"context_line":"        RUN_TASKS+\u003d(\"setup-infrastructure.yml -e \u0027rabbitmq_upgrade\u003dtrue\u0027 -e \u0027galera_ignore_cluster_state\u003dtrue\u0027\")"},{"line_number":142,"context_line":"        RUN_TASKS+\u003d(\"set-openstack.yml\")"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # Run the tasks in order"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9a68dd71_e31f9607","line":141,"in_reply_to":"9a68dd71_b3703a73","updated":"2016-01-26 16:16:16.000000000","message":"Done","commit_id":"af23089e02a33d91e555f47f059bf37ba670c29c"},{"author":{"_account_id":14805,"name":"Jimmy McCrory","email":"jimmy.mccrory@gmail.com","username":"jimmy-mccrory"},"change_message_id":"117e4d99479a7708e2908e42ba66b3c4b1aa3332","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"setup-hosts.yml\")"},{"line_number":140,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/container-network-bounce.yml || true\")"},{"line_number":141,"context_line":"        RUN_TASKS+\u003d(\"setup-infrastructure.yml -e \u0027rabbitmq_upgrade\u003dtrue\u0027 -e \u0027galera_ignore_cluster_state\u003dtrue\u0027\")"},{"line_number":142,"context_line":"        RUN_TASKS+\u003d(\"set-openstack.yml\")"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # Run the tasks in order"},{"line_number":145,"context_line":"        for item in ${!RUN_TASKS[@]}; do"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9a68dd71_b3c27a83","line":142,"range":{"start_line":142,"start_character":21,"end_line":142,"end_character":38},"updated":"2016-01-25 22:09:17.000000000","message":"setup-openstack.yml","commit_id":"af23089e02a33d91e555f47f059bf37ba670c29c"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"07a02360ee3edb357039a0c7468f39297e20bea5","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"setup-hosts.yml\")"},{"line_number":140,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/container-network-bounce.yml || true\")"},{"line_number":141,"context_line":"        RUN_TASKS+\u003d(\"setup-infrastructure.yml -e \u0027rabbitmq_upgrade\u003dtrue\u0027 -e \u0027galera_ignore_cluster_state\u003dtrue\u0027\")"},{"line_number":142,"context_line":"        RUN_TASKS+\u003d(\"set-openstack.yml\")"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # Run the tasks in order"},{"line_number":145,"context_line":"        for item in ${!RUN_TASKS[@]}; do"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9a68dd71_031d0a0f","line":142,"range":{"start_line":142,"start_character":21,"end_line":142,"end_character":38},"in_reply_to":"9a68dd71_b3c27a83","updated":"2016-01-26 16:16:16.000000000","message":"Done","commit_id":"af23089e02a33d91e555f47f059bf37ba670c29c"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"05400e91bd40a7dd1c6e3d5ddaf89ba032e69894","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"setup-hosts.yml\")"},{"line_number":140,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/container-network-bounce.yml || true\")"},{"line_number":141,"context_line":"        RUN_TASKS+\u003d(\"setup-infrastructure.yml -e \u0027rabbitmq_upgrade\u003dtrue\u0027 -e \u0027galera_ignore_cluster_state\u003dtrue\u0027 -e \u0027galera_upgrade\u003dtrue\u0027\")"},{"line_number":142,"context_line":"        RUN_TASKS+\u003d(\"set-openstack.yml\")"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # Run the tasks in order"},{"line_number":145,"context_line":"        for item in ${!RUN_TASKS[@]}; do"}],"source_content_type":"text/x-sh","patch_set":4,"id":"9a68dd71_ec3f8885","line":142,"updated":"2016-01-26 15:50:06.000000000","message":"setup-openstack.yml?","commit_id":"0dc15d9427e2180962aeaf2a3851fe45c4d36929"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"4bcd602c2a238f11fd5c20edf8697f49b222c72a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    check_for_juno"},{"line_number":135,"context_line":"    check_for_kilo"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    pushd ${MAIN_PATH}/playbooks"},{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/backup-openstack-deploy.yml\")"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-sh","patch_set":14,"id":"dae33548_150acd25","line":137,"updated":"2016-02-18 21:19:04.000000000","message":"A check will need to happen here to see if the /etc/openstack_deploy.KILO directory was made. If it was, then the script needs to stop.","commit_id":"1724b8c111858f8d601c825b5c6be9425594a886"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"4bcd602c2a238f11fd5c20edf8697f49b222c72a","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    pushd ${MAIN_PATH}/playbooks"},{"line_number":139,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/backup-openstack-deploy.yml\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_SCRIPTS}/migrate_openstack_vars.py /etc/openstack_deploy/user_variables.yml\")"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/copy-envd-changes.yml\")"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-sh","patch_set":14,"id":"dae33548_9536dd00","line":141,"updated":"2016-02-18 21:19:04.000000000","message":"This (and the other scripts) need to be moved outside of the pushd block. run_tasks calls openstack-ansible against each item in the array, so the current placement results in an error.","commit_id":"1724b8c111858f8d601c825b5c6be9425594a886"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"27851ce74a5366f66f1ef0c760ca9bbe72d3eeab","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        RUN_TASKS+\u003d(\"$UPGRADE_SCRIPTS/fix_ceilometer_env.py\")"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        RUN_TASKS+\u003d(\"$UPGRADE_SCRIPTS/add_new_neutron_env.py\")"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        RUN_TASKS+\u003d(\"${UPGRADE_PLAYBOOKS}/user-secrets-adjustments.yml\")"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-sh","patch_set":14,"id":"dae33548_7add46df","line":147,"updated":"2016-02-17 21:41:34.000000000","message":"The two scripts modifying the env.d/{ceilometer,neutron}.yml files don\u0027t feel quite right to me yet. They\u0027re being modified in place rather than copied because I want to preserve any user changes to those files, while removing/adding the necessary keys/values.\n\nRight now, this feels brittle - every modification to the env.d files would need a corresponding update script. On the other hand, just copying the files from the source tree into place would overwrite any user changes (and copying entries that might be missing from the old source might restore deliberately removed lines).\n\nThis may be out of scope for this particular review, as I don\u0027t intend to overhaul the whole upgrade process. However, I do feel this is worth drawing attention to.","commit_id":"1724b8c111858f8d601c825b5c6be9425594a886"}],"scripts/upgrade-utilities/playbooks/backup-openstack-deploy.yml":[{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"6216e5cec2c2d0a50f91701a5980062d58d12554","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- name: Update the env.d directory"},{"line_number":17,"context_line":"  hosts: localhost"},{"line_number":18,"context_line":"  connection: local"},{"line_number":19,"context_line":"  gather_facts: false"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"dae33548_8d51a4db","line":16,"updated":"2016-02-19 04:31:09.000000000","message":"This is the name of another play. Perhaps this one ought to be something like \u0027Create backup of openstack_deploy\u0027.","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"92c9495391f9489769790bafe81ff4a4d9fa3a19","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- name: Update the env.d directory"},{"line_number":17,"context_line":"  hosts: localhost"},{"line_number":18,"context_line":"  connection: local"},{"line_number":19,"context_line":"  gather_facts: false"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"bae84128_1057fbce","line":16,"in_reply_to":"dae33548_8d51a4db","updated":"2016-02-22 17:01:00.000000000","message":"Done","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"0cb17484c7869d3700b397097c375c96197c80ff","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- name: Update the env.d directory"},{"line_number":17,"context_line":"  hosts: localhost"},{"line_number":18,"context_line":"  connection: local"},{"line_number":19,"context_line":"  gather_facts: false"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"bae84128_5b3b9f38","line":16,"in_reply_to":"dae33548_8d51a4db","updated":"2016-02-20 18:01:41.000000000","message":"Good catch.","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"},{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"6216e5cec2c2d0a50f91701a5980062d58d12554","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  gather_facts: false"},{"line_number":20,"context_line":"  user: root"},{"line_number":21,"context_line":"  tasks:"},{"line_number":22,"context_line":"      - name: Create a old copy of openstack_deploy"},{"line_number":23,"context_line":"        copy:"},{"line_number":24,"context_line":"            src: \"/etc/openstack_deploy\""},{"line_number":25,"context_line":"            dest: \"/etc/openstack_deploy.KILO\""}],"source_content_type":"text/x-yaml","patch_set":15,"id":"dae33548_aa056e15","line":22,"updated":"2016-02-19 04:31:09.000000000","message":"Should be \u0027an\u0027 old copy","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"92c9495391f9489769790bafe81ff4a4d9fa3a19","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  gather_facts: false"},{"line_number":20,"context_line":"  user: root"},{"line_number":21,"context_line":"  tasks:"},{"line_number":22,"context_line":"      - name: Create a old copy of openstack_deploy"},{"line_number":23,"context_line":"        copy:"},{"line_number":24,"context_line":"            src: \"/etc/openstack_deploy\""},{"line_number":25,"context_line":"            dest: \"/etc/openstack_deploy.KILO\""}],"source_content_type":"text/x-yaml","patch_set":15,"id":"bae84128_f051b7d9","line":22,"in_reply_to":"dae33548_aa056e15","updated":"2016-02-22 17:01:00.000000000","message":"Done","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"}],"scripts/upgrade-utilities/playbooks/copy-envd-changes.yml":[{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"6216e5cec2c2d0a50f91701a5980062d58d12554","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      - name: Copy new env.d files into place"},{"line_number":23,"context_line":"        copy:"},{"line_number":24,"context_line":"            src: \"{{ playbook_dir }}/../../../etc/openstack_deploy/env.d/{{ item }}.yml\""},{"line_number":25,"context_line":"            dest: \"/etc/openstack_deploy/env.d/{{ item }}\""},{"line_number":26,"context_line":"        with_items:"},{"line_number":27,"context_line":"            - aodh"},{"line_number":28,"context_line":"            - haproxy"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"dae33548_8d5ec410","line":25,"updated":"2016-02-19 04:31:09.000000000","message":"Destination missing the .yml suffix","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"0cb17484c7869d3700b397097c375c96197c80ff","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      - name: Copy new env.d files into place"},{"line_number":23,"context_line":"        copy:"},{"line_number":24,"context_line":"            src: \"{{ playbook_dir }}/../../../etc/openstack_deploy/env.d/{{ item }}.yml\""},{"line_number":25,"context_line":"            dest: \"/etc/openstack_deploy/env.d/{{ item }}\""},{"line_number":26,"context_line":"        with_items:"},{"line_number":27,"context_line":"            - aodh"},{"line_number":28,"context_line":"            - haproxy"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"bae84128_bb4aabc3","line":25,"in_reply_to":"dae33548_8d5ec410","updated":"2016-02-20 18:01:41.000000000","message":"Thanks, will fix.","commit_id":"03e8b44df8cc57e1d9491edf870f85efde42888c"}],"scripts/upgrade-utilities/playbooks/deploy-config-changes.yml":[{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"26c87fdff6469b0bb327f4b9c64925339f9e35f7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      - name: Create an old copy of openstack_deploy"},{"line_number":23,"context_line":"        copy:"},{"line_number":24,"context_line":"            src: \"/etc/openstack_deploy\""},{"line_number":25,"context_line":"            dest: \"/etc/openstack_deploy.KILO\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"      - name: Copy new env.d files into place"},{"line_number":28,"context_line":"        copy:"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"bae84128_9f95cf88","line":25,"updated":"2016-02-22 21:15:52.000000000","message":"This will change the directory every run. Should move to synchronize + a when condition.","commit_id":"e307990b7ad49d2b9950a602b4b5fe34295de20f"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"26c87fdff6469b0bb327f4b9c64925339f9e35f7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            - aodh"},{"line_number":33,"context_line":"            - haproxy"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"     - name: Remove ceilometer environment memberships"},{"line_number":36,"context_line":"       command: \"{{ upgrade_scripts }}/fix_ceilometer_env.py\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"     - name: Add new neutron environment memberships"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"bae84128_bf6a53b1","line":35,"updated":"2016-02-22 21:15:52.000000000","message":"These two tasks need to be indented one more space.","commit_id":"e307990b7ad49d2b9950a602b4b5fe34295de20f"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"26c87fdff6469b0bb327f4b9c64925339f9e35f7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"     - name: Add new neutron environment memberships"},{"line_number":39,"context_line":"       command: \"{{ upgrade_scripts }}/add_new_neutron_env.py\""},{"line_number":40,"context_line":"  vars:"},{"line_number":41,"context_line":"      upgrade_scripts: \"{{ lookup(\u0027env\u0027, UPGRADE_SCRIPTS) }}\""}],"source_content_type":"text/x-yaml","patch_set":17,"id":"bae84128_1fa25ffd","line":41,"updated":"2016-02-22 21:15:52.000000000","message":"The environment variable isn\u0027t passed in as expected, this fails.","commit_id":"e307990b7ad49d2b9950a602b4b5fe34295de20f"}],"scripts/upgrade-utilities/scripts/fix_ceilometer_env.py":[{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"26c87fdff6469b0bb327f4b9c64925339f9e35f7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        environment \u003d yaml.safe_load(f.read())"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    for var in BLACK_LIST:"},{"line_number":30,"context_line":"        del environment[\u0027component_skel\u0027][var]"},{"line_number":31,"context_line":"        container_skel \u003d environment[\u0027container_skel\u0027]"},{"line_number":32,"context_line":"        container_skel[\u0027ceilometer_api_container\u0027][\u0027contains\u0027].remove(var)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bae84128_3febe314","line":30,"updated":"2016-02-22 21:15:52.000000000","message":"Use \u0027pop\u0027 instead of del here, so we don\u0027t get ValueErrors if the key already doesn\u0027t exist.","commit_id":"e307990b7ad49d2b9950a602b4b5fe34295de20f"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"26c87fdff6469b0bb327f4b9c64925339f9e35f7","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    for var in BLACK_LIST:"},{"line_number":30,"context_line":"        del environment[\u0027component_skel\u0027][var]"},{"line_number":31,"context_line":"        container_skel \u003d environment[\u0027container_skel\u0027]"},{"line_number":32,"context_line":"        container_skel[\u0027ceilometer_api_container\u0027][\u0027contains\u0027].remove(var)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    with open(\u0027/etc/openstack_deploy/env.d/ceilometer.yml\u0027, \u0027w\u0027) as f:"},{"line_number":35,"context_line":"        f.write(yaml.safe_dump(environment, default_flow_style\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":17,"id":"bae84128_5ff6a7f9","line":32,"updated":"2016-02-22 21:15:52.000000000","message":"Need a try/except there\u0027s not a safe \u0027remove\u0027 function in the case that the item isn\u0027t present in the list.","commit_id":"e307990b7ad49d2b9950a602b4b5fe34295de20f"}],"scripts/upgrade-utilities/scripts/migrate_nova_vars.py":[{"author":{"_account_id":14805,"name":"Jimmy McCrory","email":"jimmy.mccrory@gmail.com","username":"jimmy-mccrory"},"change_message_id":"cf3110b0bc9be7181c00fee5d6a724f4b8c54dbd","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        f.write(\u0027\u0027.join(new_contents))"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":49,"context_line":"    if len(args) \u003c 2:"},{"line_number":50,"context_line":"        print(\"Filename required.\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    filename \u003d args[1]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_98392944","line":49,"range":{"start_line":49,"start_character":11,"end_line":49,"end_character":15},"updated":"2016-01-28 20:54:02.000000000","message":"sys.argv","commit_id":"b4f1ac8caeb143a3f92e6db61818823075224ffd"},{"author":{"_account_id":14805,"name":"Jimmy McCrory","email":"jimmy.mccrory@gmail.com","username":"jimmy-mccrory"},"change_message_id":"cf3110b0bc9be7181c00fee5d6a724f4b8c54dbd","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":49,"context_line":"    if len(args) \u003c 2:"},{"line_number":50,"context_line":"        print(\"Filename required.\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    filename \u003d args[1]"},{"line_number":53,"context_line":"    main(filename)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_f8e61db3","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":13},"updated":"2016-01-28 20:54:02.000000000","message":"sys.exit","commit_id":"b4f1ac8caeb143a3f92e6db61818823075224ffd"},{"author":{"_account_id":14805,"name":"Jimmy McCrory","email":"jimmy.mccrory@gmail.com","username":"jimmy-mccrory"},"change_message_id":"cf3110b0bc9be7181c00fee5d6a724f4b8c54dbd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    if len(args) \u003c 2:"},{"line_number":50,"context_line":"        print(\"Filename required.\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    filename \u003d args[1]"},{"line_number":53,"context_line":"    main(filename)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_d816c1a6","line":52,"range":{"start_line":52,"start_character":15,"end_line":52,"end_character":19},"updated":"2016-01-28 20:54:02.000000000","message":"sys.argv","commit_id":"b4f1ac8caeb143a3f92e6db61818823075224ffd"}]}
