)]}'
{"ceilometer/api/controllers/v2/alarms.py":[{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"525ed2ea01ed56d512e445878255302e177fc3ae","unresolved":false,"context_lines":[{"line_number":65,"context_line":"               help\u003d\u0027Maximum number of alarms defined for a project.\u0027"},{"line_number":66,"context_line":"               ),"},{"line_number":67,"context_line":"    cfg.IntOpt(\u0027alarm_max_actions\u0027,"},{"line_number":68,"context_line":"               default\u003d0,"},{"line_number":69,"context_line":"               help\u003d\u0027Maximum number of each type actions for an alarm, \u0027"},{"line_number":70,"context_line":"                    \u0027non-positive means infinite actions.\u0027),"},{"line_number":71,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_64361f05","line":68,"updated":"2015-04-07 10:33:31.000000000","message":"Why not \u0027-1\u0027 for infinite just like in case of \u0027time_to_live\u0027 ( https://github.com/openstack/ceilometer/blob/master/ceilometer/storage/__init__.py#L43 )? This default value seems confusing to me, even with the description. And also it would be better IMHO to keep the config settings consistent.","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3074e4bf85015471f541b353460b2ffeec747e7c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"               help\u003d\u0027Maximum number of alarms defined for a project.\u0027"},{"line_number":66,"context_line":"               ),"},{"line_number":67,"context_line":"    cfg.IntOpt(\u0027alarm_max_actions\u0027,"},{"line_number":68,"context_line":"               default\u003d0,"},{"line_number":69,"context_line":"               help\u003d\u0027Maximum number of each type actions for an alarm, \u0027"},{"line_number":70,"context_line":"                    \u0027non-positive means infinite actions.\u0027),"},{"line_number":71,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_bac8bc75","line":68,"in_reply_to":"9aa53dc9_64361f05","updated":"2015-04-07 11:28:30.000000000","message":"Done","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d4dfb9c05ed667364be14238432f16ce4d9f7909","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                error \u003d _(\u0027duplicate actions are found: %s\u0027) % actions"},{"line_number":322,"context_line":"                raise base.ClientSideError(error)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            if 0 \u003c max_actions and max_actions \u003c len(actions):"},{"line_number":325,"context_line":"                error \u003d _(\u0027%(name)s count exceeds maximum value \u0027"},{"line_number":326,"context_line":"                          \u0027%(maximum)d\u0027) % {\"name\": actions_name,"},{"line_number":327,"context_line":"                                            \"maximum\": max_actions}"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_b4cf457e","line":324,"updated":"2015-03-26 09:19:35.000000000","message":"nit: max_actions \u003e 0","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7affe68f2f9ac62da1647d1e4971897c35d89625","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                error \u003d _(\u0027duplicate actions are found: %s\u0027) % actions"},{"line_number":322,"context_line":"                raise base.ClientSideError(error)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            if 0 \u003c max_actions and max_actions \u003c len(actions):"},{"line_number":325,"context_line":"                error \u003d _(\u0027%(name)s count exceeds maximum value \u0027"},{"line_number":326,"context_line":"                          \u0027%(maximum)d\u0027) % {\"name\": actions_name,"},{"line_number":327,"context_line":"                                            \"maximum\": max_actions}"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa963961_1179f6fc","line":324,"in_reply_to":"1a6ced46_8f606fa6","updated":"2015-03-26 15:11:29.000000000","message":"nit but +1 :)","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"976088097d4f2e8a80cdc36bfaf145932c44545f","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                error \u003d _(\u0027duplicate actions are found: %s\u0027) % actions"},{"line_number":322,"context_line":"                raise base.ClientSideError(error)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            if 0 \u003c max_actions and max_actions \u003c len(actions):"},{"line_number":325,"context_line":"                error \u003d _(\u0027%(name)s count exceeds maximum value \u0027"},{"line_number":326,"context_line":"                          \u0027%(maximum)d\u0027) % {\"name\": actions_name,"},{"line_number":327,"context_line":"                                            \"maximum\": max_actions}"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_8f606fa6","line":324,"in_reply_to":"1a6ced46_b4cf457e","updated":"2015-03-26 11:47:08.000000000","message":"I wanna to use 0 \u003c max_actions \u003c len(actions), it is supported and neater but not sure if it is good for code reading :)","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"525ed2ea01ed56d512e445878255302e177fc3ae","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                                            \"maximum\": max_actions}"},{"line_number":328,"context_line":"                raise base.ClientSideError(error)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            normal_user \u003d rbac.get_limited_to_project(pecan.request.headers)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"            for action in actions:"},{"line_number":333,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_074075a4","line":330,"updated":"2015-04-07 10:33:31.000000000","message":"In my opinion we could write here tenant_user or smth like, as normal_user does not really make the code readable IMHO.","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3074e4bf85015471f541b353460b2ffeec747e7c","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                                            \"maximum\": max_actions}"},{"line_number":328,"context_line":"                raise base.ClientSideError(error)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            normal_user \u003d rbac.get_limited_to_project(pecan.request.headers)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"            for action in actions:"},{"line_number":333,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_9ac5f85c","line":330,"in_reply_to":"9aa53dc9_074075a4","updated":"2015-04-07 11:28:30.000000000","message":"Done","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"525ed2ea01ed56d512e445878255302e177fc3ae","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                    error \u003d _(\"Unsupported action %s\") % action"},{"line_number":340,"context_line":"                    raise base.ClientSideError(error)"},{"line_number":341,"context_line":"                if normal_user and url.scheme in (\u0027log\u0027, \u0027test\u0027):"},{"line_number":342,"context_line":"                    error \u003d _(\u0027You are not authorized to create action with \u0027"},{"line_number":343,"context_line":"                              \u0027schema of %s\u0027) % url.scheme"},{"line_number":344,"context_line":"                    raise base.ClientSideError(error, status_code\u003d401)"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_07f99580","line":342,"updated":"2015-04-07 10:33:31.000000000","message":"I would drop the \u0027with schema of\u0027, as it is not informative for the user I think, I would write simply that: \u0027... to create action: %s\u0027.","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3074e4bf85015471f541b353460b2ffeec747e7c","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                    error \u003d _(\"Unsupported action %s\") % action"},{"line_number":340,"context_line":"                    raise base.ClientSideError(error)"},{"line_number":341,"context_line":"                if normal_user and url.scheme in (\u0027log\u0027, \u0027test\u0027):"},{"line_number":342,"context_line":"                    error \u003d _(\u0027You are not authorized to create action with \u0027"},{"line_number":343,"context_line":"                              \u0027schema of %s\u0027) % url.scheme"},{"line_number":344,"context_line":"                    raise base.ClientSideError(error, status_code\u003d401)"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_7aa114a9","line":342,"in_reply_to":"9aa53dc9_07f99580","updated":"2015-04-07 11:28:30.000000000","message":"Done","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"}],"ceilometer/tests/api/v2/test_alarm_scenarios.py":[{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"525ed2ea01ed56d512e445878255302e177fc3ae","unresolved":false,"context_lines":[{"line_number":1684,"context_line":"            \u0027combination_rule\u0027: {"},{"line_number":1685,"context_line":"                \u0027alarm_ids\u0027: [\u0027a\u0027, \u0027b\u0027],"},{"line_number":1686,"context_line":"            },"},{"line_number":1687,"context_line":"            \u0027alarm_actions\u0027: [\u0027http://no.where\u0027, \u0027http://no.where\u0027]"},{"line_number":1688,"context_line":"        }"},{"line_number":1689,"context_line":"        resp \u003d self.post_json(\u0027/alarms\u0027, params\u003dbody, expect_errors\u003dTrue,"},{"line_number":1690,"context_line":"                              headers\u003dself.auth_headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_47b67d8b","line":1687,"updated":"2015-04-07 10:33:31.000000000","message":"What about de-duplicate in the code as opposed to throw an error? Not necessarily in this patch.","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3074e4bf85015471f541b353460b2ffeec747e7c","unresolved":false,"context_lines":[{"line_number":1684,"context_line":"            \u0027combination_rule\u0027: {"},{"line_number":1685,"context_line":"                \u0027alarm_ids\u0027: [\u0027a\u0027, \u0027b\u0027],"},{"line_number":1686,"context_line":"            },"},{"line_number":1687,"context_line":"            \u0027alarm_actions\u0027: [\u0027http://no.where\u0027, \u0027http://no.where\u0027]"},{"line_number":1688,"context_line":"        }"},{"line_number":1689,"context_line":"        resp \u003d self.post_json(\u0027/alarms\u0027, params\u003dbody, expect_errors\u003dTrue,"},{"line_number":1690,"context_line":"                              headers\u003dself.auth_headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_5abbf0c4","line":1687,"in_reply_to":"9aa53dc9_47b67d8b","updated":"2015-04-07 11:28:30.000000000","message":"Done","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"525ed2ea01ed56d512e445878255302e177fc3ae","unresolved":false,"context_lines":[{"line_number":1697,"context_line":"    def test_post_alarm_with_too_many_actions(self):"},{"line_number":1698,"context_line":"        self.CONF.set_override(\u0027alarm_max_actions\u0027, 1, group\u003d\u0027alarm\u0027)"},{"line_number":1699,"context_line":"        body \u003d {"},{"line_number":1700,"context_line":"            \u0027name\u0027: \u0027dup_alarm_actions\u0027,"},{"line_number":1701,"context_line":"            \u0027type\u0027: \u0027combination\u0027,"},{"line_number":1702,"context_line":"            \u0027combination_rule\u0027: {"},{"line_number":1703,"context_line":"                \u0027alarm_ids\u0027: [\u0027a\u0027, \u0027b\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_e786b1b8","line":1700,"updated":"2015-04-07 10:33:31.000000000","message":"Tiny nit, in case of the other tests the name reflects to test, but here this one is the duplicate of the previous one\u0027s.","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3074e4bf85015471f541b353460b2ffeec747e7c","unresolved":false,"context_lines":[{"line_number":1697,"context_line":"    def test_post_alarm_with_too_many_actions(self):"},{"line_number":1698,"context_line":"        self.CONF.set_override(\u0027alarm_max_actions\u0027, 1, group\u003d\u0027alarm\u0027)"},{"line_number":1699,"context_line":"        body \u003d {"},{"line_number":1700,"context_line":"            \u0027name\u0027: \u0027dup_alarm_actions\u0027,"},{"line_number":1701,"context_line":"            \u0027type\u0027: \u0027combination\u0027,"},{"line_number":1702,"context_line":"            \u0027combination_rule\u0027: {"},{"line_number":1703,"context_line":"                \u0027alarm_ids\u0027: [\u0027a\u0027, \u0027b\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_7ab6b4dd","line":1700,"in_reply_to":"9aa53dc9_e786b1b8","updated":"2015-04-07 11:28:30.000000000","message":"Done","commit_id":"e36fed28c57743d283d11fa54c0a1eac4180220b"}]}
