)]}'
{"tests/inventory":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3fcd5293a2c18a0aaaf7460a45079fb9be0f70e7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"openstack1 ansible_host\u003d10.100.100.102 ansible_become\u003dTrue ansible_user\u003droot"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[all_containers]"},{"line_number":7,"context_line":"infra1 ansible_host\u003d10.100.100.101 ansible_become\u003dTrue ansible_user\u003droot"},{"line_number":8,"context_line":"openstack1 ansible_host\u003d10.100.100.102 ansible_become\u003dTrue ansible_user\u003droot"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"[rabbitmq_all]"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"ba0121b8_64fad344","line":7,"range":{"start_line":7,"start_character":6,"end_line":7,"end_character":72},"updated":"2016-03-31 11:10:16.000000000","message":"Did all this have to be repeated? I\u0027m under the impression that after it\u0027s defined in the \u0027all\u0027 group the rest can simply refer to the hosts by name.","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"},{"author":{"_account_id":7307,"name":"Matt Thompson","email":"mattt@defunct.ca","username":"mattt416"},"change_message_id":"38c7ee467d96d1f6fdfab9d611b982101335b44e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"openstack1 ansible_host\u003d10.100.100.102 ansible_become\u003dTrue ansible_user\u003droot"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[all_containers]"},{"line_number":7,"context_line":"infra1 ansible_host\u003d10.100.100.101 ansible_become\u003dTrue ansible_user\u003droot"},{"line_number":8,"context_line":"openstack1 ansible_host\u003d10.100.100.102 ansible_become\u003dTrue ansible_user\u003droot"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"[rabbitmq_all]"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"ba0121b8_8a43a941","line":7,"range":{"start_line":7,"start_character":6,"end_line":7,"end_character":72},"in_reply_to":"ba0121b8_64fad344","updated":"2016-03-31 13:15:55.000000000","message":"Looks right -- I\u0027ve since updated!","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"}],"tests/test-install-glance.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3fcd5293a2c18a0aaaf7460a45079fb9be0f70e7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  roles:"},{"line_number":63,"context_line":"    - role: \"os_glance\""},{"line_number":64,"context_line":"  vars:"},{"line_number":65,"context_line":"    external_lb_vip_address: 10.100.100.102"},{"line_number":66,"context_line":"    internal_lb_vip_address: 10.100.100.102"},{"line_number":67,"context_line":"    glance_galera_address: 10.100.100.101"},{"line_number":68,"context_line":"    glance_galera_database: glance"},{"line_number":69,"context_line":"    glance_container_mysql_password: \"SuperSecrete\""},{"line_number":70,"context_line":"    galera_client_drop_config_file: false"},{"line_number":71,"context_line":"    galera_root_password: \"secrete\""},{"line_number":72,"context_line":"    glance_rabbitmq_password: \"secrete\""},{"line_number":73,"context_line":"    glance_rabbitmq_userid: glance"},{"line_number":74,"context_line":"    glance_rabbitmq_vhost: /glance"},{"line_number":75,"context_line":"    rabbitmq_servers: 10.100.100.101"},{"line_number":76,"context_line":"    rabbitmq_use_ssl: true"},{"line_number":77,"context_line":"    rabbitmq_port: 5671"},{"line_number":78,"context_line":"    keystone_admin_user_name: admin"},{"line_number":79,"context_line":"    keystone_admin_tenant_name: admin"},{"line_number":80,"context_line":"    keystone_auth_admin_password: \"SuperSecretePassword\""},{"line_number":81,"context_line":"    keystone_service_adminuri_insecure: false"},{"line_number":82,"context_line":"    keystone_service_internaluri_insecure: false"},{"line_number":83,"context_line":"    keystone_service_internaluri: \"http://{{ internal_lb_vip_address }}:5000\""},{"line_number":84,"context_line":"    keystone_service_internalurl: \"{{ keystone_service_internaluri }}/v3\""},{"line_number":85,"context_line":"    keystone_service_adminuri: \"http://{{ internal_lb_vip_address }}:35357\""},{"line_number":86,"context_line":"    keystone_service_adminurl: \"{{ keystone_service_adminuri }}/v3\""},{"line_number":87,"context_line":"    glance_venv_tag: \"testing\""},{"line_number":88,"context_line":"    glance_developer_mode: true"},{"line_number":89,"context_line":"    glance_git_install_branch: stable/mitaka"},{"line_number":90,"context_line":"    glance_requirements_git_install_branch: stable/mitaka"},{"line_number":91,"context_line":"    glance_service_password: \"secrete\""},{"line_number":92,"context_line":"    glance_profiler_hmac_key: \"secrete\""},{"line_number":93,"context_line":"    openrc_os_auth_url: \"http://127.0.0.1:5000/v3\""},{"line_number":94,"context_line":"    openrc_os_password: \"{{ keystone_auth_admin_password }}\""},{"line_number":95,"context_line":"    openrc_os_domain_name: \"Default\""},{"line_number":96,"context_line":"    memcached_servers: 127.0.0.1"},{"line_number":97,"context_line":"    memcached_encryption_key: \"secrete\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_c4b8ff77","line":97,"range":{"start_line":65,"start_character":0,"end_line":97,"end_character":39},"updated":"2016-03-31 11:10:16.000000000","message":"Would it make better sense to have all these vars in a file which we include across all the plays? It seems to me to be more maintainable that way.","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"},{"author":{"_account_id":7307,"name":"Matt Thompson","email":"mattt@defunct.ca","username":"mattt416"},"change_message_id":"38c7ee467d96d1f6fdfab9d611b982101335b44e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  roles:"},{"line_number":63,"context_line":"    - role: \"os_glance\""},{"line_number":64,"context_line":"  vars:"},{"line_number":65,"context_line":"    external_lb_vip_address: 10.100.100.102"},{"line_number":66,"context_line":"    internal_lb_vip_address: 10.100.100.102"},{"line_number":67,"context_line":"    glance_galera_address: 10.100.100.101"},{"line_number":68,"context_line":"    glance_galera_database: glance"},{"line_number":69,"context_line":"    glance_container_mysql_password: \"SuperSecrete\""},{"line_number":70,"context_line":"    galera_client_drop_config_file: false"},{"line_number":71,"context_line":"    galera_root_password: \"secrete\""},{"line_number":72,"context_line":"    glance_rabbitmq_password: \"secrete\""},{"line_number":73,"context_line":"    glance_rabbitmq_userid: glance"},{"line_number":74,"context_line":"    glance_rabbitmq_vhost: /glance"},{"line_number":75,"context_line":"    rabbitmq_servers: 10.100.100.101"},{"line_number":76,"context_line":"    rabbitmq_use_ssl: true"},{"line_number":77,"context_line":"    rabbitmq_port: 5671"},{"line_number":78,"context_line":"    keystone_admin_user_name: admin"},{"line_number":79,"context_line":"    keystone_admin_tenant_name: admin"},{"line_number":80,"context_line":"    keystone_auth_admin_password: \"SuperSecretePassword\""},{"line_number":81,"context_line":"    keystone_service_adminuri_insecure: false"},{"line_number":82,"context_line":"    keystone_service_internaluri_insecure: false"},{"line_number":83,"context_line":"    keystone_service_internaluri: \"http://{{ internal_lb_vip_address }}:5000\""},{"line_number":84,"context_line":"    keystone_service_internalurl: \"{{ keystone_service_internaluri }}/v3\""},{"line_number":85,"context_line":"    keystone_service_adminuri: \"http://{{ internal_lb_vip_address }}:35357\""},{"line_number":86,"context_line":"    keystone_service_adminurl: \"{{ keystone_service_adminuri }}/v3\""},{"line_number":87,"context_line":"    glance_venv_tag: \"testing\""},{"line_number":88,"context_line":"    glance_developer_mode: true"},{"line_number":89,"context_line":"    glance_git_install_branch: stable/mitaka"},{"line_number":90,"context_line":"    glance_requirements_git_install_branch: stable/mitaka"},{"line_number":91,"context_line":"    glance_service_password: \"secrete\""},{"line_number":92,"context_line":"    glance_profiler_hmac_key: \"secrete\""},{"line_number":93,"context_line":"    openrc_os_auth_url: \"http://127.0.0.1:5000/v3\""},{"line_number":94,"context_line":"    openrc_os_password: \"{{ keystone_auth_admin_password }}\""},{"line_number":95,"context_line":"    openrc_os_domain_name: \"Default\""},{"line_number":96,"context_line":"    memcached_servers: 127.0.0.1"},{"line_number":97,"context_line":"    memcached_encryption_key: \"secrete\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_ca492162","line":97,"range":{"start_line":65,"start_character":0,"end_line":97,"end_character":39},"in_reply_to":"ba0121b8_c4b8ff77","updated":"2016-03-31 13:15:55.000000000","message":"Done","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"}],"tests/test-install-keystone.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3fcd5293a2c18a0aaaf7460a45079fb9be0f70e7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    keystone_developer_mode: true"},{"line_number":81,"context_line":"    keystone_git_install_branch: stable/mitaka"},{"line_number":82,"context_line":"    keystone_requirements_git_install_branch: stable/mitaka"},{"line_number":83,"context_line":"    keystone_auth_admin_token: \"SuperSecreteTestToken\""},{"line_number":84,"context_line":"    keystone_auth_admin_password: \"SuperSecretePassword\""},{"line_number":85,"context_line":"    keystone_service_password: \"secrete\""},{"line_number":86,"context_line":"    keystone_rabbitmq_password: \"secrete\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_8469e7fb","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":54},"updated":"2016-03-31 11:10:16.000000000","message":"This shouldn\u0027t be needed any more.","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"},{"author":{"_account_id":7307,"name":"Matt Thompson","email":"mattt@defunct.ca","username":"mattt416"},"change_message_id":"38c7ee467d96d1f6fdfab9d611b982101335b44e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    keystone_developer_mode: true"},{"line_number":81,"context_line":"    keystone_git_install_branch: stable/mitaka"},{"line_number":82,"context_line":"    keystone_requirements_git_install_branch: stable/mitaka"},{"line_number":83,"context_line":"    keystone_auth_admin_token: \"SuperSecreteTestToken\""},{"line_number":84,"context_line":"    keystone_auth_admin_password: \"SuperSecretePassword\""},{"line_number":85,"context_line":"    keystone_service_password: \"secrete\""},{"line_number":86,"context_line":"    keystone_rabbitmq_password: \"secrete\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_8a6a89b1","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":54},"in_reply_to":"ba0121b8_8469e7fb","updated":"2016-03-31 13:15:55.000000000","message":"Done","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"}],"tests/test-prepare-host.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3fcd5293a2c18a0aaaf7460a45079fb9be0f70e7","unresolved":false,"context_lines":[{"line_number":58,"context_line":"          name: \"trusty.tgz\""},{"line_number":59,"context_line":"          sha256sum: \"56c6a6e132ea7d10be2f3e8104f47136ccf408b30e362133f0dc4a0a9adb4d0c\""},{"line_number":60,"context_line":"          chroot_path: trusty/rootfs-amd64"},{"line_number":61,"context_line":"      # The $HOME directory is mocked to work with tox"},{"line_number":62,"context_line":"      #  by defining the \u0027ansible_env\u0027 hash. This should"},{"line_number":63,"context_line":"      #  NEVER be done outside of testing."},{"line_number":64,"context_line":"      ansible_env:  ## NEVER DO THIS OUTSIDE OF TESTING"},{"line_number":65,"context_line":"        HOME: \"/tmp\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_9f05b012","line":65,"range":{"start_line":61,"start_character":0,"end_line":65,"end_character":20},"updated":"2016-03-31 11:10:16.000000000","message":"I\u0027m not sure that this is required at all.","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"},{"author":{"_account_id":7307,"name":"Matt Thompson","email":"mattt@defunct.ca","username":"mattt416"},"change_message_id":"38c7ee467d96d1f6fdfab9d611b982101335b44e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"          name: \"trusty.tgz\""},{"line_number":59,"context_line":"          sha256sum: \"56c6a6e132ea7d10be2f3e8104f47136ccf408b30e362133f0dc4a0a9adb4d0c\""},{"line_number":60,"context_line":"          chroot_path: trusty/rootfs-amd64"},{"line_number":61,"context_line":"      # The $HOME directory is mocked to work with tox"},{"line_number":62,"context_line":"      #  by defining the \u0027ansible_env\u0027 hash. This should"},{"line_number":63,"context_line":"      #  NEVER be done outside of testing."},{"line_number":64,"context_line":"      ansible_env:  ## NEVER DO THIS OUTSIDE OF TESTING"},{"line_number":65,"context_line":"        HOME: \"/tmp\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_ca6001d2","line":65,"range":{"start_line":61,"start_character":0,"end_line":65,"end_character":20},"in_reply_to":"ba0121b8_9f05b012","updated":"2016-03-31 13:15:55.000000000","message":"Done","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"}],"tests/test-prepare-keys.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3fcd5293a2c18a0aaaf7460a45079fb9be0f70e7","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":"# NOTE: we use become_user because setting become: no or become: false"},{"line_number":17,"context_line":"#       doesn\u0027t seem to override the ansible_become\u003dtrue in the"},{"line_number":18,"context_line":"#       inventory"},{"line_number":19,"context_line":"- name: Playbook for establishing ssh keys"},{"line_number":20,"context_line":"  hosts: localhost"},{"line_number":21,"context_line":"  become_user: \"{{ ansible_ssh_user }}\""},{"line_number":22,"context_line":"  pre_tasks:"},{"line_number":23,"context_line":"    - name: Create ssh key pair for root"},{"line_number":24,"context_line":"      user:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_df2288a2","line":21,"range":{"start_line":16,"start_character":0,"end_line":21,"end_character":39},"updated":"2016-03-31 11:10:16.000000000","message":"Ah, nice find!","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3fcd5293a2c18a0aaaf7460a45079fb9be0f70e7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        ssh_key_bits: 2048"},{"line_number":28,"context_line":"        ssh_key_file: \".ssh/id_rsa\""},{"line_number":29,"context_line":"    - name: Get the calling user\u0027s key"},{"line_number":30,"context_line":"      command: cat ~/.ssh/id_rsa.pub"},{"line_number":31,"context_line":"      register: key_get"},{"line_number":32,"context_line":"    - set_fact:"},{"line_number":33,"context_line":"        lxc_container_ssh_key: \"{{ key_get.stdout }}\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_3f43c443","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":23},"updated":"2016-03-31 11:10:16.000000000","message":"It\u0027s probably better to slurp this up, but this is not serious as it appears to work quite consistently.","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"},{"author":{"_account_id":7307,"name":"Matt Thompson","email":"mattt@defunct.ca","username":"mattt416"},"change_message_id":"38c7ee467d96d1f6fdfab9d611b982101335b44e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        ssh_key_bits: 2048"},{"line_number":28,"context_line":"        ssh_key_file: \".ssh/id_rsa\""},{"line_number":29,"context_line":"    - name: Get the calling user\u0027s key"},{"line_number":30,"context_line":"      command: cat ~/.ssh/id_rsa.pub"},{"line_number":31,"context_line":"      register: key_get"},{"line_number":32,"context_line":"    - set_fact:"},{"line_number":33,"context_line":"        lxc_container_ssh_key: \"{{ key_get.stdout }}\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ba0121b8_cab76138","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":23},"in_reply_to":"ba0121b8_3f43c443","updated":"2016-03-31 13:15:55.000000000","message":"Haven\u0027t done this -- this review is starting to turn into a megapatch so I\u0027ll hold off now.","commit_id":"8da2bef9fad6bf86880bc18fc94166e24ab66615"}]}
