)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"eaa03d694f58bb6fd96ddbdbf5587382bb8da478","unresolved":false,"context_lines":[{"line_number":19,"context_line":"things complicated."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I36b96bbe2bb764f3d60cbeb43aa3dbd9a0a43f61"},{"line_number":22,"context_line":"Closes-Bug: bug/1597551"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a89bdaa_246018a5","line":22,"range":{"start_line":22,"start_character":12,"end_line":22,"end_character":23},"updated":"2016-09-07 01:44:48.000000000","message":"Cannot click to open the bug page, #1597551","commit_id":"36157fae70c18ab33fa95f7e038b9e42901e2966"}],"plugins/xenserver/xenapi/etc/xapi.d/plugins/bandwidth":[{"author":{"_account_id":17169,"name":"John Hua","email":"ihuazhihao@gmail.com","username":"johnhua"},"change_message_id":"84bf6dee1d37580c2fe8a9a416558a01e2861bb9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    devs \u003d [l.strip() for l in open(\u0027/proc/net/dev\u0027, \u0027r\u0027).readlines()]"},{"line_number":35,"context_line":"    # Ignore headers"},{"line_number":36,"context_line":"    devs \u003d devs[2:]"},{"line_number":37,"context_line":"    vif_pattern \u003d re.compile(\"vif(\\d+)\\.(\\d+)\")"},{"line_number":38,"context_line":"    dlist \u003d [d.split(\u0027:\u0027, 1) for d in devs if vif_pattern.match(d)]"},{"line_number":39,"context_line":"    devmap \u003d dict()"},{"line_number":40,"context_line":"    for name, stats in dlist:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a89bdaa_72f5afc9","line":37,"range":{"start_line":37,"start_character":29,"end_line":37,"end_character":46},"updated":"2016-09-06 09:45:02.000000000","message":"\"^vif(\\d+)\\.(\\d+)\" ?","commit_id":"e4c6538c7519b4e91c632954386ae7af8ddc5c19"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"af54915f5a163cbbc7bbc0aeda12d651ae8105f0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    devs \u003d [l.strip() for l in open(\u0027/proc/net/dev\u0027, \u0027r\u0027).readlines()]"},{"line_number":35,"context_line":"    # Ignore headers"},{"line_number":36,"context_line":"    devs \u003d devs[2:]"},{"line_number":37,"context_line":"    vif_pattern \u003d re.compile(\"vif(\\d+)\\.(\\d+)\")"},{"line_number":38,"context_line":"    dlist \u003d [d.split(\u0027:\u0027, 1) for d in devs if vif_pattern.match(d)]"},{"line_number":39,"context_line":"    devmap \u003d dict()"},{"line_number":40,"context_line":"    for name, stats in dlist:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a89bdaa_62bb140f","line":37,"range":{"start_line":37,"start_character":29,"end_line":37,"end_character":46},"in_reply_to":"9a89bdaa_46f9cd7f","updated":"2016-09-06 13:09:45.000000000","message":"line 42 will raise exception if some dev returned but it\u0027s not in the pattern of \u0027vif#.#\u0027. \nI don\u0027t think there will be interfaces named just as vif#.# but is not a real active dom ID\u0027s vif. \nAt https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/xenapi/vmops.py#n1784,\nin the function of get_all_bw_counters, it will loop through all of the active doms.\nSo per current view, I think it\u0027s good enough with the regex matching.","commit_id":"e4c6538c7519b4e91c632954386ae7af8ddc5c19"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"af54915f5a163cbbc7bbc0aeda12d651ae8105f0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    devs \u003d [l.strip() for l in open(\u0027/proc/net/dev\u0027, \u0027r\u0027).readlines()]"},{"line_number":35,"context_line":"    # Ignore headers"},{"line_number":36,"context_line":"    devs \u003d devs[2:]"},{"line_number":37,"context_line":"    vif_pattern \u003d re.compile(\"vif(\\d+)\\.(\\d+)\")"},{"line_number":38,"context_line":"    dlist \u003d [d.split(\u0027:\u0027, 1) for d in devs if vif_pattern.match(d)]"},{"line_number":39,"context_line":"    devmap \u003d dict()"},{"line_number":40,"context_line":"    for name, stats in dlist:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a89bdaa_a2d7dc21","line":37,"range":{"start_line":37,"start_character":29,"end_line":37,"end_character":46},"in_reply_to":"9a89bdaa_72f5afc9","updated":"2016-09-06 13:09:45.000000000","message":"Done","commit_id":"e4c6538c7519b4e91c632954386ae7af8ddc5c19"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"f632cfc1b13d75c9a52672dee81df3fb38903048","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    devs \u003d [l.strip() for l in open(\u0027/proc/net/dev\u0027, \u0027r\u0027).readlines()]"},{"line_number":35,"context_line":"    # Ignore headers"},{"line_number":36,"context_line":"    devs \u003d devs[2:]"},{"line_number":37,"context_line":"    vif_pattern \u003d re.compile(\"vif(\\d+)\\.(\\d+)\")"},{"line_number":38,"context_line":"    dlist \u003d [d.split(\u0027:\u0027, 1) for d in devs if vif_pattern.match(d)]"},{"line_number":39,"context_line":"    devmap \u003d dict()"},{"line_number":40,"context_line":"    for name, stats in dlist:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a89bdaa_46f9cd7f","line":37,"range":{"start_line":37,"start_character":29,"end_line":37,"end_character":46},"in_reply_to":"9a89bdaa_72f5afc9","updated":"2016-09-06 10:49:41.000000000","message":"Why do we need to restrict further?\nWhat\u0027s the problem with returning more stats than are consumed?\n\nShould we, instead, loop through all active dom IDs (which we can get from XAPI), then look for vif\u003cdomid\u003e.*?\n\nThis would be better than finding all vifs and assuming some are domids","commit_id":"e4c6538c7519b4e91c632954386ae7af8ddc5c19"}]}
