)]}'
{"aodh/cmd/data_migration.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"7307b5621268fb1c4df68a9bea9566bb2c18b049","unresolved":false,"context_lines":[{"line_number":28,"context_line":"- It is better to ensure the db connection is OK when running this tool, and"},{"line_number":29,"context_line":"  this tool can be run repeatedly, the duplicated data will be skipped."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- This tool is depend on the NoSQL and SQL drivers of Aodh, so it is usable"},{"line_number":32,"context_line":"  only before the removal of NoSQL drivers."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- This tool has been tested OK in devstack environment, but users need to be"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_e7c39287","line":31,"range":{"start_line":31,"start_character":12,"end_line":31,"end_character":24},"updated":"2016-05-20 10:30:11.000000000","message":"depends on?","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"7307b5621268fb1c4df68a9bea9566bb2c18b049","unresolved":false,"context_lines":[{"line_number":28,"context_line":"- It is better to ensure the db connection is OK when running this tool, and"},{"line_number":29,"context_line":"  this tool can be run repeatedly, the duplicated data will be skipped."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- This tool is depend on the NoSQL and SQL drivers of Aodh, so it is usable"},{"line_number":32,"context_line":"  only before the removal of NoSQL drivers."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- This tool has been tested OK in devstack environment, but users need to be"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_47541ec9","line":31,"range":{"start_line":31,"start_character":69,"end_line":31,"end_character":75},"updated":"2016-05-20 10:30:11.000000000","message":"useful or should be used?","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1be6ca14ee645b61d5e3e25dfef38730149e0ed5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"- It is better to ensure the db connection is OK when running this tool, and"},{"line_number":29,"context_line":"  this tool can be run repeatedly, the duplicated data will be skipped."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- This tool is depend on the NoSQL and SQL drivers of Aodh, so it is usable"},{"line_number":32,"context_line":"  only before the removal of NoSQL drivers."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- This tool has been tested OK in devstack environment, but users need to be"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_5334a4fa","line":31,"range":{"start_line":31,"start_character":69,"end_line":31,"end_character":75},"in_reply_to":"bab6814e_47541ec9","updated":"2016-05-23 07:26:21.000000000","message":"Done","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1be6ca14ee645b61d5e3e25dfef38730149e0ed5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"- It is better to ensure the db connection is OK when running this tool, and"},{"line_number":29,"context_line":"  this tool can be run repeatedly, the duplicated data will be skipped."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- This tool is depend on the NoSQL and SQL drivers of Aodh, so it is usable"},{"line_number":32,"context_line":"  only before the removal of NoSQL drivers."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- This tool has been tested OK in devstack environment, but users need to be"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_f352f833","line":31,"range":{"start_line":31,"start_character":12,"end_line":31,"end_character":24},"in_reply_to":"bab6814e_e7c39287","updated":"2016-05-23 07:26:21.000000000","message":"Done","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"7307b5621268fb1c4df68a9bea9566bb2c18b049","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    sql_conf.register_opts(storage.OPTS, \u0027database\u0027)"},{"line_number":127,"context_line":"    sql_conn \u003d storage.get_connection_from_config(sql_conf)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    root_logger.info(\"Starting to migrate alarms data from NoSQL to SQL...\")"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    count \u003d 0"},{"line_number":132,"context_line":"    for alarm in nosql_conn.get_alarms():"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_a7d4eabc","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":22},"updated":"2016-05-20 10:30:11.000000000","message":"would you mind to use _LI? if you agree, please do it in following log as well","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1be6ca14ee645b61d5e3e25dfef38730149e0ed5","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    sql_conf.register_opts(storage.OPTS, \u0027database\u0027)"},{"line_number":127,"context_line":"    sql_conn \u003d storage.get_connection_from_config(sql_conf)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    root_logger.info(\"Starting to migrate alarms data from NoSQL to SQL...\")"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    count \u003d 0"},{"line_number":132,"context_line":"    for alarm in nosql_conn.get_alarms():"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_19c07d4f","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":22},"in_reply_to":"bab6814e_a7d4eabc","updated":"2016-05-23 07:26:21.000000000","message":"Done","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"7307b5621268fb1c4df68a9bea9566bb2c18b049","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        history_count \u003d 0"},{"line_number":144,"context_line":"        for history in nosql_conn.get_alarm_changes(alarm.alarm_id, None):"},{"line_number":145,"context_line":"            history_data \u003d history.as_dict()"},{"line_number":146,"context_line":"            root_logger.debug(\"    Migrating alarm history data with\""},{"line_number":147,"context_line":"                              \"event_id %s...\" % history_data[\u0027event_id\u0027])"},{"line_number":148,"context_line":"            try:"},{"line_number":149,"context_line":"                sql_conn.record_alarm_change(history_data)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_c733ee60","line":146,"range":{"start_line":146,"start_character":68,"end_line":146,"end_character":69},"updated":"2016-05-20 10:30:11.000000000","message":"a space is needed","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1be6ca14ee645b61d5e3e25dfef38730149e0ed5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        history_count \u003d 0"},{"line_number":144,"context_line":"        for history in nosql_conn.get_alarm_changes(alarm.alarm_id, None):"},{"line_number":145,"context_line":"            history_data \u003d history.as_dict()"},{"line_number":146,"context_line":"            root_logger.debug(\"    Migrating alarm history data with\""},{"line_number":147,"context_line":"                              \"event_id %s...\" % history_data[\u0027event_id\u0027])"},{"line_number":148,"context_line":"            try:"},{"line_number":149,"context_line":"                sql_conn.record_alarm_change(history_data)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_b9d17125","line":146,"range":{"start_line":146,"start_character":68,"end_line":146,"end_character":69},"in_reply_to":"bab6814e_c733ee60","updated":"2016-05-23 07:26:21.000000000","message":"Done","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"}],"aodh/tests/functional/storage/test_data_migration.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"7307b5621268fb1c4df68a9bea9566bb2c18b049","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.sql_alarm_conn \u003d None"},{"line_number":43,"context_line":"        super(TestDataMigration, self).tearDown()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_data_migration(self):"},{"line_number":46,"context_line":"        self.add_some_alarms()"},{"line_number":47,"context_line":"        alarms \u003d list(self.alarm_conn.get_alarms())"},{"line_number":48,"context_line":"        self.assertEqual(3, len(alarms))"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_676a02f0","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":34},"updated":"2016-05-20 10:30:11.000000000","message":"this is good, and is there any plan for alarm history test? maybe the --debug option can be tested along with logs.","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1be6ca14ee645b61d5e3e25dfef38730149e0ed5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.sql_alarm_conn \u003d None"},{"line_number":43,"context_line":"        super(TestDataMigration, self).tearDown()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_data_migration(self):"},{"line_number":46,"context_line":"        self.add_some_alarms()"},{"line_number":47,"context_line":"        alarms \u003d list(self.alarm_conn.get_alarms())"},{"line_number":48,"context_line":"        self.assertEqual(3, len(alarms))"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_e408772a","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":34},"in_reply_to":"bab6814e_676a02f0","updated":"2016-05-23 07:26:21.000000000","message":"OK, thanks for review, I will add another test for history.","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"11783a4e87e95be13dafec0dd7166d3053341f93","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.sql_alarm_conn \u003d None"},{"line_number":43,"context_line":"        super(TestDataMigration, self).tearDown()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_data_migration(self):"},{"line_number":46,"context_line":"        self.add_some_alarms()"},{"line_number":47,"context_line":"        alarms \u003d list(self.alarm_conn.get_alarms())"},{"line_number":48,"context_line":"        self.assertEqual(3, len(alarms))"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_72191b22","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":34},"in_reply_to":"bab6814e_676a02f0","updated":"2016-05-20 11:49:49.000000000","message":"checking history is a good idea.\n\nTesting --debug might be a little too much :)","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1be6ca14ee645b61d5e3e25dfef38730149e0ed5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.sql_alarm_conn \u003d None"},{"line_number":43,"context_line":"        super(TestDataMigration, self).tearDown()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_data_migration(self):"},{"line_number":46,"context_line":"        self.add_some_alarms()"},{"line_number":47,"context_line":"        alarms \u003d list(self.alarm_conn.get_alarms())"},{"line_number":48,"context_line":"        self.assertEqual(3, len(alarms))"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_c40bb322","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":34},"in_reply_to":"bab6814e_72191b22","updated":"2016-05-23 07:26:21.000000000","message":"Done","commit_id":"50ee18785dbe32eeff44dad1019e37264220c6b9"}],"tools/migrate-alarms-from-nosql-to-sql.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_db import options as db_options"},{"line_number":20,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from aodh import storage"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_32a69553","line":22,"updated":"2016-04-25 10:11:57.000000000","message":"remove extra blank line","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def get_parser():"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":28,"context_line":"        description\u003d\u0027Migrate alarms and alarms history fro NoSQL to SQL\u0027,"},{"line_number":29,"context_line":"    )"},{"line_number":30,"context_line":"    parser.add_argument("},{"line_number":31,"context_line":"        \u0027--nosql-conn\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_9263291a","line":28,"range":{"start_line":28,"start_character":55,"end_line":28,"end_character":71},"updated":"2016-04-25 10:11:57.000000000","message":"from","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    nosql_scheme \u003d urlparse.urlparse(args.nosql_conn).scheme"},{"line_number":47,"context_line":"    sql_scheme \u003d urlparse.urlparse(args.sql_conn).scheme"},{"line_number":48,"context_line":"    if nosql_scheme not in (\u0027mongodb\u0027, \u0027hbase\u0027):"},{"line_number":49,"context_line":"        print (\u0027Invalid source DB type %s, the source database connection \u0027"},{"line_number":50,"context_line":"               \u0027should be one of: [mongodb, hbase]\u0027 % nosql_scheme)"},{"line_number":51,"context_line":"        sys.exit(1)"},{"line_number":52,"context_line":"    if sql_scheme not in (\u0027mysql\u0027, \u0027mysql+pymysql\u0027, \u0027postgresql\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_d26da105","line":49,"range":{"start_line":49,"start_character":13,"end_line":49,"end_character":14},"updated":"2016-04-25 10:11:57.000000000","message":"I think this space can be removed","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        sys.exit(1)"},{"line_number":52,"context_line":"    if sql_scheme not in (\u0027mysql\u0027, \u0027mysql+pymysql\u0027, \u0027postgresql\u0027,"},{"line_number":53,"context_line":"                          \u0027sqlite\u0027):"},{"line_number":54,"context_line":"        print (\u0027Invalid destination DB type %s, the source database \u0027"},{"line_number":55,"context_line":"               \u0027connection should be one of: [mysql, postgresql, sqlite]\u0027"},{"line_number":56,"context_line":"               % sql_scheme)"},{"line_number":57,"context_line":"        sys.exit(1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_d2448175","line":54,"range":{"start_line":54,"start_character":52,"end_line":54,"end_character":58},"updated":"2016-04-25 10:11:57.000000000","message":"destination","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        sys.exit(1)"},{"line_number":52,"context_line":"    if sql_scheme not in (\u0027mysql\u0027, \u0027mysql+pymysql\u0027, \u0027postgresql\u0027,"},{"line_number":53,"context_line":"                          \u0027sqlite\u0027):"},{"line_number":54,"context_line":"        print (\u0027Invalid destination DB type %s, the source database \u0027"},{"line_number":55,"context_line":"               \u0027connection should be one of: [mysql, postgresql, sqlite]\u0027"},{"line_number":56,"context_line":"               % sql_scheme)"},{"line_number":57,"context_line":"        sys.exit(1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_327df5b1","line":54,"range":{"start_line":54,"start_character":13,"end_line":54,"end_character":14},"updated":"2016-04-25 10:11:57.000000000","message":"ditto","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    console.setFormatter(formatter)"},{"line_number":66,"context_line":"    root_logger \u003d logging.getLogger(\u0027\u0027)"},{"line_number":67,"context_line":"    root_logger.addHandler(console)"},{"line_number":68,"context_line":"    root_logger.setLevel(logging.DEBUG)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    args \u003d get_parser().parse_args()"},{"line_number":71,"context_line":"    _validate_conn_options(args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_52307101","line":68,"range":{"start_line":68,"start_character":24,"end_line":68,"end_character":39},"updated":"2016-04-25 10:11:57.000000000","message":"redundant setting","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    sql_conf.register_opts(storage.OPTS, \u0027database\u0027)"},{"line_number":81,"context_line":"    sql_conn \u003d storage.get_connection_from_config(sql_conf)"},{"line_number":82,"context_line":"    start_msg \u003d \"Starting to migrate alarms data from NoSQL to SQL...\""},{"line_number":83,"context_line":"    print \"\u003d\" * 20 + start_msg + \"\u003d\" * 20"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    count \u003d 0"},{"line_number":86,"context_line":"    for alarm in nosql_conn.get_alarms():"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_f207fd1a","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":41},"updated":"2016-04-25 10:11:57.000000000","message":"py3 support","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    count \u003d 0"},{"line_number":86,"context_line":"    for alarm in nosql_conn.get_alarms():"},{"line_number":87,"context_line":"        print \"Migrating alarm %s...\" % alarm.alarm_id"},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            sql_conn.create_alarm(alarm)"},{"line_number":90,"context_line":"        except exception.DBDuplicateEntry:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_cd09842e","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":54},"updated":"2016-04-25 10:11:57.000000000","message":"ditto","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            sql_conn.create_alarm(alarm)"},{"line_number":90,"context_line":"        except exception.DBDuplicateEntry:"},{"line_number":91,"context_line":"            print (\"Warning: duplicated alarm %s found, skipped.\""},{"line_number":92,"context_line":"                   % alarm.alarm_id)"},{"line_number":93,"context_line":"        count +\u003d 1"},{"line_number":94,"context_line":"    end_msg \u003d (\"End alarms data migration from NoSQL to SQL, %s alarms\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_ad0c083c","line":91,"range":{"start_line":91,"start_character":17,"end_line":91,"end_character":18},"updated":"2016-04-25 10:11:57.000000000","message":"ditto","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            print (\"Warning: duplicated alarm %s found, skipped.\""},{"line_number":92,"context_line":"                   % alarm.alarm_id)"},{"line_number":93,"context_line":"        count +\u003d 1"},{"line_number":94,"context_line":"    end_msg \u003d (\"End alarms data migration from NoSQL to SQL, %s alarms\""},{"line_number":95,"context_line":"               \" have been migrated.\" % count)"},{"line_number":96,"context_line":"    print \"\u003d\" * 20 + end_msg + \"\u003d\" * 20"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_2d19187a","line":94,"range":{"start_line":94,"start_character":16,"end_line":94,"end_character":59},"updated":"2016-04-25 10:11:57.000000000","message":"Alarm data migration succeeds","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"44540d277cd9cb3bd61ebac1f8f6cb156ec38cdc","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        count +\u003d 1"},{"line_number":94,"context_line":"    end_msg \u003d (\"End alarms data migration from NoSQL to SQL, %s alarms\""},{"line_number":95,"context_line":"               \" have been migrated.\" % count)"},{"line_number":96,"context_line":"    print \"\u003d\" * 20 + end_msg + \"\u003d\" * 20"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":99,"context_line":"    main()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_cd20649e","line":96,"range":{"start_line":96,"start_character":4,"end_line":96,"end_character":39},"updated":"2016-04-25 10:11:57.000000000","message":"py3","commit_id":"bb983e85a29ef2e4c022ddbeb94f122f17a759d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"af9bd0c59e1b81f1c3744f4dcc857950a6c1d9e5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        default\u003dTrue,"},{"line_number":53,"context_line":"        type\u003dbool,"},{"line_number":54,"context_line":"        help\u003d\u0027Migrate history data when migrate alarms or not,\u0027"},{"line_number":55,"context_line":"             \u0027 False as Default\u0027,"},{"line_number":56,"context_line":"    )"},{"line_number":57,"context_line":"    return parser"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_8c9248f4","line":55,"range":{"start_line":55,"start_character":15,"end_line":55,"end_character":33},"updated":"2016-05-12 01:52:41.000000000","message":"True as default.","commit_id":"fc942187ac5e3bcb5bf6a2dc21f943b21ccb1469"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"af9bd0c59e1b81f1c3744f4dcc857950a6c1d9e5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"def main():"},{"line_number":76,"context_line":"    # Set up logging to use the console"},{"line_number":77,"context_line":"    console \u003d logging.StreamHandler(sys.stderr)"},{"line_number":78,"context_line":"    console.setLevel(logging.DEBUG)"},{"line_number":79,"context_line":"    formatter \u003d logging.Formatter(\u0027%(message)s\u0027)"},{"line_number":80,"context_line":"    console.setFormatter(formatter)"},{"line_number":81,"context_line":"    root_logger \u003d logging.getLogger(\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_ef0ae61e","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":35},"updated":"2016-05-12 01:52:41.000000000","message":"I really think this is not needed, could you explain a bit more to me why it is needed while L83 exists?","commit_id":"fc942187ac5e3bcb5bf6a2dc21f943b21ccb1469"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"af9bd0c59e1b81f1c3744f4dcc857950a6c1d9e5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    console.setFormatter(formatter)"},{"line_number":81,"context_line":"    root_logger \u003d logging.getLogger(\u0027\u0027)"},{"line_number":82,"context_line":"    root_logger.addHandler(console)"},{"line_number":83,"context_line":"    root_logger.setLevel(logging.DEBUG)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    args \u003d get_parser().parse_args()"},{"line_number":86,"context_line":"    _validate_conn_options(args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_8f6b5a84","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":39},"updated":"2016-05-12 01:52:41.000000000","message":"if we decide to use logger, an option named --debug should be introduced to let end user control verbose output","commit_id":"fc942187ac5e3bcb5bf6a2dc21f943b21ccb1469"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"83d7266c7643efe0de97bbede18948c802e24f93","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    console.setFormatter(formatter)"},{"line_number":81,"context_line":"    root_logger \u003d logging.getLogger(\u0027\u0027)"},{"line_number":82,"context_line":"    root_logger.addHandler(console)"},{"line_number":83,"context_line":"    root_logger.setLevel(logging.DEBUG)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    args \u003d get_parser().parse_args()"},{"line_number":86,"context_line":"    _validate_conn_options(args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_42cdc964","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":39},"in_reply_to":"dab17558_8f6b5a84","updated":"2016-05-12 02:29:39.000000000","message":"just stolen these stuff from ceilometer/tools/make_test_data.py :(\nwill fix these","commit_id":"fc942187ac5e3bcb5bf6a2dc21f943b21ccb1469"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"af9bd0c59e1b81f1c3744f4dcc857950a6c1d9e5","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    sql_conn \u003d storage.get_connection_from_config(sql_conf)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    start_msg \u003d \"Starting to migrate alarms data from NoSQL to SQL...\""},{"line_number":99,"context_line":"    print(\"\u003d\" * 20 + start_msg + \"\u003d\" * 20)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    count \u003d 0"},{"line_number":102,"context_line":"    for alarm in nosql_conn.get_alarms():"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_0f576aca","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":9},"updated":"2016-05-12 01:52:41.000000000","message":"I hope you can use root_logger or remove root_logger since you never use it\n\nsame as following print","commit_id":"fc942187ac5e3bcb5bf6a2dc21f943b21ccb1469"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"af9bd0c59e1b81f1c3744f4dcc857950a6c1d9e5","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    count \u003d 0"},{"line_number":102,"context_line":"    for alarm in nosql_conn.get_alarms():"},{"line_number":103,"context_line":"        print(\"Migrating alarm %s...\" % alarm.alarm_id)"},{"line_number":104,"context_line":"        try:"},{"line_number":105,"context_line":"            sql_conn.create_alarm(alarm)"},{"line_number":106,"context_line":"            count +\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_6ffd56b0","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":13},"updated":"2016-05-12 01:52:41.000000000","message":"for example, if use logger, can be debug level, reduce unnecessary audit log","commit_id":"fc942187ac5e3bcb5bf6a2dc21f943b21ccb1469"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1f8efb14d1a50d0dc8f3763f2cc4c4afa2912c95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_d70fb486","line":1,"updated":"2016-05-12 08:04:35.000000000","message":"add a shebang header\n\n#!/usr/bin/env python","commit_id":"b8fdfdb77310134be8c0df5c6e61e6302a8b5f56"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1f8efb14d1a50d0dc8f3763f2cc4c4afa2912c95","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  tool, but the history data migration can be avoid by specifying False of"},{"line_number":26,"context_line":"  --migrate-history option."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- It is better to ensure the db connection is OK when running this tool, and"},{"line_number":29,"context_line":"  this tool can be run repeatedly, the duplicated data will be skipped."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- This tool is depend on the NoSQL and SQL drivers of Aodh, so it is usable"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_571c64c1","line":28,"range":{"start_line":28,"start_character":2,"end_line":28,"end_character":72},"updated":"2016-05-12 08:04:35.000000000","message":"Is this really helpful?","commit_id":"b8fdfdb77310134be8c0df5c6e61e6302a8b5f56"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1f8efb14d1a50d0dc8f3763f2cc4c4afa2912c95","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    sql_conn \u003d storage.get_connection_from_config(sql_conf)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    start_msg \u003d \"Starting to migrate alarms data from NoSQL to SQL...\""},{"line_number":129,"context_line":"    root_logger.info(\"\u003d\" * 20 + start_msg + \"\u003d\" * 20)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    count \u003d 0"},{"line_number":132,"context_line":"    for alarm in nosql_conn.get_alarms():"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_d75df47a","line":129,"updated":"2016-05-12 08:04:35.000000000","message":"Not really helpful  to add \u003d\u003d\u003d :)","commit_id":"b8fdfdb77310134be8c0df5c6e61e6302a8b5f56"}]}
