)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"cdc748517fcfc434517340c6ee8b924e15b9e150","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update add_table_names script"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new script, tools/add_table_names.awk, that adds to the output of"},{"line_number":10,"context_line":"ovs-ofctl dump-flows the table names, including those allocated by the"},{"line_number":11,"context_line":"new datapath. It relies on the new datapath output file."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f6a8fd7_6c7fdadf","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":43},"updated":"2018-04-24 11:51:11.000000000","message":"nit, now when the file name has no suffix, it would be nice to remove it here.","commit_id":"e06b7ed2e0ef071bb97fb8cd6b018a10247f25c3"}],"tools/add_table_names.awk":[{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"6c0881cddb6bf665cd0ef11553d308d8481021be","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"BEGIN {"},{"line_number":6,"context_line":"    CONTROLLER_CONSTANTS_FILE\u003d\"CONTROLLER_CONSTANTS_FILE\" in ENVIRON ? ENVIRON[\"CONTROLLER_CONSTANTS_FILE\"] : \"/opt/stack/dragonflow/dragonflow/controller/common/constants.py\";"},{"line_number":7,"context_line":"    DATAPATH_ALLOCATION_FILE\u003d\"DATAPATH_ALLOCATION_FILE\" in ENVIRON ? ENVIRON[\"DATAPATH_ALLOCATION_FILE\"] : \"/var/run/dragonflow_datapath_allocation.json\";"},{"line_number":8,"context_line":"    # id_to_name from python file"},{"line_number":9,"context_line":"    cmd \u003d \"awk \u0027/^[^#].*TABLE[\\\\w]*/ {split($0, a, \\\"\\\\s*\u003d\\\\s*\\\"); name\u003da[1]; id\u003da[2]; print id \\\" \\\" name}\u0027 \" CONTROLLER_CONSTANTS_FILE"},{"line_number":10,"context_line":"    while (cmd | getline) {"}],"source_content_type":"application/x-awk","patch_set":2,"id":"9f6a8fd7_29655946","line":7,"range":{"start_line":7,"start_character":108,"end_line":7,"end_character":152},"updated":"2018-04-24 07:46:24.000000000","message":"who creates this file and when?","commit_id":"9f49c07a2443800242a52dc19e70aec7116421d1"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"6c0881cddb6bf665cd0ef11553d308d8481021be","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    CONTROLLER_CONSTANTS_FILE\u003d\"CONTROLLER_CONSTANTS_FILE\" in ENVIRON ? ENVIRON[\"CONTROLLER_CONSTANTS_FILE\"] : \"/opt/stack/dragonflow/dragonflow/controller/common/constants.py\";"},{"line_number":7,"context_line":"    DATAPATH_ALLOCATION_FILE\u003d\"DATAPATH_ALLOCATION_FILE\" in ENVIRON ? ENVIRON[\"DATAPATH_ALLOCATION_FILE\"] : \"/var/run/dragonflow_datapath_allocation.json\";"},{"line_number":8,"context_line":"    # id_to_name from python file"},{"line_number":9,"context_line":"    cmd \u003d \"awk \u0027/^[^#].*TABLE[\\\\w]*/ {split($0, a, \\\"\\\\s*\u003d\\\\s*\\\"); name\u003da[1]; id\u003da[2]; print id \\\" \\\" name}\u0027 \" CONTROLLER_CONSTANTS_FILE"},{"line_number":10,"context_line":"    while (cmd | getline) {"},{"line_number":11,"context_line":"        split($0, a);"},{"line_number":12,"context_line":"        id_to_name[ a[1] ] \u003d a[2];"},{"line_number":13,"context_line":"    }"},{"line_number":14,"context_line":"    close(cmd)"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    # id_to_name from jq"},{"line_number":17,"context_line":"    jq_code \u003d \"\\"}],"source_content_type":"application/x-awk","patch_set":2,"id":"9f6a8fd7_09ec158d","line":14,"range":{"start_line":9,"start_character":4,"end_line":14,"end_character":14},"updated":"2018-04-24 07:46:24.000000000","message":"I would prefer parsing the file here instead of spawning another process, should not be too complicated (I think)","commit_id":"9f49c07a2443800242a52dc19e70aec7116421d1"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"6c0881cddb6bf665cd0ef11553d308d8481021be","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        )) |\\n\\"},{"line_number":37,"context_line":"to_output\\n\\"},{"line_number":38,"context_line":"\""},{"line_number":39,"context_line":"    cmd \u003d \"jq -r -f /dev/stdin \" DATAPATH_ALLOCATION_FILE \" \u003c\u003c \\\"EOF\\\"\\n\" jq_code \"\\nEOF\""},{"line_number":40,"context_line":"    while (cmd | getline) {"},{"line_number":41,"context_line":"        split($0, a);"},{"line_number":42,"context_line":"        id_to_name[ a[1] ] \u003d a[2];"}],"source_content_type":"application/x-awk","patch_set":2,"id":"9f6a8fd7_2966b92b","line":39,"range":{"start_line":39,"start_character":63,"end_line":39,"end_character":65},"updated":"2018-04-24 07:46:24.000000000","message":"I think these are redundant here, and are confusing (at least to me)","commit_id":"9f49c07a2443800242a52dc19e70aec7116421d1"}]}
