)]}'
{"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"34491a2af1f1090ac528305f710f8d18d08eff20","unresolved":false,"context_lines":[{"line_number":687,"context_line":"    @wsme_pecan.wsexpose(None, wtypes.text, status_code\u003d204)"},{"line_number":688,"context_line":"    def delete(self, alarm_id):"},{"line_number":689,"context_line":"        \"\"\"Delete an alarm\"\"\""},{"line_number":690,"context_line":"        pecan.request.storage_conn.delete_alarm(alarm_id)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    @wsme_pecan.wsexpose(Alarm, wtypes.text)"},{"line_number":693,"context_line":"    def get_one(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FmkA%3D","line":690,"updated":"2013-05-02 07:03:06.000000000","message":"Perhaps, we need to return a ClientSideError if the alarm_id doesn\u0027t exists","commit_id":"e75476146aeb7ea9951eb23e43f7cea834186853"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"bd3d09203f90ce21fd0a4f27146f0e0a30850a53","unresolved":false,"context_lines":[{"line_number":687,"context_line":"    @wsme_pecan.wsexpose(None, wtypes.text, status_code\u003d204)"},{"line_number":688,"context_line":"    def delete(self, alarm_id):"},{"line_number":689,"context_line":"        \"\"\"Delete an alarm\"\"\""},{"line_number":690,"context_line":"        pecan.request.storage_conn.delete_alarm(alarm_id)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    @wsme_pecan.wsexpose(Alarm, wtypes.text)"},{"line_number":693,"context_line":"    def get_one(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FmX4%3D","line":690,"in_reply_to":"AAAAOn%2F%2FmkA%3D","updated":"2013-05-02 10:38:25.000000000","message":"Done","commit_id":"e75476146aeb7ea9951eb23e43f7cea834186853"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"739e8ae3601a109ddfbc51751e875e38a192d023","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        if len(alarms) \u003c 1:"},{"line_number":694,"context_line":"            raise wsme.exc.ClientSideError(_(\"Unknown alarm\"))"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        pecan.request.storage_conn.delete_alarm(alarm_id)"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    @wsme_pecan.wsexpose(Alarm, wtypes.text)"},{"line_number":699,"context_line":"    def get_one(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FmSU%3D","line":696,"updated":"2013-05-02 12:05:18.000000000","message":"Small cosmetic change: perhaps reuse \"conn\"","commit_id":"53fd4bcbe935f83f3d425edf8c83f1933108ca20"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"37e7f4bc71f6eee4958e94b520dc86136ccc9572","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        if len(alarms) \u003c 1:"},{"line_number":694,"context_line":"            raise wsme.exc.ClientSideError(_(\"Unknown alarm\"))"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        pecan.request.storage_conn.delete_alarm(alarm_id)"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    @wsme_pecan.wsexpose(Alarm, wtypes.text)"},{"line_number":699,"context_line":"    def get_one(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FlIg%3D","line":696,"in_reply_to":"AAAAOn%2F%2FmSU%3D","updated":"2013-05-03 02:21:02.000000000","message":"Done","commit_id":"53fd4bcbe935f83f3d425edf8c83f1933108ca20"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"573191f87549dd3eb8c9aa82d56225aca3b48f1e","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        alarm \u003d conn.update_alarm(alarm_in)"},{"line_number":657,"context_line":"        return Alarm.from_db_model(alarm)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    @wsme_pecan.wsexpose(Alarm, wtypes.text, body\u003dAlarm, status_code\u003d201)"},{"line_number":660,"context_line":"    def put(self, alarm_id, data):"},{"line_number":661,"context_line":"        \"\"\"Modify an alarm\"\"\""},{"line_number":662,"context_line":"        conn \u003d pecan.request.storage_conn"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fjt8%3D","line":659,"updated":"2013-05-03 22:25:56.000000000","message":"this should be status_code\u003d200... i\u0027m assuming PUT will only modify (not create) an alarm.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"abda3d737366f2774b9d3088c8f5f0259318bc47","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        alarm \u003d conn.update_alarm(alarm_in)"},{"line_number":657,"context_line":"        return Alarm.from_db_model(alarm)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"    @wsme_pecan.wsexpose(Alarm, wtypes.text, body\u003dAlarm, status_code\u003d201)"},{"line_number":660,"context_line":"    def put(self, alarm_id, data):"},{"line_number":661,"context_line":"        \"\"\"Modify an alarm\"\"\""},{"line_number":662,"context_line":"        conn \u003d pecan.request.storage_conn"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FjbU%3D","line":659,"in_reply_to":"AAAAOn%2F%2Fjt8%3D","updated":"2013-05-04 12:37:05.000000000","message":"oops, yes I\u0027ll fix that - thanks.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a346d520b94a0618b68afebfce42a8d924f7620a","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            for k, v in kwargs.iteritems():"},{"line_number":677,"context_line":"                setattr(alarm_in, k, v)"},{"line_number":678,"context_line":"                if k \u003d\u003d \u0027state\u0027:"},{"line_number":679,"context_line":"                    alarm_in.state_timestamp \u003d timeutils.utcnow()"},{"line_number":680,"context_line":"        except Exception as ex:"},{"line_number":681,"context_line":"            LOG.exception(ex)"},{"line_number":682,"context_line":"            raise wsme.exc.ClientSideError(_(\"Alarm incorrect\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FkqY%3D","line":679,"updated":"2013-05-03 12:46:19.000000000","message":"I wonder if that wouldn\u0027t be better implemented in the Alarm class directly. Thought?","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"abda3d737366f2774b9d3088c8f5f0259318bc47","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            for k, v in kwargs.iteritems():"},{"line_number":677,"context_line":"                setattr(alarm_in, k, v)"},{"line_number":678,"context_line":"                if k \u003d\u003d \u0027state\u0027:"},{"line_number":679,"context_line":"                    alarm_in.state_timestamp \u003d timeutils.utcnow()"},{"line_number":680,"context_line":"        except Exception as ex:"},{"line_number":681,"context_line":"            LOG.exception(ex)"},{"line_number":682,"context_line":"            raise wsme.exc.ClientSideError(_(\"Alarm incorrect\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FjbA%3D","line":679,"in_reply_to":"AAAAOn%2F%2FkqY%3D","updated":"2013-05-04 12:37:05.000000000","message":"The model class is created from many different contexts:\n post/put\n when data is returned from the db\n\n I\u0027d be a little worried that the state_timestamp would be set unitensionally when\n you read something from the db. It would have the state set and this would set the\n timestamp when you don\u0027t want it set.\n\n The point of state_timestamp is that it is set when ever the state changes so you don\u0027t really want the timestamp set wrongly.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a346d520b94a0618b68afebfce42a8d924f7620a","unresolved":false,"context_lines":[{"line_number":679,"context_line":"                    alarm_in.state_timestamp \u003d timeutils.utcnow()"},{"line_number":680,"context_line":"        except Exception as ex:"},{"line_number":681,"context_line":"            LOG.exception(ex)"},{"line_number":682,"context_line":"            raise wsme.exc.ClientSideError(_(\"Alarm incorrect\"))"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        alarm \u003d conn.update_alarm(alarm_in)"},{"line_number":685,"context_line":"        return Alarm.from_db_model(alarm)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fkqc%3D","line":682,"updated":"2013-05-03 12:46:19.000000000","message":"Would be nice to be more explicit actually. :)\nYou can probably catch the AttributeError and says which field is invalid.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"39a9a451b6c11c7973daca0c6cbd6f67fe07ddbc","unresolved":false,"context_lines":[{"line_number":679,"context_line":"                    alarm_in.state_timestamp \u003d timeutils.utcnow()"},{"line_number":680,"context_line":"        except Exception as ex:"},{"line_number":681,"context_line":"            LOG.exception(ex)"},{"line_number":682,"context_line":"            raise wsme.exc.ClientSideError(_(\"Alarm incorrect\"))"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        alarm \u003d conn.update_alarm(alarm_in)"},{"line_number":685,"context_line":"        return Alarm.from_db_model(alarm)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fi4g%3D","line":682,"in_reply_to":"AAAAOn%2F%2FjbM%3D","updated":"2013-05-06 01:02:43.000000000","message":"urg, I just tested this and the behavior is:\n 1) for user defined types (like Alarm) the json to object converter just ignores unknown values (no AttributeError).\n 2) there is no overriden __setattr__() so there is no checking in the above situation. So I am going to remove the try/except as it will never hit. I think this is ok as there will never be an unknown attribute at this stage.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"abda3d737366f2774b9d3088c8f5f0259318bc47","unresolved":false,"context_lines":[{"line_number":679,"context_line":"                    alarm_in.state_timestamp \u003d timeutils.utcnow()"},{"line_number":680,"context_line":"        except Exception as ex:"},{"line_number":681,"context_line":"            LOG.exception(ex)"},{"line_number":682,"context_line":"            raise wsme.exc.ClientSideError(_(\"Alarm incorrect\"))"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        alarm \u003d conn.update_alarm(alarm_in)"},{"line_number":685,"context_line":"        return Alarm.from_db_model(alarm)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FjbM%3D","line":682,"in_reply_to":"AAAAOn%2F%2Fkqc%3D","updated":"2013-05-04 12:37:05.000000000","message":"k, I\u0027ll sort that out.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"ec170ea809974d3202d452919403fd5308d75666","unresolved":false,"context_lines":[{"line_number":684,"context_line":"class AlarmsController(rest.RestController):"},{"line_number":685,"context_line":"    \"\"\"Works on alarms.\"\"\""},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    @wsme.validate(Alarm)"},{"line_number":688,"context_line":"    @wsme_pecan.wsexpose(Alarm, body\u003dAlarm, status_code\u003d201)"},{"line_number":689,"context_line":"    def post(self, data):"},{"line_number":690,"context_line":"        \"\"\"Create a new alarm\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2Fikc%3D","line":687,"updated":"2013-05-06 10:20:36.000000000","message":"\u003c3","commit_id":"1f077ef117bbe6c489e512d7af0d602094b602e1"}],"tests/api/v2/test_alarm.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a346d520b94a0618b68afebfce42a8d924f7620a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        super(TestAlarms, self).setUp()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.auth_headers \u003d {\u0027X-User-Id\u0027: \u0027XXX\u0027,"},{"line_number":44,"context_line":"                             \u0027X-Project-Id\u0027: \u0027XXX\u0027}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        for alarm in [Alarm(alarm_id\u003d\u00271\u0027, name\u003d\u0027name1\u0027,"},{"line_number":47,"context_line":"                            counter_name\u003d\u0027meter.test\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FkqU%3D","line":44,"updated":"2013-05-03 12:46:19.000000000","message":"For the sake of testing, using different values would be safer :)","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"abda3d737366f2774b9d3088c8f5f0259318bc47","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        super(TestAlarms, self).setUp()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.auth_headers \u003d {\u0027X-User-Id\u0027: \u0027XXX\u0027,"},{"line_number":44,"context_line":"                             \u0027X-Project-Id\u0027: \u0027XXX\u0027}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        for alarm in [Alarm(alarm_id\u003d\u00271\u0027, name\u003d\u0027name1\u0027,"},{"line_number":47,"context_line":"                            counter_name\u003d\u0027meter.test\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FjZ0%3D","line":44,"in_reply_to":"AAAAOn%2F%2FjtM%3D","updated":"2013-05-04 12:37:05.000000000","message":"Done","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"573191f87549dd3eb8c9aa82d56225aca3b48f1e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        super(TestAlarms, self).setUp()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.auth_headers \u003d {\u0027X-User-Id\u0027: \u0027XXX\u0027,"},{"line_number":44,"context_line":"                             \u0027X-Project-Id\u0027: \u0027XXX\u0027}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        for alarm in [Alarm(alarm_id\u003d\u00271\u0027, name\u003d\u0027name1\u0027,"},{"line_number":47,"context_line":"                            counter_name\u003d\u0027meter.test\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FjtM%3D","line":44,"in_reply_to":"AAAAOn%2F%2FkqU%3D","updated":"2013-05-03 22:25:56.000000000","message":"maybe use uuid instead of making up values.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"573191f87549dd3eb8c9aa82d56225aca3b48f1e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            \u0027threshold\u0027: 2.0,"},{"line_number":99,"context_line":"            \u0027statistic\u0027: \u0027avg\u0027,"},{"line_number":100,"context_line":"        }"},{"line_number":101,"context_line":"        self.post_json(\u0027/alarms\u0027, params\u003djson, status\u003d200,"},{"line_number":102,"context_line":"                       headers\u003dself.auth_headers)"},{"line_number":103,"context_line":"        alarms \u003d list(self.conn.get_alarms())"},{"line_number":104,"context_line":"        self.assertEquals(4, len(alarms))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fjs8%3D","line":101,"updated":"2013-05-03 22:25:56.000000000","message":"i think this should be returning status\u003d201 if an alarm was created.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"abda3d737366f2774b9d3088c8f5f0259318bc47","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            \u0027threshold\u0027: 2.0,"},{"line_number":99,"context_line":"            \u0027statistic\u0027: \u0027avg\u0027,"},{"line_number":100,"context_line":"        }"},{"line_number":101,"context_line":"        self.post_json(\u0027/alarms\u0027, params\u003djson, status\u003d200,"},{"line_number":102,"context_line":"                       headers\u003dself.auth_headers)"},{"line_number":103,"context_line":"        alarms \u003d list(self.conn.get_alarms())"},{"line_number":104,"context_line":"        self.assertEquals(4, len(alarms))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fjbc%3D","line":101,"in_reply_to":"AAAAOn%2F%2Fjs8%3D","updated":"2013-05-04 12:37:05.000000000","message":"You are correct, but wsme has a bug at the moment and I am waiting\nfor my fix to make it into a release before I can update the test.\n\nhttps://bitbucket.org/cdevienne/wsme/commits/104cc7f45dc4e17134b6bc67f94d0dc6e296a0c3","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"573191f87549dd3eb8c9aa82d56225aca3b48f1e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        data \u003d self.get_json(\u0027/alarms\u0027)"},{"line_number":117,"context_line":"        self.assertEquals(3, len(data))"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        self.delete(\u0027/alarms/1\u0027, status\u003d200)"},{"line_number":120,"context_line":"        alarms \u003d list(self.conn.get_alarms())"},{"line_number":121,"context_line":"        self.assertEquals(2, len(alarms))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2Fjs0%3D","line":119,"updated":"2013-05-03 22:25:56.000000000","message":"should probably be status\u003d204","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"abda3d737366f2774b9d3088c8f5f0259318bc47","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        data \u003d self.get_json(\u0027/alarms\u0027)"},{"line_number":117,"context_line":"        self.assertEquals(3, len(data))"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        self.delete(\u0027/alarms/1\u0027, status\u003d200)"},{"line_number":120,"context_line":"        alarms \u003d list(self.conn.get_alarms())"},{"line_number":121,"context_line":"        self.assertEquals(2, len(alarms))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FjbY%3D","line":119,"in_reply_to":"AAAAOn%2F%2Fjs0%3D","updated":"2013-05-04 12:37:05.000000000","message":"same comment as above.","commit_id":"b4152cda88b4141cef1d4241261f6f1c04220a3a"}]}
