)]}'
{"tools/create_userrc.sh":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"19e50423ed8e10530977ae4de91011c628741008","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"#admin users expected"},{"line_number":215,"context_line":"function create_or_get_tenant {"},{"line_number":216,"context_line":"    local tenant_name\u003d$1"},{"line_number":217,"context_line":"    local tenant_id\u003d`keystone tenant-list | awk \u0027/\\|[[:space:]]*\u0027\"$tenant_name\"\u0027[[:space:]]*\\|.*\\|/ {print $2}\u0027`"},{"line_number":218,"context_line":"    if [ -n \"$tenant_id\" ]; then"},{"line_number":219,"context_line":"        echo $tenant_id"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAWH%2F%2Foe4%3D","side":"PARENT","line":216,"updated":"2014-03-14 22:28:35.000000000","message":"How about simplifying these functions since we\u0027ve got the benefit of OSC to lean on:\n\n  function create_or_get {\n      local name\u003d$1\n      local object\u003d$2\n\n      local id\n      eval $(openstack project show -f shell -c id $name)\n      if [[ -z $id ]]; then\n          eval $(openstack project create -f shell -c id --size 1 $name)\n      fi\n      echo $id\n  }\n\n  tenant_id\u003d$(create_or_get project \"$TENANT\")","commit_id":"92b400fd6383d5182bc196e1a33f89b3c5e42723"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c87a6118b6d9a11aa94a8e52802b5db706d0ad16","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"#admin users expected"},{"line_number":215,"context_line":"function create_or_get_tenant {"},{"line_number":216,"context_line":"    local tenant_name\u003d$1"},{"line_number":217,"context_line":"    local tenant_id\u003d`keystone tenant-list | awk \u0027/\\|[[:space:]]*\u0027\"$tenant_name\"\u0027[[:space:]]*\\|.*\\|/ {print $2}\u0027`"},{"line_number":218,"context_line":"    if [ -n \"$tenant_id\" ]; then"},{"line_number":219,"context_line":"        echo $tenant_id"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAWH%2F%2FbpQ%3D","side":"PARENT","line":216,"in_reply_to":"AAAAWH%2F%2Foe4%3D","updated":"2014-03-17 23:00:42.000000000","message":"I managed to change this part","commit_id":"92b400fd6383d5182bc196e1a33f89b3c5e42723"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"19e50423ed8e10530977ae4de91011c628741008","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"if [ $MODE !\u003d \"create\" ]; then"},{"line_number":242,"context_line":"# looks like I can\u0027t ask for all tenant related to a specified  user"},{"line_number":243,"context_line":"    for tenant_id_at_name in `openstack project list | awk \u0027BEGIN {IGNORECASE \u003d 1} /true[[:space:]]*\\|$/ {print  $2 \"@\" $4}\u0027`; do"},{"line_number":244,"context_line":"        read tenant_id tenant_name \u003c\u003c\u003c `echo \"$tenant_id_at_name\" | sed \u0027s/@/ /\u0027`"},{"line_number":245,"context_line":"        if echo $SKIP_TENANT| grep -q \",$tenant_name,\"; then"},{"line_number":246,"context_line":"            continue;"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAWH%2F%2Fn9s%3D","line":243,"updated":"2014-03-14 22:28:35.000000000","message":"This looks for only enabled projects, more is needed here.\n\nThese loops can be simplified like this:\n\n  while IFS\u003d, read id name desc enabled; do\n      [[ ,${SKIP_TENANT}, \u003d~ ,${name}, || ${enabled,} \u003d~ \"true\" ]] \u0026\u0026 continue\n\n      # loop contents\n\n  done \u003c \u003c(openstack project list --long -f csv --quote none)\n\nIs this stuff too exotic?","commit_id":"6166464aae06a2700ea029ddcaa39ab48e614a52"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8d36477d54cd81a598bff8acf4d71bdae96b358b","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"if [ $MODE !\u003d \"create\" ]; then"},{"line_number":242,"context_line":"# looks like I can\u0027t ask for all tenant related to a specified  user"},{"line_number":243,"context_line":"    for tenant_id_at_name in `openstack project list | awk \u0027BEGIN {IGNORECASE \u003d 1} /true[[:space:]]*\\|$/ {print  $2 \"@\" $4}\u0027`; do"},{"line_number":244,"context_line":"        read tenant_id tenant_name \u003c\u003c\u003c `echo \"$tenant_id_at_name\" | sed \u0027s/@/ /\u0027`"},{"line_number":245,"context_line":"        if echo $SKIP_TENANT| grep -q \",$tenant_name,\"; then"},{"line_number":246,"context_line":"            continue;"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAWH%2F%2FaZo%3D","line":243,"in_reply_to":"AAAAWH%2F%2FarI%3D","updated":"2014-03-18 02:16:47.000000000","message":"Thanks Terry, great suggestion.","commit_id":"6166464aae06a2700ea029ddcaa39ab48e614a52"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"120f165cff059f8e1d80123c41e404cc59a8fe1a","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"if [ $MODE !\u003d \"create\" ]; then"},{"line_number":242,"context_line":"# looks like I can\u0027t ask for all tenant related to a specified  user"},{"line_number":243,"context_line":"    for tenant_id_at_name in `openstack project list | awk \u0027BEGIN {IGNORECASE \u003d 1} /true[[:space:]]*\\|$/ {print  $2 \"@\" $4}\u0027`; do"},{"line_number":244,"context_line":"        read tenant_id tenant_name \u003c\u003c\u003c `echo \"$tenant_id_at_name\" | sed \u0027s/@/ /\u0027`"},{"line_number":245,"context_line":"        if echo $SKIP_TENANT| grep -q \",$tenant_name,\"; then"},{"line_number":246,"context_line":"            continue;"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAWH%2F%2FarI%3D","line":243,"in_reply_to":"AAAAWH%2F%2FbpA%3D","updated":"2014-03-18 01:31:16.000000000","message":"Doing this kind of thing is more intuitive to me:\n\n   openstack project list --long -f csv |\n   grep \u0027,True\u0027 |\n   grep -v \",${SKIP_TENANT},\" |\n   while IFS\u003d, read tenant_id tenant_name desc enabled \n   do\n      echo $tenant_id\n      echo $tenant_name\n   done","commit_id":"6166464aae06a2700ea029ddcaa39ab48e614a52"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c87a6118b6d9a11aa94a8e52802b5db706d0ad16","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"if [ $MODE !\u003d \"create\" ]; then"},{"line_number":242,"context_line":"# looks like I can\u0027t ask for all tenant related to a specified  user"},{"line_number":243,"context_line":"    for tenant_id_at_name in `openstack project list | awk \u0027BEGIN {IGNORECASE \u003d 1} /true[[:space:]]*\\|$/ {print  $2 \"@\" $4}\u0027`; do"},{"line_number":244,"context_line":"        read tenant_id tenant_name \u003c\u003c\u003c `echo \"$tenant_id_at_name\" | sed \u0027s/@/ /\u0027`"},{"line_number":245,"context_line":"        if echo $SKIP_TENANT| grep -q \",$tenant_name,\"; then"},{"line_number":246,"context_line":"            continue;"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAAWH%2F%2FbpA%3D","line":243,"in_reply_to":"AAAAWH%2F%2Fn9s%3D","updated":"2014-03-17 23:00:42.000000000","message":"this part really bothers me, it\u0027s so.. \u0027creative\u0027. I\u0027m wondering if there is an easier way to do what both loops are trying to accomplish.","commit_id":"6166464aae06a2700ea029ddcaa39ab48e614a52"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"d2de044021c48715fa469c911b243498d44ba0c7","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# The services users usually in the service tenant."},{"line_number":64,"context_line":"# rc files for service users, is out of scope."},{"line_number":65,"context_line":"# Supporting different tenant for services is out of scope."},{"line_number":66,"context_line":"SKIP_TENANT\u003d\"service\" # tenant names are between commas(,)"},{"line_number":67,"context_line":"MODE\u003d\"\""},{"line_number":68,"context_line":"ROLE\u003dMember"},{"line_number":69,"context_line":"USER_NAME\u003d\"\""}],"source_content_type":"text/x-sh","patch_set":7,"id":"AAAAW3%2F%2FreQ%3D","line":66,"updated":"2014-04-11 07:34:43.000000000","message":"I think this comment may mislead with this patch now.","commit_id":"42fc8ff2a6fdc97e27aeb92f4f65e9a222cd6cd5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d5e754121b8d46a60fec72843d49c79abdb7e00a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    local line\u003d`openstack ec2 credentials list --user $user_id | grep \" $tenant_id \"`"},{"line_number":162,"context_line":"    if [ -z \"$line\" ]; then"},{"line_number":163,"context_line":"        openstack ec2 credentials create --user $user_id --project $tenant_id 1\u003e\u00262"},{"line_number":164,"context_line":"        line\u003d`keystone ec2-credentials-list --user_id $user_id | grep \" $tenant_id \"`"},{"line_number":165,"context_line":"    fi"},{"line_number":166,"context_line":"    local ec2_access_key ec2_secret_key"},{"line_number":167,"context_line":"    read ec2_access_key ec2_secret_key \u003c\u003c\u003c  `echo $line | awk \u0027{print $2 \" \" $4 }\u0027`"}],"source_content_type":"text/x-sh","patch_set":8,"id":"AAAAXH%2F%2F%2Bjg%3D","line":164,"updated":"2014-04-16 05:32:28.000000000","message":"oops, forgot to change this last command over...","commit_id":"46e975c972cacab603e184b47137c9fc80e5943a"}]}
