)]}'
{"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7af150e2add35f2702e5a401e67768faa1c0d8ab","unresolved":false,"context_lines":[{"line_number":530,"context_line":"    \"\"\"One category of measurements."},{"line_number":531,"context_line":"    \"\"\""},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    id \u003d int"},{"line_number":534,"context_line":"    \"The ID of the alarm\""},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    name \u003d wtypes.text"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FpaM%3D","line":533,"updated":"2013-04-30 17:37:25.000000000","message":"Why is this an int instead of a UUID?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":530,"context_line":"    \"\"\"One category of measurements."},{"line_number":531,"context_line":"    \"\"\""},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    id \u003d int"},{"line_number":534,"context_line":"    \"The ID of the alarm\""},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    name \u003d wtypes.text"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo2k%3D","line":533,"in_reply_to":"AAAAOn%2F%2FpaM%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7af150e2add35f2702e5a401e67768faa1c0d8ab","unresolved":false,"context_lines":[{"line_number":548,"context_line":"    user_id \u003d wtypes.text"},{"line_number":549,"context_line":"    \"The ID of the user who last triggered an update to the alarm\""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    comparison_operator \u003d wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)"},{"line_number":552,"context_line":"    \"The comparaison of the alarm threshold\""},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    threshold \u003d float"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpes%3D","line":551,"updated":"2013-04-30 17:37:25.000000000","message":"Should that \"str\" be wstypes.text?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":548,"context_line":"    user_id \u003d wtypes.text"},{"line_number":549,"context_line":"    \"The ID of the user who last triggered an update to the alarm\""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    comparison_operator \u003d wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)"},{"line_number":552,"context_line":"    \"The comparaison of the alarm threshold\""},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    threshold \u003d float"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo2Q%3D","line":551,"in_reply_to":"AAAAOn%2F%2Fpes%3D","updated":"2013-05-01 00:00:54.000000000","message":"http://pythonhosted.org/WSME/types.html#pre-defined-user-types\n\nThe examples there use \"str\".","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7af150e2add35f2702e5a401e67768faa1c0d8ab","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    threshold \u003d float"},{"line_number":555,"context_line":"    \"The threshold of the alarm\""},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    statistic \u003d wtypes.Enum(str, \u0027maximum\u0027, \u0027minimum\u0027, \u0027average\u0027, \u0027sum\u0027,"},{"line_number":558,"context_line":"                            \u0027sample_count\u0027)"},{"line_number":559,"context_line":"    \"The statistic to compare to the threshold\""},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpeo%3D","line":557,"updated":"2013-04-30 17:37:25.000000000","message":"Ditto","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":562,"context_line":"    \"This alarm is enabled?\""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    evaluation_period \u003d float"},{"line_number":565,"context_line":"    \"The number of period to evaluate with the threshold\""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    aggregate_period \u003d float"},{"line_number":568,"context_line":"    \"The time range of a aggregate of metric to evaluate with the threshold\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FpvA%3D","line":565,"updated":"2013-04-30 16:00:00.000000000","message":"Should \u0027period\u0027 be pluralized in the docstr and identifier above?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":562,"context_line":"    \"This alarm is enabled?\""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    evaluation_period \u003d float"},{"line_number":565,"context_line":"    \"The number of period to evaluate with the threshold\""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    aggregate_period \u003d float"},{"line_number":568,"context_line":"    \"The time range of a aggregate of metric to evaluate with the threshold\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0g%3D","line":565,"in_reply_to":"AAAAOn%2F%2Fpeg%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":562,"context_line":"    \"This alarm is enabled?\""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    evaluation_period \u003d float"},{"line_number":565,"context_line":"    \"The number of period to evaluate with the threshold\""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    aggregate_period \u003d float"},{"line_number":568,"context_line":"    \"The time range of a aggregate of metric to evaluate with the threshold\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0k%3D","line":565,"in_reply_to":"AAAAOn%2F%2FpvA%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7af150e2add35f2702e5a401e67768faa1c0d8ab","unresolved":false,"context_lines":[{"line_number":562,"context_line":"    \"This alarm is enabled?\""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    evaluation_period \u003d float"},{"line_number":565,"context_line":"    \"The number of period to evaluate with the threshold\""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    aggregate_period \u003d float"},{"line_number":568,"context_line":"    \"The time range of a aggregate of metric to evaluate with the threshold\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpeg%3D","line":565,"in_reply_to":"AAAAOn%2F%2FpvA%3D","updated":"2013-04-30 17:37:25.000000000","message":"Is this a count of periods, or the length of a period? Why is it a float (will we support sub-second or sub-minute periods)?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7af150e2add35f2702e5a401e67768faa1c0d8ab","unresolved":false,"context_lines":[{"line_number":565,"context_line":"    \"The number of period to evaluate with the threshold\""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    aggregate_period \u003d float"},{"line_number":568,"context_line":"    \"The time range of a aggregate of metric to evaluate with the threshold\""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    timestamp \u003d datetime.datetime"},{"line_number":571,"context_line":"    \"The date of the last alarm definition update\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpec%3D","line":568,"updated":"2013-04-30 17:37:25.000000000","message":"Time in what units? Seconds? Minutes?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":565,"context_line":"    \"The number of period to evaluate with the threshold\""},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    aggregate_period \u003d float"},{"line_number":568,"context_line":"    \"The time range of a aggregate of metric to evaluate with the threshold\""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    timestamp \u003d datetime.datetime"},{"line_number":571,"context_line":"    \"The date of the last alarm definition update\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0c%3D","line":568,"in_reply_to":"AAAAOn%2F%2Fpec%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    \"The date of the last alarm state changed\""},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"    state_change_webhook \u003d wtypes.text"},{"line_number":580,"context_line":"    \"The webhook to call when the alarm state changes\""},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"    matching_metadata \u003d {wtypes.text: wtypes.text}"},{"line_number":583,"context_line":"    \"The matching_metadata of the alarm\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpuw%3D","line":580,"updated":"2013-04-30 16:00:00.000000000","message":"I\u0027m wondering whether a single state_change web hook will suffice here? (as opposed to separate web hooks for each terminal state)\n\nIn particular, the OK-\u003eINSUFFICIENT_DATA transitions are often just noise to the alarm consumer.","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    \"The date of the last alarm state changed\""},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"    state_change_webhook \u003d wtypes.text"},{"line_number":580,"context_line":"    \"The webhook to call when the alarm state changes\""},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"    matching_metadata \u003d {wtypes.text: wtypes.text}"},{"line_number":583,"context_line":"    \"The matching_metadata of the alarm\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0U%3D","line":580,"in_reply_to":"AAAAOn%2F%2Fpuw%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":589,"context_line":"    def sample(cls):"},{"line_number":590,"context_line":"        return cls(id\u003dNone,"},{"line_number":591,"context_line":"                   name\u003d\"SwiftObjectAlarm\","},{"line_number":592,"context_line":"                   description\u003d\"A alarm\","},{"line_number":593,"context_line":"                   counter_name\u003d\"storage.objects\","},{"line_number":594,"context_line":"                   comparison_operator\u003d\"gt\","},{"line_number":595,"context_line":"                   threshold\u003d200,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpsw%3D","line":592,"updated":"2013-04-30 16:00:00.000000000","message":"Nitpick: s/A/An/","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":589,"context_line":"    def sample(cls):"},{"line_number":590,"context_line":"        return cls(id\u003dNone,"},{"line_number":591,"context_line":"                   name\u003d\"SwiftObjectAlarm\","},{"line_number":592,"context_line":"                   description\u003d\"A alarm\","},{"line_number":593,"context_line":"                   counter_name\u003d\"storage.objects\","},{"line_number":594,"context_line":"                   comparison_operator\u003d\"gt\","},{"line_number":595,"context_line":"                   threshold\u003d200,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0Q%3D","line":592,"in_reply_to":"AAAAOn%2F%2Fpsw%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                   user_id\u003d\"c96c887c216949acbdfbd8b494863567\","},{"line_number":598,"context_line":"                   project_id\u003d\"c96c887c216949acbdfbd8b494863567\","},{"line_number":599,"context_line":"                   evaluation_period\u003d240.0,"},{"line_number":600,"context_line":"                   aggregate_period\u003d2,"},{"line_number":601,"context_line":"                   enabled\u003dTrue,"},{"line_number":602,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":603,"context_line":"                   state\u003d\"ok\","}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fps4%3D","line":600,"updated":"2013-04-30 16:00:00.000000000","message":"The example here seems to mix up evaluation_period(s) and aggregate_period as explained in the individual docstrings above.\n\nOr maybe my understand is mixed up ...\n\n* evaluation_period(s): number periods back in time over which to evaluate the threshold\n* aggregate_period: length of each period in seconds\n\n\u003d\u003e time window for evaluation: [now - (evaluation_periods * aggregate_period)s, now]","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                   user_id\u003d\"c96c887c216949acbdfbd8b494863567\","},{"line_number":598,"context_line":"                   project_id\u003d\"c96c887c216949acbdfbd8b494863567\","},{"line_number":599,"context_line":"                   evaluation_period\u003d240.0,"},{"line_number":600,"context_line":"                   aggregate_period\u003d2,"},{"line_number":601,"context_line":"                   enabled\u003dTrue,"},{"line_number":602,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":603,"context_line":"                   state\u003d\"ok\","}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0E%3D","line":600,"in_reply_to":"AAAAOn%2F%2Fps4%3D","updated":"2013-05-01 00:00:54.000000000","message":"Yea, you are right. I have changed the name of aggregate_period -\u003e period and\nevaluation_period -\u003e evaluation_periods","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":605,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"},{"line_number":606,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"},{"line_number":607,"context_line":"                   insufficient_data_actions\u003d[\"http://site:8000/nodata\"],"},{"line_number":608,"context_line":"                   matching_metadata\u003d{\"project_id\":"},{"line_number":609,"context_line":"                                      \"c96c887c216949acbdfbd8b494863567\"}"},{"line_number":610,"context_line":"                   )"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpug%3D","line":607,"updated":"2013-04-30 16:00:00.000000000","message":"Do separate alarm_actions and insufficient_data_actions gel with the single state_change_webhook attribute above?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":605,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"},{"line_number":606,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"},{"line_number":607,"context_line":"                   insufficient_data_actions\u003d[\"http://site:8000/nodata\"],"},{"line_number":608,"context_line":"                   matching_metadata\u003d{\"project_id\":"},{"line_number":609,"context_line":"                                      \"c96c887c216949acbdfbd8b494863567\"}"},{"line_number":610,"context_line":"                   )"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fo0A%3D","line":607,"in_reply_to":"AAAAOn%2F%2Fpug%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"},{"line_number":607,"context_line":"                   insufficient_data_actions\u003d[\"http://site:8000/nodata\"],"},{"line_number":608,"context_line":"                   matching_metadata\u003d{\"project_id\":"},{"line_number":609,"context_line":"                                      \"c96c887c216949acbdfbd8b494863567\"}"},{"line_number":610,"context_line":"                   )"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpt8%3D","line":609,"updated":"2013-04-30 16:00:00.000000000","message":"Confused as to why the tenant would be captured in both the project_id and matching_metadata?","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"},{"line_number":607,"context_line":"                   insufficient_data_actions\u003d[\"http://site:8000/nodata\"],"},{"line_number":608,"context_line":"                   matching_metadata\u003d{\"project_id\":"},{"line_number":609,"context_line":"                                      \"c96c887c216949acbdfbd8b494863567\"}"},{"line_number":610,"context_line":"                   )"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fozk%3D","line":609,"in_reply_to":"AAAAOn%2F%2Fpt8%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"71542a9e1a7dd2f6e93ed7a2f32125f16e1d6f5c","unresolved":false,"context_lines":[{"line_number":546,"context_line":"    \"The ID of the project or tenant that owns the alarm\""},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    user_id \u003d wtypes.text"},{"line_number":549,"context_line":"    \"The ID of the user who last triggered an update to the alarm\""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    comparison_operator \u003d wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)"},{"line_number":552,"context_line":"    \"The comparaison of the alarm threshold\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoTs%3D","line":549,"updated":"2013-05-01 07:24:03.000000000","message":"Not the original owner (i.e. creator) of the alarm?\n\nBrings up an interesting point though about who is privileged to update alarms. I would have assumed just admin and the original owner, but maybe allowing other users (in say the same tenant) might make sense also (is that what you had in mind?)","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"c67340e9033d59018809f09b4fcb3ea46add7ed7","unresolved":false,"context_lines":[{"line_number":546,"context_line":"    \"The ID of the project or tenant that owns the alarm\""},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    user_id \u003d wtypes.text"},{"line_number":549,"context_line":"    \"The ID of the user who last triggered an update to the alarm\""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    comparison_operator \u003d wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)"},{"line_number":552,"context_line":"    \"The comparaison of the alarm threshold\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoSs%3D","line":549,"in_reply_to":"AAAAOn%2F%2FoTs%3D","updated":"2013-05-01 07:58:44.000000000","message":"I think anyone in the same tenant should be able to modify it, but I agree the text should should say user_id is the \"creator\".","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"71542a9e1a7dd2f6e93ed7a2f32125f16e1d6f5c","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    \"The ID of the user who last triggered an update to the alarm\""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    comparison_operator \u003d wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)"},{"line_number":552,"context_line":"    \"The comparaison of the alarm threshold\""},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    threshold \u003d float"},{"line_number":555,"context_line":"    \"The threshold of the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoT8%3D","line":552,"updated":"2013-05-01 07:24:03.000000000","message":"s/comparaison/comparison/\n\nAlso nitpick:\n\ns/comparison of/comparison against/\n\n(feel free to ignore the latter point ...)","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"c67340e9033d59018809f09b4fcb3ea46add7ed7","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    \"The ID of the user who last triggered an update to the alarm\""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    comparison_operator \u003d wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)"},{"line_number":552,"context_line":"    \"The comparaison of the alarm threshold\""},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    threshold \u003d float"},{"line_number":555,"context_line":"    \"The threshold of the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoSo%3D","line":552,"in_reply_to":"AAAAOn%2F%2FoT8%3D","updated":"2013-05-01 07:58:44.000000000","message":"Done","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"71542a9e1a7dd2f6e93ed7a2f32125f16e1d6f5c","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    \"The time range in seconds over which to evaluate the threshold\""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    timestamp \u003d datetime.datetime"},{"line_number":571,"context_line":"    \"The date of the last alarm definition update\""},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    state \u003d wtypes.Enum(str, \u0027ok\u0027, \u0027alarm\u0027, \u0027insufficient data\u0027)"},{"line_number":574,"context_line":"    \"The state offset the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoTo%3D","line":571,"updated":"2013-05-01 07:24:03.000000000","message":"Would it make sense to keep a timestamp for the last state change also?\n\n(Sure, this could be retrieved from history, but it might make sense to have a shortcut to do so ...)","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"37b824d3b427b74ecaf39829c879761bab325ffe","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    \"The time range in seconds over which to evaluate the threshold\""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    timestamp \u003d datetime.datetime"},{"line_number":571,"context_line":"    \"The date of the last alarm definition update\""},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    state \u003d wtypes.Enum(str, \u0027ok\u0027, \u0027alarm\u0027, \u0027insufficient data\u0027)"},{"line_number":574,"context_line":"    \"The state offset the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FmZ0%3D","line":571,"in_reply_to":"AAAAOn%2F%2FoSc%3D","updated":"2013-05-02 10:18:13.000000000","message":"Yes, exactly ... sorry missed that, expected the timestamps to be grouped together.","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"c67340e9033d59018809f09b4fcb3ea46add7ed7","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    \"The time range in seconds over which to evaluate the threshold\""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    timestamp \u003d datetime.datetime"},{"line_number":571,"context_line":"    \"The date of the last alarm definition update\""},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    state \u003d wtypes.Enum(str, \u0027ok\u0027, \u0027alarm\u0027, \u0027insufficient data\u0027)"},{"line_number":574,"context_line":"    \"The state offset the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoSc%3D","line":571,"in_reply_to":"AAAAOn%2F%2FoTo%3D","updated":"2013-05-01 07:58:44.000000000","message":"line 576? state_timestamp","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"71542a9e1a7dd2f6e93ed7a2f32125f16e1d6f5c","unresolved":false,"context_lines":[{"line_number":583,"context_line":"    \"The actions to do when alarm state change to alarm\""},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    insufficient_data_actions \u003d [wtypes.text]"},{"line_number":586,"context_line":"    \"The actions to do when alarm state change to insufficient data\""},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    matching_metadata \u003d {wtypes.text: wtypes.text}"},{"line_number":589,"context_line":"    \"The matching_metadata of the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoTw%3D","line":586,"updated":"2013-05-01 07:24:03.000000000","message":"Just wondering about the pluralization of actions here.\n\nIf the intent is to allow multiple actions per state transition, should it be defined as some kind of list type instead of a flat string?\n\nAlso is the assumption that the webhook is always invoked via POST with a standard fragment of JSON in the entity body (which is fin by me, might make sense tho\u0027 for that assumption to be docstring\u0027d).","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"37b824d3b427b74ecaf39829c879761bab325ffe","unresolved":false,"context_lines":[{"line_number":583,"context_line":"    \"The actions to do when alarm state change to alarm\""},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    insufficient_data_actions \u003d [wtypes.text]"},{"line_number":586,"context_line":"    \"The actions to do when alarm state change to insufficient data\""},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    matching_metadata \u003d {wtypes.text: wtypes.text}"},{"line_number":589,"context_line":"    \"The matching_metadata of the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FmZk%3D","line":586,"in_reply_to":"AAAAOn%2F%2FoSI%3D","updated":"2013-05-02 10:18:13.000000000","message":"D\u0027oh, my bad on the list!\n\nHowever, thinking some more on this, I\u0027m beginning to wonder about the multiple actions idea. It\u0027s not really the alarmers concern to initiate a non-trivial workflow when an alarm trips, would it instead make better sense limit the action to a single webhook and require that any workflows needed are encapsulated by this single consumer? Just a thought ...","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"c67340e9033d59018809f09b4fcb3ea46add7ed7","unresolved":false,"context_lines":[{"line_number":583,"context_line":"    \"The actions to do when alarm state change to alarm\""},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    insufficient_data_actions \u003d [wtypes.text]"},{"line_number":586,"context_line":"    \"The actions to do when alarm state change to insufficient data\""},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    matching_metadata \u003d {wtypes.text: wtypes.text}"},{"line_number":589,"context_line":"    \"The matching_metadata of the alarm\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoSI%3D","line":586,"in_reply_to":"AAAAOn%2F%2FoTw%3D","updated":"2013-05-01 07:58:44.000000000","message":"wtypes.text is a str\n [wtypes.text] is a list of str\n \n or in our case a list of url\u0027s.\n I\u0027ll document thoughts on what gets posted to the webhook.","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"71542a9e1a7dd2f6e93ed7a2f32125f16e1d6f5c","unresolved":false,"context_lines":[{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    @wsme_pecan.wsexpose([Alarm], [Query])"},{"line_number":639,"context_line":"    def get_all(self, q\u003d[]):"},{"line_number":640,"context_line":"        \"\"\"Return all known meters, based on the data recorded so far."},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        :param q: Filter rules for the meters to be returned."},{"line_number":643,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoTg%3D","line":640,"updated":"2013-05-01 07:24:03.000000000","message":"s/all known meters, based on the data recorded so far/all known alarms matching the constraints defined by q/","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"c67340e9033d59018809f09b4fcb3ea46add7ed7","unresolved":false,"context_lines":[{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    @wsme_pecan.wsexpose([Alarm], [Query])"},{"line_number":639,"context_line":"    def get_all(self, q\u003d[]):"},{"line_number":640,"context_line":"        \"\"\"Return all known meters, based on the data recorded so far."},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        :param q: Filter rules for the meters to be returned."},{"line_number":643,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoR4%3D","line":640,"in_reply_to":"AAAAOn%2F%2FoTg%3D","updated":"2013-05-01 07:58:44.000000000","message":"doh! thanks","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"71542a9e1a7dd2f6e93ed7a2f32125f16e1d6f5c","unresolved":false,"context_lines":[{"line_number":639,"context_line":"    def get_all(self, q\u003d[]):"},{"line_number":640,"context_line":"        \"\"\"Return all known meters, based on the data recorded so far."},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"        :param q: Filter rules for the meters to be returned."},{"line_number":643,"context_line":"        \"\"\""},{"line_number":644,"context_line":"        return []"},{"line_number":645,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FoTc%3D","line":642,"updated":"2013-05-01 07:24:03.000000000","message":"s/meters/alarms/","commit_id":"d895f9a789c75b6f286b8dfc898f2c2370529e19"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"7714f4a0a3a1569f07369aa46b61c00735e66ad2","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"from ceilometer.openstack.common import log"},{"line_number":42,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":43,"context_line":"from ceilometer.openstack.common.gettextutils import _"},{"line_number":44,"context_line":"from ceilometer import storage"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FmoE%3D","line":43,"updated":"2013-05-02 06:04:35.000000000","message":"what\u0027s the use of this import?","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"d25a62e270b4b9163fc3a6c7adc00df2f5e09094","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"from ceilometer.openstack.common import log"},{"line_number":42,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":43,"context_line":"from ceilometer.openstack.common.gettextutils import _"},{"line_number":44,"context_line":"from ceilometer import storage"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmac%3D","line":43,"in_reply_to":"AAAAOn%2F%2Fmk8%3D","updated":"2013-05-02 10:05:20.000000000","message":"Done","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3d2e822a34954b45a4856087a05a5a5b54b3121d","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"from ceilometer.openstack.common import log"},{"line_number":42,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":43,"context_line":"from ceilometer.openstack.common.gettextutils import _"},{"line_number":44,"context_line":"from ceilometer import storage"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmk8%3D","line":43,"in_reply_to":"AAAAOn%2F%2FmlQ%3D","updated":"2013-05-02 06:40:55.000000000","message":"For that purpose, I think there is no need to import that here since the python script top level gettext.install() will install the builtin _() function. See https://review.openstack.org/#/c/25985/.","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"533bb54456baae0852d06d3069ce0bcd5afc3609","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"from ceilometer.openstack.common import log"},{"line_number":42,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":43,"context_line":"from ceilometer.openstack.common.gettextutils import _"},{"line_number":44,"context_line":"from ceilometer import storage"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FmlQ%3D","line":43,"in_reply_to":"AAAAOn%2F%2FmoE%3D","updated":"2013-05-02 06:30:58.000000000","message":"it\u0027s needed in later patches that use LOG.info(_(\u0027a message\u0027))\nif you really don\u0027t like it, I can move it to later.","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7d980717ea8278c4044c684535dad5d277bbe88a","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                   user_id\u003d\"c96c887c216949acbdfbd8b494863567\","},{"line_number":614,"context_line":"                   project_id\u003d\"c96c887c216949acbdfbd8b494863567\","},{"line_number":615,"context_line":"                   evaluation_period\u003d2,"},{"line_number":616,"context_line":"                   period\u003d240,"},{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FmkY%3D","line":616,"updated":"2013-05-02 07:02:11.000000000","message":"I agree it is a better name than aggregate_period","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7d980717ea8278c4044c684535dad5d277bbe88a","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                   evaluation_period\u003d2,"},{"line_number":616,"context_line":"                   period\u003d240,"},{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmko%3D","line":618,"updated":"2013-05-02 07:02:11.000000000","message":"Here, it should be a datetime.datetime object.\n(Sorry, the error came from my code)","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"bc9d69719093ae265a72692f176fb4c201ca9f13","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                   evaluation_period\u003d2,"},{"line_number":616,"context_line":"                   period\u003d240,"},{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FmZU%3D","line":618,"in_reply_to":"AAAAOn%2F%2Fmag%3D","updated":"2013-05-02 10:19:11.000000000","message":"Ignore this, I am talking rubbish. I\u0027ll change to datetime.","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"d25a62e270b4b9163fc3a6c7adc00df2f5e09094","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                   evaluation_period\u003d2,"},{"line_number":616,"context_line":"                   period\u003d240,"},{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmag%3D","line":618,"in_reply_to":"AAAAOn%2F%2Fmko%3D","updated":"2013-05-02 10:05:20.000000000","message":"this is a bit messed up IMO (wsme not you statement), because when you pass\na json body in wsme does not deseriaze the datetime object - I can\u0027t find a way to do\nit. So in a later patch I override the Alarm constructor and check to see if the timestamp is a str and convert it. So this comment will work. I think I just need to include that constructor in this patch so it is more understandable.","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7d980717ea8278c4044c684535dad5d277bbe88a","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                   period\u003d240,"},{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"},{"line_number":622,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmkg%3D","line":619,"updated":"2013-05-02 07:02:11.000000000","message":"I think state should be a int when the wsme type is wtypes.Enum (not really sure)","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"d25a62e270b4b9163fc3a6c7adc00df2f5e09094","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                   period\u003d240,"},{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"},{"line_number":622,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmaw%3D","line":619,"in_reply_to":"AAAAOn%2F%2Fmkg%3D","updated":"2013-05-02 10:05:20.000000000","message":"it depends on the type you specify\n this is a str\n wtypes.Enum(str, \u0027lt\u0027, \u0027le\u0027, \u0027eq\u0027, \u0027ne\u0027, \u0027ge\u0027, \u0027gt\u0027)\n\n this is an int\n wtypes.Enum(int, 1,2,3)","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7d980717ea8278c4044c684535dad5d277bbe88a","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"},{"line_number":622,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"},{"line_number":623,"context_line":"                   insufficient_data_actions\u003d[\"http://site:8000/nodata\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fmkk%3D","line":620,"updated":"2013-05-02 07:02:11.000000000","message":"Same here, it should be a datetime.datetime object.","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"bc9d69719093ae265a72692f176fb4c201ca9f13","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                   enabled\u003dTrue,"},{"line_number":618,"context_line":"                   timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":619,"context_line":"                   state\u003d\"ok\","},{"line_number":620,"context_line":"                   state_timestamp\u003d\"2013-04-08T05:17:13.698331\","},{"line_number":621,"context_line":"                   ok_actions\u003d[\"http://site:8000/ok\"],"},{"line_number":622,"context_line":"                   alarm_actions\u003d[\"http://site:8000/alarm\"],"},{"line_number":623,"context_line":"                   insufficient_data_actions\u003d[\"http://site:8000/nodata\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FmZQ%3D","line":620,"in_reply_to":"AAAAOn%2F%2Fmkk%3D","updated":"2013-05-02 10:19:11.000000000","message":"Done","commit_id":"63cc71d3c30594017d35c1dd5f3fb5bb0f2d7b01"}],"tests/api/v2/test_alarm.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"fffb4d48c657372bac7a9193eab27b96df72e8f7","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_put_alarm(self):"},{"line_number":60,"context_line":"        json \u003d {"},{"line_number":61,"context_line":"            \u0027name\u0027: \u0027renameded_alarm\u0027,"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":"        data \u003d self.put_json(\u0027/alarms/1\u0027, params\u003djson, expect_errors\u003dTrue)"},{"line_number":64,"context_line":"        self.assertEquals(data.status_int, 400)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fpsc%3D","line":61,"updated":"2013-04-30 16:00:00.000000000","message":"s/renameded/renamed/","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2737dbc84e446f59f2d68e086a3378c268b2564c","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_put_alarm(self):"},{"line_number":60,"context_line":"        json \u003d {"},{"line_number":61,"context_line":"            \u0027name\u0027: \u0027renameded_alarm\u0027,"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":"        data \u003d self.put_json(\u0027/alarms/1\u0027, params\u003djson, expect_errors\u003dTrue)"},{"line_number":64,"context_line":"        self.assertEquals(data.status_int, 400)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fozc%3D","line":61,"in_reply_to":"AAAAOn%2F%2Fpsc%3D","updated":"2013-05-01 00:00:54.000000000","message":"Done","commit_id":"70786787f520214427aa209b7c5a2f493a7ecb9c"}]}
