)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16233,"name":"Mauricio Lima","email":"mauriciolimab@gmail.com","username":"limamauricio"},"change_message_id":"28b2748fc3ebddd93e905c780b49d0abe0bc4a11","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Co-Authored-By: Sam Yaple \u003csam@yaple.net\u003e"},{"line_number":13,"context_line":"Change-Id: I88e566a19ed813b0e3eef65ef7139ccfaa0c2700"},{"line_number":14,"context_line":"Implements: blueprint upgrade-rabbitmq"},{"line_number":15,"context_line":"Partially-implements: blueprint upgrade-kolla"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1af94dfe_1e9332fb","line":15,"range":{"start_line":15,"start_character":22,"end_line":15,"end_character":45},"updated":"2016-03-18 19:00:17.000000000","message":"wrong link","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"b846e0e2eaf9d68af6202da07c2fe5f7a54e64da","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Co-Authored-By: Sam Yaple \u003csam@yaple.net\u003e"},{"line_number":13,"context_line":"Change-Id: I88e566a19ed813b0e3eef65ef7139ccfaa0c2700"},{"line_number":14,"context_line":"Implements: blueprint upgrade-rabbitmq"},{"line_number":15,"context_line":"Partially-implements: blueprint upgrade-kolla"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1af94dfe_f4a787a4","line":15,"range":{"start_line":15,"start_character":22,"end_line":15,"end_character":45},"in_reply_to":"1af94dfe_1e9332fb","updated":"2016-03-18 19:21:12.000000000","message":"this is not a wrong link, sdake marked the blueprint implemented before it was","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"}],"ansible/roles/rabbitmq/tasks/upgrade.yml":[{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"b5ae561c011418d20bb88a00a9b5eb5a6a90e6d7","unresolved":false,"context_lines":[{"line_number":2,"context_line":"- include: config.yml"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"- name: Find gospel node"},{"line_number":5,"context_line":"  shell: docker exec -t rabbitmq rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027 | grep -i gospel | cut -d\\\u0027 -f2 | cut -d@ -f2"},{"line_number":6,"context_line":"  register: gospel_node"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Stopping non-gospel nodes"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7af24918_56cdbf83","line":5,"updated":"2016-03-03 16:46:18.000000000","message":"you can\u0027t use the shell module. recommend command+register","commit_id":"1b2d8b3d0431a9fc32f079005243e8f1c6017dd4"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"c65f4c98f694de10dcebd489a885cf5cea52accc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"- include: config.yml"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"- name: Find gospel node"},{"line_number":5,"context_line":"  shell: docker exec -t rabbitmq rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027 | grep -i gospel | cut -d\\\u0027 -f2 | cut -d@ -f2"},{"line_number":6,"context_line":"  register: gospel_node"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Stopping non-gospel nodes"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7af24918_5a3dcfdb","line":5,"in_reply_to":"7af24918_56cdbf83","updated":"2016-03-03 23:06:26.000000000","message":"Agreed. Please refer ansible/roles/neutron/tasks/start.yml as an example (search for \"docker exec\" in this file).","commit_id":"1b2d8b3d0431a9fc32f079005243e8f1c6017dd4"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"b5ae561c011418d20bb88a00a9b5eb5a6a90e6d7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    name: \"rabbitmq\""},{"line_number":13,"context_line":"  when: ansible_hostname !\u003d gospel_node[\u0027stdout\u0027]"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- include: start.yml"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7af24918_3680f3f6","line":15,"updated":"2016-03-03 16:46:18.000000000","message":"this should be run _first_ on only the gospel node, then on all of them. Otherwise the othernodes might start up and try joining the not-yet-stopped gospel node","commit_id":"1b2d8b3d0431a9fc32f079005243e8f1c6017dd4"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"2e50573f178efbcfa0be319ec54cd88e45a3d7a4","unresolved":false,"context_lines":[{"line_number":2,"context_line":"- include: config.yml"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"- name: Find gospel node"},{"line_number":5,"context_line":"  command: docker exec -t rabbitmq python /get_gospel_node.py"},{"line_number":6,"context_line":"  changed_when: \"{{ (gospel_node.stdout | from_json).changed }}\""},{"line_number":7,"context_line":"  failed_when: \"{{ (gospel_node.stdout | from_json).failed }}\""},{"line_number":8,"context_line":"  register: gospel_node"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5aef4532_a88b0467","line":5,"updated":"2016-03-09 23:21:13.000000000","message":"if this command is excecutable it shouldn\u0027t need python to launch it, shebang should launch it","commit_id":"dc4ae505efc89366a27b02affd4dd9b47656c524"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"5c4f8e4fbd1bbe97e77e7ad696fd0fd43c8bf266","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    action: \"stop_container\""},{"line_number":13,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":14,"context_line":"    name: \"rabbitmq\""},{"line_number":15,"context_line":"  when: ansible_hostname !\u003d (gospel_node.stdout | from_json).hostname"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"#start gospel nodes"},{"line_number":18,"context_line":"- include: start.yml"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5aef4532_1dbdefd7","line":15,"updated":"2016-03-10 16:24:59.000000000","message":"this use of hostname raises the same issue as did with ceph that we just had to change to ip addresses. im not sure what to do about that","commit_id":"cba1dcf4910c5aba72f52eecc0e04554db7f3a83"},{"author":{"_account_id":16233,"name":"Mauricio Lima","email":"mauriciolimab@gmail.com","username":"limamauricio"},"change_message_id":"c111a70829f26d3367ec883759cbaf0c181b6080","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    name: \"rabbitmq\""},{"line_number":15,"context_line":"  when: ansible_hostname !\u003d (gospel_node.stdout | from_json).hostname"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"#start gospel nodes"},{"line_number":18,"context_line":"- include: start.yml"},{"line_number":19,"context_line":"  when: ansible_hostname \u003d\u003d (gospel_node.stdout | from_json).hostname"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1af94dfe_dfd17ffd","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":19},"updated":"2016-03-15 19:41:28.000000000","message":"I think you can remove this line.","commit_id":"cba1dcf4910c5aba72f52eecc0e04554db7f3a83"},{"author":{"_account_id":16233,"name":"Mauricio Lima","email":"mauriciolimab@gmail.com","username":"limamauricio"},"change_message_id":"c111a70829f26d3367ec883759cbaf0c181b6080","unresolved":false,"context_lines":[{"line_number":18,"context_line":"- include: start.yml"},{"line_number":19,"context_line":"  when: ansible_hostname \u003d\u003d (gospel_node.stdout | from_json).hostname"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# start non-gospel nodes"},{"line_number":22,"context_line":"- include: start.yml"},{"line_number":23,"context_line":"  when: ansible_hostname !\u003d (gospel_node.stdout | from_json).hostname"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1af94dfe_9ffed769","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":24},"updated":"2016-03-15 19:41:28.000000000","message":"ditto","commit_id":"cba1dcf4910c5aba72f52eecc0e04554db7f3a83"}],"docker/rabbitmq/Dockerfile.j2":[{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"2e50573f178efbcfa0be319ec54cd88e45a3d7a4","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"COPY extend_start.sh /usr/local/bin/kolla_extend_start"},{"line_number":31,"context_line":"COPY rabbitmq_sudoers /etc/sudoers.d/rabbitmq_sudoers"},{"line_number":32,"context_line":"COPY get_gospel_node.py /get_gospel_node.py"},{"line_number":33,"context_line":"RUN chmod 755 /usr/local/bin/kolla_extend_start \\"},{"line_number":34,"context_line":"    \u0026\u0026 chmod 750 /etc/sudoers.d \\"},{"line_number":35,"context_line":"    \u0026\u0026 chmod 440 /etc/sudoers.d/rabbitmq_sudoers \\"}],"source_content_type":"text/x-jinja2","patch_set":3,"id":"5aef4532_c8e5b038","line":32,"updated":"2016-03-09 23:21:13.000000000","message":"please stick to FHS standards (put this in /usr/local/bin/","commit_id":"dc4ae505efc89366a27b02affd4dd9b47656c524"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"4f370ee0ac2456ee8e0e067e7da0fec05eb461d9","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"COPY extend_start.sh /usr/local/bin/kolla_extend_start"},{"line_number":31,"context_line":"COPY rabbitmq_sudoers /etc/sudoers.d/rabbitmq_sudoers"},{"line_number":32,"context_line":"COPY get_gospel_node.py /get_gospel_node.py"},{"line_number":33,"context_line":"RUN chmod 755 /usr/local/bin/kolla_extend_start \\"},{"line_number":34,"context_line":"    \u0026\u0026 chmod 750 /etc/sudoers.d \\"},{"line_number":35,"context_line":"    \u0026\u0026 chmod 440 /etc/sudoers.d/rabbitmq_sudoers \\"}],"source_content_type":"text/x-jinja2","patch_set":3,"id":"5aef4532_85b6eaf6","line":32,"in_reply_to":"5aef4532_c8e5b038","updated":"2016-03-10 03:33:31.000000000","message":"Agreed.","commit_id":"dc4ae505efc89366a27b02affd4dd9b47656c524"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"d77eecd78a5a4c7f598641b3afbd4b34d6c54e2b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \u0026\u0026 chmod 750 /etc/sudoers.d \\"},{"line_number":35,"context_line":"    \u0026\u0026 chmod 440 /etc/sudoers.d/rabbitmq_sudoers \\"},{"line_number":36,"context_line":"    \u0026\u0026 usermod -a -G kolla rabbitmq"},{"line_number":37,"context_line":"RUN chmod +x /usr/local/bin/get_gospel_node.py"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"{{ include_footer }}"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"5aef4532_52080628","line":37,"updated":"2016-03-10 16:08:42.000000000","message":"please combine this with like 33 rather than making a new layer. combining with line 33 will match other dockerfiles","commit_id":"6af61e77e78e7487833ec8aad0045c80c9af0419"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"4d4d0f06ca1bbcd756a6cb1738a2ec82d35a0217","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \u0026\u0026 chmod 750 /etc/sudoers.d \\"},{"line_number":35,"context_line":"    \u0026\u0026 chmod 440 /etc/sudoers.d/rabbitmq_sudoers \\"},{"line_number":36,"context_line":"    \u0026\u0026 usermod -a -G kolla rabbitmq"},{"line_number":37,"context_line":"    \u0026\u0026 chmod +x /usr/local/bin/get_gospel_node.py"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"{{ include_footer }}"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":6,"id":"5aef4532_52fda66c","line":37,"updated":"2016-03-10 16:14:55.000000000","message":"please combine this with line 33 to match our other dockerfiles","commit_id":"f2d1dd030b0fae3d41bc4c7d54e1e7e3008ee0d4"}],"docker/rabbitmq/get_gospel_node.py":[{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"d9b483d9c43cdc16fc805a25136a6d45a500620c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    result \u003d {"},{"line_number":24,"context_line":"        \u0027failed\u0027: False,"},{"line_number":25,"context_line":"        \u0027hostname\u0027: gospel_node,"},{"line_number":26,"context_line":"        \u0027changed\u0027: True"},{"line_number":27,"context_line":"    }"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"print json.dumps(result)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_c86010d2","line":26,"updated":"2016-03-09 23:19:01.000000000","message":"changed shouldnt be true","commit_id":"dc4ae505efc89366a27b02affd4dd9b47656c524"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"d9b483d9c43cdc16fc805a25136a6d45a500620c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        \u0027hostname\u0027: gospel_node,"},{"line_number":26,"context_line":"        \u0027changed\u0027: True"},{"line_number":27,"context_line":"    }"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"print json.dumps(result)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_487a4078","line":28,"updated":"2016-03-09 23:19:01.000000000","message":"please and a except Exception block as well, under all circumstances we want to exist with json not a stacktrace (though please put stack trace in json for review)","commit_id":"dc4ae505efc89366a27b02affd4dd9b47656c524"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"4f370ee0ac2456ee8e0e067e7da0fec05eb461d9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027changed\u0027: True"},{"line_number":27,"context_line":"    }"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"print json.dumps(result)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_e5ea4eda","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":24},"updated":"2016-03-10 03:33:31.000000000","message":"Wrong usage of print here. This failed py3.x PEP8 test. Please resolve it.\n\nhttp://logs.openstack.org/69/287969/3/check/gate-kolla-pep8/c86abdb/console.html#_2016-03-09_23_18_06_463","commit_id":"dc4ae505efc89366a27b02affd4dd9b47656c524"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"1347001935f29d0e35763e32fd7aadc1bbce36b7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027; exit 0\","},{"line_number":24,"context_line":"    shell\u003dTrue, stderr\u003dsubprocess.STDOUT)"},{"line_number":25,"context_line":"pattern \u003d \"(?\u003c\u003dgospel).*\""},{"line_number":26,"context_line":"try:"},{"line_number":27,"context_line":"    gospel_node \u003d re.search("},{"line_number":28,"context_line":"        \"(?\u003c\u003d@)[a-zA-Z\\-0-9]+\","},{"line_number":29,"context_line":"        re.search(\"(?\u003c\u003dgospel).*\", rabbit_status).group(0)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_effcae73","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":3},"updated":"2016-03-11 02:14:53.000000000","message":"Doesn\u0027t it make sense to move \"try:\" before line 22 and enclose \"subprocess.check_output\" as well inside the \"try\" ? This way, if an exception is raised by \"subprocess.check_output\" or by rabbitmqctl, it will be caught by the \"except\" block in line 37.","commit_id":"cba1dcf4910c5aba72f52eecc0e04554db7f3a83"}],"docker/rabbitmq/rabbitmq_get_gospel_node.py":[{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"90b460a5485eecad1fc3c3069734ee54e8ffba1d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    term \u003d re.sub(\u0027:([a-z].*?)}\u0027, r\u0027:\"\\1\"}\u0027, term)"},{"line_number":26,"context_line":"    return json.loads(term)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"try:"},{"line_number":29,"context_line":"    raw_status \u003d subprocess.check_output("},{"line_number":30,"context_line":"        \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":31,"context_line":"        shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":32,"context_line":"    )"},{"line_number":33,"context_line":"    if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":34,"context_line":"        raise AttributeError"},{"line_number":35,"context_line":"    status \u003d convert_erlang_to_dict(\u0027\\n\u0027.join(raw_status.split(\u0027\\n\u0027)[1:-3]))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    gospel_node \u003d None"},{"line_number":38,"context_line":"    for msg in status:"},{"line_number":39,"context_line":"        if \u0027gospel\u0027 in msg:"},{"line_number":40,"context_line":"            gospel_node \u003d msg[\u0027gospel\u0027][\u0027node\u0027].split(\u0027@\u0027)[1]"},{"line_number":41,"context_line":"    if gospel_node is None:"},{"line_number":42,"context_line":"        raise AttributeError"},{"line_number":43,"context_line":"except AttributeError:"},{"line_number":44,"context_line":"    result \u003d {"},{"line_number":45,"context_line":"        \u0027failed\u0027: True,"},{"line_number":46,"context_line":"        \u0027error\u0027: raw_status,"},{"line_number":47,"context_line":"        \u0027changed\u0027: True"},{"line_number":48,"context_line":"    }"},{"line_number":49,"context_line":"except Exception as e:"},{"line_number":50,"context_line":"    result \u003d {"},{"line_number":51,"context_line":"        \u0027failed\u0027: True,"},{"line_number":52,"context_line":"        \u0027error\u0027: traceback.format_exc(),"},{"line_number":53,"context_line":"        \u0027changed\u0027: True"},{"line_number":54,"context_line":"    }"},{"line_number":55,"context_line":"else:"},{"line_number":56,"context_line":"    result \u003d {"},{"line_number":57,"context_line":"        \u0027failed\u0027: False,"},{"line_number":58,"context_line":"        \u0027hostname\u0027: gospel_node,"},{"line_number":59,"context_line":"        \u0027changed\u0027: False"},{"line_number":60,"context_line":"    }"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"print(json.dumps(result))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1af94dfe_42d06b1f","line":62,"range":{"start_line":28,"start_character":0,"end_line":62,"end_character":25},"updated":"2016-03-18 04:15:00.000000000","message":"Hi Michal, Sam,\n\nI tested this code and there are no issues.  Nice work!\n\nSince this file is called by \"docker exec\", I think it is good to enclose this code in a function like \"def get_gospel_node():\" and call this function in main() and add a main() function to this file.\n\n  def main():\n      get_gospel_node()\n\n  if __name__ \u003d\u003d \u0027__main__\u0027:\n      main()\n\nAll of the following files in kolla are called by \"docker exec \u003ccontainer name\u003e\" and they all have main() function. Hence, for consistency, I think this file must also have a main() function.\n\n  docker/ceph/ceph-mon/fetch_ceph_keys.py\n  docker/base/set_configs.py\n  docker/kolla-toolbox/find_disks.py\n  docker/kolla-toolbox/kolla_keystone_service.py\n  docker/kolla-toolbox/kolla_keystone_user.py\n  docker/kolla-toolbox/kolla_sanity.py\n  docker/kolla-toolbox/kolla_zookeeper.py","commit_id":"3024b3db4c683fc011f0520e3f9139ef2e467b3a"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"68a417a9cf187c4e45dff2fe801fab0645c89547","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    term \u003d re.sub(\u0027:([a-z].*?)}\u0027, r\u0027:\"\\1\"}\u0027, term)"},{"line_number":26,"context_line":"    return json.loads(term)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"try:"},{"line_number":29,"context_line":"    raw_status \u003d subprocess.check_output("},{"line_number":30,"context_line":"        \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":31,"context_line":"        shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":32,"context_line":"    )"},{"line_number":33,"context_line":"    if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":34,"context_line":"        raise AttributeError"},{"line_number":35,"context_line":"    status \u003d convert_erlang_to_dict(\u0027\\n\u0027.join(raw_status.split(\u0027\\n\u0027)[1:-3]))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    gospel_node \u003d None"},{"line_number":38,"context_line":"    for msg in status:"},{"line_number":39,"context_line":"        if \u0027gospel\u0027 in msg:"},{"line_number":40,"context_line":"            gospel_node \u003d msg[\u0027gospel\u0027][\u0027node\u0027].split(\u0027@\u0027)[1]"},{"line_number":41,"context_line":"    if gospel_node is None:"},{"line_number":42,"context_line":"        raise AttributeError"},{"line_number":43,"context_line":"except AttributeError:"},{"line_number":44,"context_line":"    result \u003d {"},{"line_number":45,"context_line":"        \u0027failed\u0027: True,"},{"line_number":46,"context_line":"        \u0027error\u0027: raw_status,"},{"line_number":47,"context_line":"        \u0027changed\u0027: True"},{"line_number":48,"context_line":"    }"},{"line_number":49,"context_line":"except Exception as e:"},{"line_number":50,"context_line":"    result \u003d {"},{"line_number":51,"context_line":"        \u0027failed\u0027: True,"},{"line_number":52,"context_line":"        \u0027error\u0027: traceback.format_exc(),"},{"line_number":53,"context_line":"        \u0027changed\u0027: True"},{"line_number":54,"context_line":"    }"},{"line_number":55,"context_line":"else:"},{"line_number":56,"context_line":"    result \u003d {"},{"line_number":57,"context_line":"        \u0027failed\u0027: False,"},{"line_number":58,"context_line":"        \u0027hostname\u0027: gospel_node,"},{"line_number":59,"context_line":"        \u0027changed\u0027: False"},{"line_number":60,"context_line":"    }"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"print(json.dumps(result))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1af94dfe_78853d58","line":62,"range":{"start_line":28,"start_character":0,"end_line":62,"end_character":25},"in_reply_to":"1af94dfe_42d06b1f","updated":"2016-03-18 13:57:47.000000000","message":"Done","commit_id":"3024b3db4c683fc011f0520e3f9139ef2e467b3a"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"19a64ab612e4ffadfdb3f591093b9f0f64c9996e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    try:"},{"line_number":31,"context_line":"        raw_status \u003d subprocess.check_output("},{"line_number":32,"context_line":"            \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":33,"context_line":"            shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":36,"context_line":"            raise AttributeError"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_e614efa0","line":33,"updated":"2016-03-19 13:45:26.000000000","message":"A file we are already calling in a shell and is not somethign that is dynamic nor changable. There is no risk here at all","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"64db2852ee9f985db38d7f00c039680e53692e05","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    try:"},{"line_number":31,"context_line":"        raw_status \u003d subprocess.check_output("},{"line_number":32,"context_line":"            \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":33,"context_line":"            shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":36,"context_line":"            raise AttributeError"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_8acc218a","line":33,"updated":"2016-03-18 18:20:40.000000000","message":"shell\u003dFalse please unless mandatory - if mandatory please give explanation.","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"82eb70b805b737aaedc7d9716bc2e34b6d2d7e74","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    try:"},{"line_number":31,"context_line":"        raw_status \u003d subprocess.check_output("},{"line_number":32,"context_line":"            \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":33,"context_line":"            shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":36,"context_line":"            raise AttributeError"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_d4708b0d","line":33,"in_reply_to":"1af94dfe_8acc218a","updated":"2016-03-18 19:21:58.000000000","message":"you want me to write a note saying \"rabbitmqctl requires shell\"?","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"0da89a5fc5ff98da776245af1f5b998467138062","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    try:"},{"line_number":31,"context_line":"        raw_status \u003d subprocess.check_output("},{"line_number":32,"context_line":"            \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":33,"context_line":"            shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":36,"context_line":"            raise AttributeError"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_66d45feb","line":33,"in_reply_to":"1af94dfe_d4708b0d","updated":"2016-03-19 13:41:29.000000000","message":"you can put is as a comment in code. but since it\u0027s local file calling local shell inside container, there is little added security risk (if any).","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"f2ffddc2ef2528a16e861cfcff0bf0c32978e8eb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    try:"},{"line_number":31,"context_line":"        raw_status \u003d subprocess.check_output("},{"line_number":32,"context_line":"            \"rabbitmqctl eval \u0027rabbit_clusterer:status().\u0027\","},{"line_number":33,"context_line":"            shell\u003dTrue, stderr\u003dsubprocess.STDOUT"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        if \"Rabbit is running in cluster configuration\" not in raw_status:"},{"line_number":36,"context_line":"            raise AttributeError"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_09cfb929","line":33,"in_reply_to":"1af94dfe_e614efa0","updated":"2016-03-23 15:26:20.000000000","message":"the reason I wanted shell\u003dflase is because bandit flags shell\u003dtrue so no sense ading code to the codebase that bandit will flag (and we will have to override in some way).  So, I take it from this discussion shelll\u003dfalse wont work?","commit_id":"23e7f6c292dd2f9e9f7423897f3d2c9633c38ee2"}]}
