)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liusheng \u003cliusheng2048@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-02 04:48:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support combination alarm to composite alarm conversion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a tool for converting combination alarms to composite"},{"line_number":10,"context_line":"alarms."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9abb7d3a_3da6e4ad","line":7,"range":{"start_line":7,"start_character":39,"end_line":7,"end_character":44},"updated":"2016-06-02 07:01:20.000000000","message":"ditto","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liusheng \u003cliusheng2048@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-02 04:48:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support combination alarm to composite alarm conversion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a tool for converting combination alarms to composite"},{"line_number":10,"context_line":"alarms."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9abb7d3a_5d700840","line":7,"range":{"start_line":7,"start_character":20,"end_line":7,"end_character":25},"updated":"2016-06-02 07:01:20.000000000","message":"s/alarm/alarms\nconsistent with the content of following line that \"converting combination alarms to composite alarms\".","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0ad5e184f2df0086e98f4db4216b4078a87b1eb7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liusheng \u003cliusheng2048@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-02 04:48:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support combination alarm to composite alarm conversion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a tool for converting combination alarms to composite"},{"line_number":10,"context_line":"alarms."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9abb7d3a_9c807648","line":7,"range":{"start_line":7,"start_character":39,"end_line":7,"end_character":44},"in_reply_to":"9abb7d3a_3da6e4ad","updated":"2016-06-03 01:47:11.000000000","message":"Done","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support combination alarm to composite alarm conversion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a tool for converting combination alarms to composite"},{"line_number":10,"context_line":"alarms."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iafcb65cd3686a628855a1e52b0eef86f641d295c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9abb7d3a_3dcd4466","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":15},"updated":"2016-06-02 07:01:20.000000000","message":"s/add/adds","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0ad5e184f2df0086e98f4db4216b4078a87b1eb7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support combination alarm to composite alarm conversion"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a tool for converting combination alarms to composite"},{"line_number":10,"context_line":"alarms."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iafcb65cd3686a628855a1e52b0eef86f641d295c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9abb7d3a_bc7bba7a","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":15},"in_reply_to":"9abb7d3a_3dcd4466","updated":"2016-06-03 01:47:11.000000000","message":"Done","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"}],"aodh/cmd/alarm_conversion.py":[{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"ae7de54d8a6759e89d18fe22fbc9b9ac330c5bed","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \"\"\"Failed when converting combination alarm to composite alarm.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _generate_composite_rule(conn, com_alarm):"},{"line_number":36,"context_line":"    alarm_ids \u003d com_alarm.rule[\u0027alarm_ids\u0027]"},{"line_number":37,"context_line":"    com_op \u003d com_alarm.rule[\u0027operator\u0027]"},{"line_number":38,"context_line":"    LOG.info(_LI(\u0027Start converting combination alarm %(alarm)s, it depends on\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_1dfa7443","line":35,"range":{"start_line":35,"start_character":35,"end_line":35,"end_character":44},"updated":"2016-05-26 01:29:16.000000000","message":"how about giving a more clear name for this argument? may combin_alarm?","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"bace216ef7c279dc224c47e87c7875fb0bcd36f7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \"\"\"Failed when converting combination alarm to composite alarm.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _generate_composite_rule(conn, com_alarm):"},{"line_number":36,"context_line":"    alarm_ids \u003d com_alarm.rule[\u0027alarm_ids\u0027]"},{"line_number":37,"context_line":"    com_op \u003d com_alarm.rule[\u0027operator\u0027]"},{"line_number":38,"context_line":"    LOG.info(_LI(\u0027Start converting combination alarm %(alarm)s, it depends on\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_9b002c68","line":35,"range":{"start_line":35,"start_character":35,"end_line":35,"end_character":44},"in_reply_to":"bab6814e_1dfa7443","updated":"2016-05-26 02:15:38.000000000","message":"Done","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9409c4a4deb96a8966490daf42d02bf91c0f839f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        \u0027--delete-combination-alarm\u0027,"},{"line_number":71,"context_line":"        default\u003dFalse,"},{"line_number":72,"context_line":"        type\u003dbool,"},{"line_number":73,"context_line":"        help\u003d\u0027Delete the combination alarm when do conversion.\u0027,"},{"line_number":74,"context_line":"    )"},{"line_number":75,"context_line":"    return parser"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_1fb56830","line":73,"range":{"start_line":73,"start_character":48,"end_line":73,"end_character":61},"updated":"2016-05-25 13:48:07.000000000","message":"conversion is done.","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"bace216ef7c279dc224c47e87c7875fb0bcd36f7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        \u0027--delete-combination-alarm\u0027,"},{"line_number":71,"context_line":"        default\u003dFalse,"},{"line_number":72,"context_line":"        type\u003dbool,"},{"line_number":73,"context_line":"        help\u003d\u0027Delete the combination alarm when do conversion.\u0027,"},{"line_number":74,"context_line":"    )"},{"line_number":75,"context_line":"    return parser"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_fbf97881","line":73,"range":{"start_line":73,"start_character":48,"end_line":73,"end_character":61},"in_reply_to":"bab6814e_1fb56830","updated":"2016-05-26 02:15:38.000000000","message":"Done","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"ae7de54d8a6759e89d18fe22fbc9b9ac330c5bed","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def conversion():"},{"line_number":79,"context_line":"    confirm \u003d raw_input(\"This tool is used for converting all the combination\""},{"line_number":80,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":81,"context_line":"                        \" confirm: \")"},{"line_number":82,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":83,"context_line":"        print(\"Alarm conversion aborted! \")"},{"line_number":84,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_002fab88","line":81,"range":{"start_line":79,"start_character":24,"end_line":81,"end_character":34},"updated":"2016-05-26 01:29:16.000000000","message":"is there a method for converting a specific combination alarm to composite alarm?","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"bace216ef7c279dc224c47e87c7875fb0bcd36f7","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def conversion():"},{"line_number":79,"context_line":"    confirm \u003d raw_input(\"This tool is used for converting all the combination\""},{"line_number":80,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":81,"context_line":"                        \" confirm: \")"},{"line_number":82,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":83,"context_line":"        print(\"Alarm conversion aborted! \")"},{"line_number":84,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_bbfb707a","line":81,"range":{"start_line":79,"start_character":24,"end_line":81,"end_character":34},"in_reply_to":"bab6814e_002fab88","updated":"2016-05-26 02:15:38.000000000","message":"good question, it is easy to support that based on this implementation, I will support it.\n\nbut, I am not sure if there is need to convert part of the combination alarms, since we have deprecated the combination alarm support, and will drop the combination alarm in next cycle. anyway, it is no harm to do that.","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"c3bf3cf05ef6709fda9bfd5abfa6fe214d28157f","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def conversion():"},{"line_number":79,"context_line":"    confirm \u003d raw_input(\"This tool is used for converting all the combination\""},{"line_number":80,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":81,"context_line":"                        \" confirm: \")"},{"line_number":82,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":83,"context_line":"        print(\"Alarm conversion aborted! \")"},{"line_number":84,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7690fd43","line":81,"range":{"start_line":79,"start_character":24,"end_line":81,"end_character":34},"in_reply_to":"bab6814e_bbfb707a","updated":"2016-05-26 02:50:24.000000000","message":"wonderfully for deprecating combination alarm. and I have one more doubt. if combination alarm is dropped, we can not create combination alarm. So when will this conversion() be called, in a no combination alarms env? just my view, thank you.:)","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9409c4a4deb96a8966490daf42d02bf91c0f839f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":81,"context_line":"                        \" confirm: \")"},{"line_number":82,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":83,"context_line":"        print(\"Alarm conversion aborted! \")"},{"line_number":84,"context_line":"        return"},{"line_number":85,"context_line":"    args \u003d get_parser().parse_args()"},{"line_number":86,"context_line":"    conf \u003d service.prepare_service()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_bf6edcc6","line":83,"range":{"start_line":83,"start_character":40,"end_line":83,"end_character":41},"updated":"2016-05-25 13:48:07.000000000","message":"space","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"bace216ef7c279dc224c47e87c7875fb0bcd36f7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":81,"context_line":"                        \" confirm: \")"},{"line_number":82,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":83,"context_line":"        print(\"Alarm conversion aborted! \")"},{"line_number":84,"context_line":"        return"},{"line_number":85,"context_line":"    args \u003d get_parser().parse_args()"},{"line_number":86,"context_line":"    conf \u003d service.prepare_service()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_dbf6348e","line":83,"range":{"start_line":83,"start_character":40,"end_line":83,"end_character":41},"in_reply_to":"bab6814e_bf6edcc6","updated":"2016-05-26 02:15:38.000000000","message":"Done","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9409c4a4deb96a8966490daf42d02bf91c0f839f","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            composite_rule \u003d _generate_composite_rule(conn, alarm)"},{"line_number":101,"context_line":"        except RuleConversionFailed as e:"},{"line_number":102,"context_line":"            LOG.warning(_LW(e.message))"},{"line_number":103,"context_line":"            continue"},{"line_number":104,"context_line":"        new_alarm \u003d models.Alarm(**alarm.as_dict())"},{"line_number":105,"context_line":"        new_alarm.alarm_id \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_df91209c","line":102,"range":{"start_line":102,"start_character":28,"end_line":102,"end_character":37},"updated":"2016-05-25 13:48:07.000000000","message":"str(e)","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"bace216ef7c279dc224c47e87c7875fb0bcd36f7","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            composite_rule \u003d _generate_composite_rule(conn, alarm)"},{"line_number":101,"context_line":"        except RuleConversionFailed as e:"},{"line_number":102,"context_line":"            LOG.warning(_LW(e.message))"},{"line_number":103,"context_line":"            continue"},{"line_number":104,"context_line":"        new_alarm \u003d models.Alarm(**alarm.as_dict())"},{"line_number":105,"context_line":"        new_alarm.alarm_id \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_3bf02091","line":102,"range":{"start_line":102,"start_character":28,"end_line":102,"end_character":37},"in_reply_to":"bab6814e_df91209c","updated":"2016-05-26 02:15:38.000000000","message":"Done","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9409c4a4deb96a8966490daf42d02bf91c0f839f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        if args.delete_combination_alarm:"},{"line_number":114,"context_line":"            LOG.info(_LI(\u0027Deleting the combination alarm %s...\u0027),"},{"line_number":115,"context_line":"                     alarm.alarm_id)"},{"line_number":116,"context_line":"            conn.delete_alarm(alarm.alarm_id)"},{"line_number":117,"context_line":"        LOG.info(_LI(\u0027End Converting combination alarm %(s_alarm)s to\u0027"},{"line_number":118,"context_line":"                     \u0027 composite alarm %(d_alarm)s\u0027),"},{"line_number":119,"context_line":"                 {\u0027s_alarm\u0027: alarm.alarm_id, \u0027d_alarm\u0027: new_alarm.alarm_id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_5f0890d9","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":45},"updated":"2016-05-25 13:48:07.000000000","message":"if delete_alarm() fails, and the script is re-run, create_alarm on line 112 might create a new alarm duplicated. We might want to do something about that?","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"bace216ef7c279dc224c47e87c7875fb0bcd36f7","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        if args.delete_combination_alarm:"},{"line_number":114,"context_line":"            LOG.info(_LI(\u0027Deleting the combination alarm %s...\u0027),"},{"line_number":115,"context_line":"                     alarm.alarm_id)"},{"line_number":116,"context_line":"            conn.delete_alarm(alarm.alarm_id)"},{"line_number":117,"context_line":"        LOG.info(_LI(\u0027End Converting combination alarm %(s_alarm)s to\u0027"},{"line_number":118,"context_line":"                     \u0027 composite alarm %(d_alarm)s\u0027),"},{"line_number":119,"context_line":"                 {\u0027s_alarm\u0027: alarm.alarm_id, \u0027d_alarm\u0027: new_alarm.alarm_id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_3b1e60bb","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":45},"in_reply_to":"bab6814e_5f0890d9","updated":"2016-05-26 02:15:38.000000000","message":"Hi jd__, thanks for review, in L91~L98, I have checked the alarms have already been converted, so this tool support re-run. it doesn\u0027t depend on the combination alarms, I think the combination alarms deletion  when do conversion is dangerous, so the --delete-combination-alarm is False as default.","commit_id":"df1484b965d3e59673933abe3d87cc9c830987f6"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fe445ecb500886c40e8017063c8cb9fc72a8d53c","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def conversion():"},{"line_number":89,"context_line":"    confirm \u003d raw_input(\"This tool is used for converting the combination\""},{"line_number":90,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":91,"context_line":"                        \" confirm: \")"},{"line_number":92,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":93,"context_line":"        print(\"Alarm conversion aborted!\")"},{"line_number":94,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_89d03a55","line":91,"range":{"start_line":89,"start_character":4,"end_line":91,"end_character":37},"updated":"2016-05-29 02:43:09.000000000","message":"You should unify that all the continuing lines\u0027 blank space left at the end of the previous line.\nconfirm \u003d raw_input(\"This tool is used for converting the combination \"\n                    \"alarms to composite alarms, please type \u0027yes\u0027 to \"\n                    \"confirm: \")","commit_id":"70cf319a3f7612f3ddff9a5a0efdbb59445789f6"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"16289a43fb1a126e643a69a93f29c8f633660e40","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def conversion():"},{"line_number":89,"context_line":"    confirm \u003d raw_input(\"This tool is used for converting the combination\""},{"line_number":90,"context_line":"                        \" alarms to composite alarms, please type \u0027yes\u0027 to\""},{"line_number":91,"context_line":"                        \" confirm: \")"},{"line_number":92,"context_line":"    if confirm !\u003d \u0027yes\u0027:"},{"line_number":93,"context_line":"        print(\"Alarm conversion aborted!\")"},{"line_number":94,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_2dde713f","line":91,"range":{"start_line":89,"start_character":4,"end_line":91,"end_character":37},"in_reply_to":"9abb7d3a_89d03a55","updated":"2016-05-30 01:26:57.000000000","message":"Is there any check rule for that ? I don\u0027t think it need that.","commit_id":"70cf319a3f7612f3ddff9a5a0efdbb59445789f6"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fe445ecb500886c40e8017063c8cb9fc72a8d53c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        new_alarm.alarm_id \u003d str(uuid.uuid4())"},{"line_number":127,"context_line":"        new_alarm.name \u003d new_name"},{"line_number":128,"context_line":"        new_alarm.type \u003d \u0027composite\u0027"},{"line_number":129,"context_line":"        new_alarm.description \u003d (\u0027composite alarm converted from combination\u0027"},{"line_number":130,"context_line":"                                 \u0027 alarm: %s\u0027 % alarm.alarm_id)"},{"line_number":131,"context_line":"        new_alarm.rule \u003d composite_rule"},{"line_number":132,"context_line":"        new_alarm.timestamp \u003d datetime.datetime.now()"},{"line_number":133,"context_line":"        conn.create_alarm(new_alarm)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_a9cffeae","line":130,"range":{"start_line":129,"start_character":8,"end_line":130,"end_character":63},"updated":"2016-05-29 02:43:09.000000000","message":"ditto\nnew_alarm.description \u003d (\u0027composite alarm converted from combination \u0027\n                         \u0027alarm: %s\u0027 % alarm.alarm_id)","commit_id":"70cf319a3f7612f3ddff9a5a0efdbb59445789f6"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fe445ecb500886c40e8017063c8cb9fc72a8d53c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        new_alarm.rule \u003d composite_rule"},{"line_number":132,"context_line":"        new_alarm.timestamp \u003d datetime.datetime.now()"},{"line_number":133,"context_line":"        conn.create_alarm(new_alarm)"},{"line_number":134,"context_line":"        LOG.info(_LI(\u0027End Converting combination alarm %(s_alarm)s to\u0027"},{"line_number":135,"context_line":"                     \u0027 composite alarm %(d_alarm)s\u0027),"},{"line_number":136,"context_line":"                 {\u0027s_alarm\u0027: alarm.alarm_id, \u0027d_alarm\u0027: new_alarm.alarm_id})"},{"line_number":137,"context_line":"        count +\u003d 1"},{"line_number":138,"context_line":"    if args.delete_combination_alarm:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_49bf72fb","line":135,"range":{"start_line":134,"start_character":8,"end_line":135,"end_character":53},"updated":"2016-05-29 02:43:09.000000000","message":"ditto\nLOG.info(_LI(\u0027End Converting combination alarm %(s_alarm)s to \u0027\n             \u0027composite alarm %(d_alarm)s\u0027),","commit_id":"70cf319a3f7612f3ddff9a5a0efdbb59445789f6"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class DependentAlarmNotFound(Exception):"},{"line_number":32,"context_line":"    \"\"\"The dependent alarm is not found.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, com_alarm_id, dependent_alarm_id):"},{"line_number":34,"context_line":"        self.com_alarm_id \u003d com_alarm_id"},{"line_number":35,"context_line":"        self.dependent_alarm_id \u003d dependent_alarm_id"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_d8588633","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":57},"updated":"2016-06-02 07:01:20.000000000","message":"For python coding style, need a blank line before \"def __init__\"","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"7b45d4778f824e6c460f6fe62c1090615f507de0","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class DependentAlarmNotFound(Exception):"},{"line_number":32,"context_line":"    \"\"\"The dependent alarm is not found.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, com_alarm_id, dependent_alarm_id):"},{"line_number":34,"context_line":"        self.com_alarm_id \u003d com_alarm_id"},{"line_number":35,"context_line":"        self.dependent_alarm_id \u003d dependent_alarm_id"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_9cafd693","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":57},"in_reply_to":"9abb7d3a_1cb6463d","updated":"2016-06-03 01:56:45.000000000","message":"https://www.python.org/dev/peps/pep-0008/#blank-lines","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"b04ad41f8895957e25130495ab2fb7e008e156cf","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class DependentAlarmNotFound(Exception):"},{"line_number":32,"context_line":"    \"\"\"The dependent alarm is not found.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, com_alarm_id, dependent_alarm_id):"},{"line_number":34,"context_line":"        self.com_alarm_id \u003d com_alarm_id"},{"line_number":35,"context_line":"        self.dependent_alarm_id \u003d dependent_alarm_id"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_fc5d4249","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":57},"in_reply_to":"9abb7d3a_9cafd693","updated":"2016-06-03 02:12:14.000000000","message":"thanks, done","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0ad5e184f2df0086e98f4db4216b4078a87b1eb7","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class DependentAlarmNotFound(Exception):"},{"line_number":32,"context_line":"    \"\"\"The dependent alarm is not found.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, com_alarm_id, dependent_alarm_id):"},{"line_number":34,"context_line":"        self.com_alarm_id \u003d com_alarm_id"},{"line_number":35,"context_line":"        self.dependent_alarm_id \u003d dependent_alarm_id"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_1cb6463d","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":57},"in_reply_to":"9abb7d3a_d8588633","updated":"2016-06-03 01:47:11.000000000","message":"sorry I didn\u0027t see coding style like this, any reference ?","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class UnsupportedSubAlarmType(Exception):"},{"line_number":39,"context_line":"    \"\"\"Unsupported sub-alarm type.\"\"\""},{"line_number":40,"context_line":"    def __init__(self, sub_alarm_id, sub_alarm_type):"},{"line_number":41,"context_line":"        self.sub_alarm_id \u003d sub_alarm_id"},{"line_number":42,"context_line":"        self.sub_alarm_type \u003d sub_alarm_type"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_183faeb4","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":53},"updated":"2016-06-02 07:01:20.000000000","message":"ditto","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    alarm_ids \u003d combin_alarm.rule[\u0027alarm_ids\u0027]"},{"line_number":47,"context_line":"    com_op \u003d combin_alarm.rule[\u0027operator\u0027]"},{"line_number":48,"context_line":"    LOG.info(_LI(\u0027Start converting combination alarm %(alarm)s, it depends on \u0027"},{"line_number":49,"context_line":"                 \u0027alarms:  %(alarm_ids)s\u0027),"},{"line_number":50,"context_line":"             {\u0027alarm\u0027: combin_alarm.alarm_id, \u0027alarm_ids\u0027: str(alarm_ids)})"},{"line_number":51,"context_line":"    threshold_rules \u003d []"},{"line_number":52,"context_line":"    for alarm_id in alarm_ids:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_78bd1a01","line":49,"range":{"start_line":49,"start_character":18,"end_line":49,"end_character":24},"updated":"2016-06-02 07:01:20.000000000","message":"alarm or alarms? consistent with \"alarm %(alarm)s\" in the above line.","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":18802,"name":"liyuanzhen","email":"li.yuanzhen@zte.com.cn","username":"liyuanzhen"},"change_message_id":"eb52d7029d990b36a6ecaa9fd57818c54b3ddb97","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    alarm_ids \u003d combin_alarm.rule[\u0027alarm_ids\u0027]"},{"line_number":47,"context_line":"    com_op \u003d combin_alarm.rule[\u0027operator\u0027]"},{"line_number":48,"context_line":"    LOG.info(_LI(\u0027Start converting combination alarm %(alarm)s, it depends on \u0027"},{"line_number":49,"context_line":"                 \u0027alarms:  %(alarm_ids)s\u0027),"},{"line_number":50,"context_line":"             {\u0027alarm\u0027: combin_alarm.alarm_id, \u0027alarm_ids\u0027: str(alarm_ids)})"},{"line_number":51,"context_line":"    threshold_rules \u003d []"},{"line_number":52,"context_line":"    for alarm_id in alarm_ids:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_78619ad2","line":49,"range":{"start_line":49,"start_character":26,"end_line":49,"end_character":27},"updated":"2016-06-02 07:01:20.000000000","message":"one space enough","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0ad5e184f2df0086e98f4db4216b4078a87b1eb7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    alarm_ids \u003d combin_alarm.rule[\u0027alarm_ids\u0027]"},{"line_number":47,"context_line":"    com_op \u003d combin_alarm.rule[\u0027operator\u0027]"},{"line_number":48,"context_line":"    LOG.info(_LI(\u0027Start converting combination alarm %(alarm)s, it depends on \u0027"},{"line_number":49,"context_line":"                 \u0027alarms:  %(alarm_ids)s\u0027),"},{"line_number":50,"context_line":"             {\u0027alarm\u0027: combin_alarm.alarm_id, \u0027alarm_ids\u0027: str(alarm_ids)})"},{"line_number":51,"context_line":"    threshold_rules \u003d []"},{"line_number":52,"context_line":"    for alarm_id in alarm_ids:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_7c81524d","line":49,"range":{"start_line":49,"start_character":18,"end_line":49,"end_character":24},"in_reply_to":"9abb7d3a_78bd1a01","updated":"2016-06-03 01:47:11.000000000","message":"Done","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"68052f2da85f0eddfafc950c77367eea4d1764dc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    alarm_ids \u003d combin_alarm.rule[\u0027alarm_ids\u0027]"},{"line_number":47,"context_line":"    com_op \u003d combin_alarm.rule[\u0027operator\u0027]"},{"line_number":48,"context_line":"    LOG.info(_LI(\u0027Start converting combination alarm %(alarm)s, it depends on \u0027"},{"line_number":49,"context_line":"                 \u0027alarms:  %(alarm_ids)s\u0027),"},{"line_number":50,"context_line":"             {\u0027alarm\u0027: combin_alarm.alarm_id, \u0027alarm_ids\u0027: str(alarm_ids)})"},{"line_number":51,"context_line":"    threshold_rules \u003d []"},{"line_number":52,"context_line":"    for alarm_id in alarm_ids:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_1f5f580f","line":49,"range":{"start_line":49,"start_character":18,"end_line":49,"end_character":24},"in_reply_to":"9abb7d3a_78bd1a01","updated":"2016-06-03 02:18:45.000000000","message":"the dependent alarms is a list of alarms, so \"alarms\", the above \"alarm\" is *an* alarm starting to be evaluated","commit_id":"f7f1475619b66e9cb8a10cd68c268a5c762d1e4d"}]}
