)]}'
{"lib/ironic":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"1dd8bcdfb2197f9741a8ca0e2ce23e20ecf26e83","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Set up default directories"},{"line_number":29,"context_line":"IRONIC_DIR\u003d$DEST/ironic"},{"line_number":30,"context_line":"# Not sure whether there will be a separate client"},{"line_number":31,"context_line":"# for Ironic."},{"line_number":32,"context_line":"#IRONICCLIENT_DIR\u003d$DEST/python-ironicclient"},{"line_number":33,"context_line":"IRONIC_AUTH_CACHE_DIR\u003d${IRONIC_AUTironic/H_CACHE_DIR:-/var/cache/ironic}"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAQn%2F%2B9BU%3D","line":30,"updated":"2013-08-09 12:33:59.000000000","message":"yes, there will be -- we still need to write that :)","commit_id":"e761f41262b7edb5ad026f8980ede29d786ba5e7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"36e981863e45feb51acfe79c64146e885ba3102d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"if [[ -d $IRONIC_DIR/bin ]]; then"},{"line_number":39,"context_line":"    IRONIC_BIN_DIR\u003d$IRONIC_DIR/bin"},{"line_number":40,"context_line":"else"},{"line_number":41,"context_line":"    IRONIC_BIN_DIR\u003d$(get_python_exec_prefix)"},{"line_number":42,"context_line":"fi"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Ironic connection info.  Note the port must be specified."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F9jk%3D","line":41,"updated":"2013-08-19 16:59:19.000000000","message":"I think this is the only line required now, this conditional was for a transition period; it looks like some of the other projects can be cleaned up...","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":38,"context_line":"if [[ -d $IRONIC_DIR/bin ]]; then"},{"line_number":39,"context_line":"    IRONIC_BIN_DIR\u003d$IRONIC_DIR/bin"},{"line_number":40,"context_line":"else"},{"line_number":41,"context_line":"    IRONIC_BIN_DIR\u003d$(get_python_exec_prefix)"},{"line_number":42,"context_line":"fi"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Ironic connection info.  Note the port must be specified."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F0uE%3D","line":41,"in_reply_to":"AAAARn%2F%2F9jk%3D","updated":"2013-08-22 09:28:56.000000000","message":"Done","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"c53b6f413a3eb06136b9f7cb6fc71864970517ed","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# configure_ironic() - Set config files, create data dirs, etc"},{"line_number":58,"context_line":"function configure_ironic() {"},{"line_number":59,"context_line":"    # "},{"line_number":60,"context_line":"    if [[ ! -d $IRONIC_CONF_DIR ]]; then"},{"line_number":61,"context_line":"        sudo mkdir -p $IRONIC_CONF_DIR"},{"line_number":62,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F%2Fu4%3D","line":59,"updated":"2013-08-19 05:19:27.000000000","message":"nit: trailing whitespace. You could delete this line.","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# configure_ironic() - Set config files, create data dirs, etc"},{"line_number":58,"context_line":"function configure_ironic() {"},{"line_number":59,"context_line":"    # "},{"line_number":60,"context_line":"    if [[ ! -d $IRONIC_CONF_DIR ]]; then"},{"line_number":61,"context_line":"        sudo mkdir -p $IRONIC_CONF_DIR"},{"line_number":62,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F0sc%3D","line":59,"in_reply_to":"AAAARn%2F%2F%2Fu4%3D","updated":"2013-08-22 09:28:56.000000000","message":"Done","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"c53b6f413a3eb06136b9f7cb6fc71864970517ed","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    cp $IRONIC_DIR/etc/ironic/ironic.conf.sample $IRONIC_CONF_FILE"},{"line_number":67,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT debug True"},{"line_number":68,"context_line":"    inicomment $IRONIC_CONF_FILE DEFAULT log_file"},{"line_number":69,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT sql_connection $dburl"},{"line_number":70,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT use_syslog $SYSLOG"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    # Configure Ironic conductor, if it was enablem."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F%2FnE%3D","line":69,"updated":"2013-08-19 05:19:27.000000000","message":"\"dburl\" is not defined.\n\nI think we need to use `database_connection_url ironic` instead of \"$dburl\".","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    cp $IRONIC_DIR/etc/ironic/ironic.conf.sample $IRONIC_CONF_FILE"},{"line_number":67,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT debug True"},{"line_number":68,"context_line":"    inicomment $IRONIC_CONF_FILE DEFAULT log_file"},{"line_number":69,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT sql_connection $dburl"},{"line_number":70,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT use_syslog $SYSLOG"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    # Configure Ironic conductor, if it was enablem."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F0sY%3D","line":69,"in_reply_to":"AAAARn%2F%2F%2FnE%3D","updated":"2013-08-22 09:28:56.000000000","message":"Done","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":1894,"name":"Ryota MIBU","email":"r-mibu@cq.jp.nec.com","username":"r-mibu"},"change_message_id":"c53b6f413a3eb06136b9f7cb6fc71864970517ed","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT sql_connection $dburl"},{"line_number":70,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT use_syslog $SYSLOG"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    # Configure Ironic conductor, if it was enablem."},{"line_number":73,"context_line":"    if is_service_enabled ir-cond; then"},{"line_number":74,"context_line":"        configure_ironic_conductor"},{"line_number":75,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F%2FnI%3D","line":72,"updated":"2013-08-19 05:19:27.000000000","message":"s/enablem/enabled/","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT sql_connection $dburl"},{"line_number":70,"context_line":"    iniset $IRONIC_CONF_FILE DEFAULT use_syslog $SYSLOG"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    # Configure Ironic conductor, if it was enablem."},{"line_number":73,"context_line":"    if is_service_enabled ir-cond; then"},{"line_number":74,"context_line":"        configure_ironic_conductor"},{"line_number":75,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F0sU%3D","line":72,"in_reply_to":"AAAARn%2F%2F%2FnI%3D","updated":"2013-08-22 09:28:56.000000000","message":"Done","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"36e981863e45feb51acfe79c64146e885ba3102d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL"},{"line_number":89,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/"},{"line_number":90,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME"},{"line_number":91,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken admin_user ironic"},{"line_number":92,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD"},{"line_number":93,"context_line":"    if is_service_enabled qpid; then"},{"line_number":94,"context_line":"        iniset $IRONIC_CONF_FILE DEFAULT notifier_strategy qpid"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F9l8%3D","line":91,"updated":"2013-08-19 16:59:19.000000000","message":"Where is this user created in Keystone?","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL"},{"line_number":89,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/"},{"line_number":90,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME"},{"line_number":91,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken admin_user ironic"},{"line_number":92,"context_line":"    iniset $IRONIC_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD"},{"line_number":93,"context_line":"    if is_service_enabled qpid; then"},{"line_number":94,"context_line":"        iniset $IRONIC_CONF_FILE DEFAULT notifier_strategy qpid"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2FwKg%3D","line":91,"in_reply_to":"AAAARn%2F%2F9l8%3D","updated":"2013-08-22 09:28:56.000000000","message":"Thank you for spotting this. Fixed","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"}],"stack.sh":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"36e981863e45feb51acfe79c64146e885ba3102d","unresolved":false,"context_lines":[{"line_number":943,"context_line":"    init_glance"},{"line_number":944,"context_line":"fi"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"# Irocni"},{"line_number":947,"context_line":"# ------"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"if is_service_enabled ir-api ir-cond; then"}],"source_content_type":"text/x-sh","patch_set":3,"id":"AAAARn%2F%2F9mo%3D","line":946,"updated":"2013-08-19 16:59:19.000000000","message":"Ironic?","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":943,"context_line":"    init_glance"},{"line_number":944,"context_line":"fi"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"# Irocni"},{"line_number":947,"context_line":"# ------"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"if is_service_enabled ir-api ir-cond; then"}],"source_content_type":"text/x-sh","patch_set":3,"id":"AAAARn%2F%2FwKQ%3D","line":946,"in_reply_to":"AAAARn%2F%2F9mo%3D","updated":"2013-08-22 09:28:56.000000000","message":"Done","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"}],"stackrc":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"36e981863e45feb51acfe79c64146e885ba3102d","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"# baremetal provisionint service"},{"line_number":88,"context_line":"IRONIC_REPO\u003d${IRONIC_REPO:-${GIT_BASE}/openstack/ironic.git}"},{"line_number":89,"context_line":"IRONIC_BRANCH\u003d${IRONIC_BRANCH:-master}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# heat service"},{"line_number":92,"context_line":"HEAT_REPO\u003d${HEAT_REPO:-${GIT_BASE}/openstack/heat.git}"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2F9mw%3D","line":89,"updated":"2013-08-19 16:59:19.000000000","message":"These should be in alphabetical order","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"75add97cc6a0f5dd87c1840465daa6507aa42983","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"# baremetal provisionint service"},{"line_number":88,"context_line":"IRONIC_REPO\u003d${IRONIC_REPO:-${GIT_BASE}/openstack/ironic.git}"},{"line_number":89,"context_line":"IRONIC_BRANCH\u003d${IRONIC_BRANCH:-master}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# heat service"},{"line_number":92,"context_line":"HEAT_REPO\u003d${HEAT_REPO:-${GIT_BASE}/openstack/heat.git}"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2FwJ8%3D","line":89,"in_reply_to":"AAAARn%2F%2F9mw%3D","updated":"2013-08-22 09:28:56.000000000","message":"Done","commit_id":"3adf1d6551df64efd3440e637e8c8a139c8cab0b"}],"unstack.sh":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"c5b10940fd800c930fad35210f11f35717d3b140","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    cleanup_swift"},{"line_number":73,"context_line":"fi"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"# Ironic runs daemons"},{"line_number":76,"context_line":"if is_service_enabled ir-api ir-cond; then"},{"line_number":77,"context_line":"    stop_ironic"},{"line_number":78,"context_line":"    cleanup_ironic"}],"source_content_type":"text/x-sh","patch_set":4,"id":"AAAARn%2F%2Fuwo%3D","line":75,"updated":"2013-08-22 15:55:30.000000000","message":"I missed this last time but it is not a blocker...Swift runs actual daemons, Ironic and most other OpenStack services run under screen, which is cleaned out above.","commit_id":"ce696b60d77752f74924fa133c45910e9d0ef706"}]}
