)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"57ce689af2dfff76516228ecacc23d901c8a25c6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add drivers list generator"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It is useful to have maintained (in source control) list"},{"line_number":10,"context_line":"of drivers that exist in Cinder.It could be used in docs"},{"line_number":11,"context_line":"and unit tests to check method impl on backend drivers."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa32b979_858cae80","line":9,"updated":"2015-06-19 16:20:03.000000000","message":"\"...to have a maintained...\"","commit_id":"819db8990ce78295a065b78f8e37d93c694121e7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"1f98bee32d04b048dc73744a9fa049651e3d4e74","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add drivers list generator"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It is useful to have maintained (in source control) list"},{"line_number":10,"context_line":"of drivers that exist in Cinder.It could be used in docs"},{"line_number":11,"context_line":"and unit tests to check method impl on backend drivers."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This change add tool for generate list of drivers based on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa32b979_a6a3dc4e","line":10,"updated":"2015-06-22 02:56:25.000000000","message":"\"...in Cinder.It could...\" -\u003e \"...in Cinder.  It could...\"","commit_id":"819db8990ce78295a065b78f8e37d93c694121e7"}],"tools/generate_driver_list.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"60b6b85085e803e8f06852b3f81b98164bc0a23b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#! /usr/bin/env python"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2015 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_f816c04a","line":3,"updated":"2015-06-18 13:54:49.000000000","message":"Foundation copyright should not be applied to any source files unless they are actually written by someone working for the foundation.","commit_id":"8cdbefb2acb437caac1da5ffdfc58f7780e761de"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"13dfb674d81523bc6ff1dc5607d482896ee60cfa","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def main():"},{"line_number":45,"context_line":"    dr_list \u003d get_driver_list()"},{"line_number":46,"context_line":"    print(\"Drivers: %s\" % dr_list)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_71193622","line":46,"updated":"2015-07-16 19:00:29.000000000","message":"Could we loop through and format this list? Or maybe a parameter/flag that can be passed in so you can either get this output for easier programmatic parsing or a formatted output for easier human parsing?","commit_id":"73696469b2d40b987797dbd7101b469b92405b36"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"03f8188574f8d02f07e82ecf836d165211861779","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def main():"},{"line_number":45,"context_line":"    dr_list \u003d get_driver_list()"},{"line_number":46,"context_line":"    print(\"Drivers: %s\" % dr_list)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_77f12695","line":46,"in_reply_to":"9a41bdd9_71193622","updated":"2015-07-16 19:53:21.000000000","message":"We can just use pretty print, it structures data in a form which can be used as input to the parser.","commit_id":"73696469b2d40b987797dbd7101b469b92405b36"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6af79d23e42a761dbe055edf4ae5bad1b8c0a7ef","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import inspect"},{"line_number":19,"context_line":"import pkgutil"},{"line_number":20,"context_line":"import pprint"},{"line_number":21,"context_line":"from cinder.volume import drivers"},{"line_number":22,"context_line":"from cinder.volume import driver"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"package \u003d drivers"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a41bdd9_192c68aa","line":21,"updated":"2015-07-17 13:32:49.000000000","message":"You\u0027ll need a space here between the standard libs and the cinder ones.","commit_id":"5caecf64e03416c49b8e06eaf3ab56ebb148f99d"}]}
