)]}'
{"etc/tempest.conf.sample":[{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"a072085b9783cba0f62343d96ec28026b8d9e4e5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"# syslog facility to receive log lines (string value)"},{"line_number":94,"context_line":"#syslog_log_facility\u003dLOG_USER"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"[image]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"AAAATn%2F8mGQ%3D","line":96,"updated":"2013-12-24 16:07:36.000000000","message":"please rearrange changes in this file to reduce the number of changed lines","commit_id":"5c5509f30da8142d019ffcd51d83319454cb8f44"}],"tempest/api/metering/alarms/test_alarms.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"af7bb1f1a6cf44ec9a4a75e9e20e5fc64da7949c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        #self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":69,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":70,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"},{"line_number":71,"context_line":"        self.assertNotIn(alarm_id, list_ids)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fx2E%3D","line":71,"updated":"2013-08-29 17:41:04.000000000","message":"Why don\u0027t you also write an AlarmsTestXML class, that would inherit from AlarmsTestJSON ?","commit_id":"8ab597ff6a1af04f44b0adfcc2ffd843213440ad"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"ac40be782b25e73bb80a75b52c564da348e2cb18","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.assertEqual(90, alarm_updated[\u0027threshold_rule\u0027][\u0027threshold\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # delete the alarm"},{"line_number":69,"context_line":"        resp, body \u003d self.client.delete_alarm(alarm_id)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2Ffzc%3D","line":69,"updated":"2013-11-04 13:46:57.000000000","message":"Please use:\n\nresp, _ \u003d self.client.delete_alarm(alarm_id)","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"d95744e39dd680a0eea20a0e4c509981a05744ad","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.assertEqual(90, alarm_updated[\u0027threshold_rule\u0027][\u0027threshold\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # delete the alarm"},{"line_number":69,"context_line":"        resp, body \u003d self.client.delete_alarm(alarm_id)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FQNs%3D","line":69,"in_reply_to":"AAAATn%2F%2Ffzc%3D","updated":"2013-11-12 08:46:24.000000000","message":"Done","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"ac40be782b25e73bb80a75b52c564da348e2cb18","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # delete the alarm"},{"line_number":69,"context_line":"        resp, body \u003d self.client.delete_alarm(alarm_id)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"},{"line_number":73,"context_line":"        self.assertNotIn(alarm_id, list_ids)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FfzY%3D","line":71,"updated":"2013-11-04 13:46:57.000000000","message":"and:\n\n_, body \u003d self.client.list_alarms()\n\n\nThis is more Pythonic.","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"d95744e39dd680a0eea20a0e4c509981a05744ad","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # delete the alarm"},{"line_number":69,"context_line":"        resp, body \u003d self.client.delete_alarm(alarm_id)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"},{"line_number":73,"context_line":"        self.assertNotIn(alarm_id, list_ids)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FQNk%3D","line":71,"in_reply_to":"AAAATn%2F%2FfzY%3D","updated":"2013-11-12 08:46:24.000000000","message":"Done","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"f07912a652ad7b38b6c3120704664a7d0bae5cde","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # check for alarm in list"},{"line_number":54,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":55,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"},{"line_number":56,"context_line":"        self.assertIn(alarm_id, list_ids)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # update the alarm"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FJRw%3D","line":55,"updated":"2013-11-13 20:47:55.000000000","message":"Why is list() needed? I\u0027m not a python expert but always learning.","commit_id":"4c38ff93c94b8631e48d49daedf513aaffb2cd1f"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"3fe9aec0a85f3c84fa3169c9f4361adf7cb2c88a","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # check for alarm in list"},{"line_number":54,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":55,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"},{"line_number":56,"context_line":"        self.assertIn(alarm_id, list_ids)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # update the alarm"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FJPg%3D","line":55,"in_reply_to":"AAAATn%2F%2FJRw%3D","updated":"2013-11-13 21:00:20.000000000","message":"This is already a list comprehension, so I think wrapping this with list() is redundant","commit_id":"4c38ff93c94b8631e48d49daedf513aaffb2cd1f"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"3fe9aec0a85f3c84fa3169c9f4361adf7cb2c88a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        resp, _ \u003d self.client.delete_alarm(alarm_id)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        _, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d list([alarm[\u0027alarm_id\u0027] for alarm in body])"},{"line_number":73,"context_line":"        self.assertNotIn(alarm_id, list_ids)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FJPY%3D","line":72,"updated":"2013-11-13 21:00:20.000000000","message":"Same as above. This a list comprehension, which is already returning a list, so wrapping it with list() is redundant","commit_id":"4c38ff93c94b8631e48d49daedf513aaffb2cd1f"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":34,"context_line":"    def test_alarm_list_responds(self):"},{"line_number":35,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":36,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":37,"context_line":"        self.assertIsInstance(body, list)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFrQ%3D","line":36,"updated":"2013-11-14 15:13:43.000000000","message":"I think you would need to set an assertion message for better analysis of output, if the assertion fails.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"f49f445d66c7dc1d0e70d77b98bde54263f9dbfe","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":34,"context_line":"    def test_alarm_list_responds(self):"},{"line_number":35,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":36,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":37,"context_line":"        self.assertIsInstance(body, list)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FCtQ%3D","line":36,"in_reply_to":"AAAATn%2F%2FFrQ%3D","updated":"2013-11-15 09:11:05.000000000","message":"Are you sure this is necessary? I think the generated message is pretty self explanatory, it will say something like \"resp[\u0027status\u0027] not equal to \u0027200\u0027\". I don\u0027t see any other projects using assertion messages for such simple assertions.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_alarm_list_responds(self):"},{"line_number":35,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":36,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":37,"context_line":"        self.assertIsInstance(body, list)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":40,"context_line":"    def test_alarm_crud(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFrM%3D","line":37,"updated":"2013-11-14 15:13:43.000000000","message":"Same as above. Please add assertion message.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        alarm_json \u003d self.create_alarm("},{"line_number":49,"context_line":"            alarm_name, \u0027threshold\u0027, threshold_rule\u003dthreshold_rule)"},{"line_number":50,"context_line":"        alarm_id \u003d alarm_json[\u0027alarm_id\u0027]"},{"line_number":51,"context_line":"        self.assertEqual(alarm_name, alarm_json[\u0027name\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # check for alarm in list"},{"line_number":54,"context_line":"        resp, body \u003d self.client.list_alarms()"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFrI%3D","line":51,"updated":"2013-11-14 15:13:43.000000000","message":"Please add assertion message.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # check for alarm in list"},{"line_number":54,"context_line":"        resp, body \u003d self.client.list_alarms()"},{"line_number":55,"context_line":"        list_ids \u003d [alarm[\u0027alarm_id\u0027] for alarm in body]"},{"line_number":56,"context_line":"        self.assertIn(alarm_id, list_ids)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # update the alarm"},{"line_number":59,"context_line":"        threshold_rule \u003d {"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFrA%3D","line":56,"updated":"2013-11-14 15:13:43.000000000","message":"Please add assertion message.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                              type\u003d\u0027threshold\u0027,"},{"line_number":64,"context_line":"                                              threshold_rule\u003dthreshold_rule)"},{"line_number":65,"context_line":"        alarm_updated \u003d body"},{"line_number":66,"context_line":"        self.assertEqual(90, alarm_updated[\u0027threshold_rule\u0027][\u0027threshold\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # delete the alarm"},{"line_number":69,"context_line":"        resp, _ \u003d self.client.delete_alarm(alarm_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFq4%3D","line":66,"updated":"2013-11-14 15:13:43.000000000","message":"Please add assertion message.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # delete the alarm"},{"line_number":69,"context_line":"        resp, _ \u003d self.client.delete_alarm(alarm_id)"},{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        _, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d [alarm[\u0027alarm_id\u0027] for alarm in body]"},{"line_number":73,"context_line":"        self.assertNotIn(alarm_id, list_ids)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFqw%3D","line":70,"updated":"2013-11-14 15:13:43.000000000","message":"Please add assertion message.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":71,"context_line":"        _, body \u003d self.client.list_alarms()"},{"line_number":72,"context_line":"        list_ids \u003d [alarm[\u0027alarm_id\u0027] for alarm in body]"},{"line_number":73,"context_line":"        self.assertNotIn(alarm_id, list_ids)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFqk%3D","line":73,"updated":"2013-11-14 15:13:43.000000000","message":"Please add assertion message.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"}],"tempest/api/metering/base.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8c072dc6b87e6342d8a4a9c987802c4c6c2dbcdb","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"\"\"Base test case class for all Metering API tests.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        os \u003d clients.Manager()"},{"line_number":32,"context_line":"        cls.metering_cfg \u003d os.config.metering"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FFy4%3D","line":29,"updated":"2013-08-07 11:27:59.000000000","message":"no super call?","commit_id":"6296fb0125cfc5e360dfc6beb1fa399bb7529209"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8c072dc6b87e6342d8a4a9c987802c4c6c2dbcdb","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def tearDownClass(cls):"},{"line_number":60,"context_line":"        cls.clear_alarms()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FFyw%3D","line":60,"updated":"2013-08-07 11:27:59.000000000","message":"need super call","commit_id":"6296fb0125cfc5e360dfc6beb1fa399bb7529209"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"6572f5bdfb3ef1d1bded5661f1c3d1ec8f5d0cca","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        if hasattr(super(BaseMeteringTest, cls), \u0027setUpClass\u0027):"},{"line_number":31,"context_line":"            super(BaseMeteringTest, cls).setUpClass()"},{"line_number":32,"context_line":"        os \u003d clients.Manager()"},{"line_number":33,"context_line":"        cls.metering_cfg \u003d os.config.metering"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASX%2F%2F1%2Bc%3D","line":30,"updated":"2013-08-26 13:28:02.000000000","message":"It has super.\n\nIt is only questionable in the BaseTestCase.\n\nFor example: py2.6 does not provide it.","commit_id":"8ab597ff6a1af04f44b0adfcc2ffd843213440ad"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"6572f5bdfb3ef1d1bded5661f1c3d1ec8f5d0cca","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @classmethod"},{"line_number":60,"context_line":"    def tearDownClass(cls):"},{"line_number":61,"context_line":"        if hasattr(super(BaseMeteringTest, cls), \u0027tearDownClass\u0027):"},{"line_number":62,"context_line":"            super(BaseMeteringTest, cls).tearDownClass()"},{"line_number":63,"context_line":"        cls.clear_alarms()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASX%2F%2F1%2BU%3D","line":61,"updated":"2013-08-26 13:28:02.000000000","message":"It has super.\n\nIt is only questionable in the BaseTestCase.","commit_id":"8ab597ff6a1af04f44b0adfcc2ffd843213440ad"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9948663c3a3b5497c88cc0e448bb4f9ac1c54d16","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        if hasattr(super(BaseMeteringTest, cls), \u0027setUpClass\u0027):"},{"line_number":31,"context_line":"            super(BaseMeteringTest, cls).setUpClass()"},{"line_number":32,"context_line":"        os \u003d clients.Manager()"},{"line_number":33,"context_line":"        cls.metering_cfg \u003d os.config.metering"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2F%2BMQ%3D","line":30,"updated":"2013-10-07 11:02:03.000000000","message":"I don\u0027t think checking the presence of setUpClass if necessary.","commit_id":"9d8ab2a0bec14c941e2bb4256a360c28c3616721"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9948663c3a3b5497c88cc0e448bb4f9ac1c54d16","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @classmethod"},{"line_number":57,"context_line":"    def tearDownClass(cls):"},{"line_number":58,"context_line":"        if hasattr(super(BaseMeteringTest, cls), \u0027tearDownClass\u0027):"},{"line_number":59,"context_line":"            super(BaseMeteringTest, cls).tearDownClass()"},{"line_number":60,"context_line":"        cls.clear_alarms()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2F%2BMM%3D","line":58,"updated":"2013-10-07 11:02:03.000000000","message":"Same here.","commit_id":"9d8ab2a0bec14c941e2bb4256a360c28c3616721"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"ac40be782b25e73bb80a75b52c564da348e2cb18","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def create_alarm(cls, name, type, **kwargs):"},{"line_number":42,"context_line":"        resp, body \u003d cls.client.create_alarm(name, type, **kwargs)"},{"line_number":43,"context_line":"        alarm_id \u003d body[\u0027alarm_id\u0027]"},{"line_number":44,"context_line":"        cls.alarms.append(alarm_id)"},{"line_number":45,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FfzU%3D","line":42,"updated":"2013-11-04 13:46:57.000000000","message":"If \u0027resp\u0027 is not used, it should be called \u0027_\u0027.","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"d95744e39dd680a0eea20a0e4c509981a05744ad","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def create_alarm(cls, name, type, **kwargs):"},{"line_number":42,"context_line":"        resp, body \u003d cls.client.create_alarm(name, type, **kwargs)"},{"line_number":43,"context_line":"        alarm_id \u003d body[\u0027alarm_id\u0027]"},{"line_number":44,"context_line":"        cls.alarms.append(alarm_id)"},{"line_number":45,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FQNU%3D","line":42,"in_reply_to":"AAAATn%2F%2FfzU%3D","updated":"2013-11-12 08:46:24.000000000","message":"Done","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"f07912a652ad7b38b6c3120704664a7d0bae5cde","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        super(BaseMeteringTest, cls).setUpClass()"},{"line_number":31,"context_line":"        os \u003d clients.Manager()"},{"line_number":32,"context_line":"        cls.metering_cfg \u003d os.config.metering"},{"line_number":33,"context_line":"        if not os.config.service_available.ceilometer:"},{"line_number":34,"context_line":"            raise cls.skipException(\"Ceilometer support is required\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FJSc%3D","line":31,"updated":"2013-11-13 20:47:55.000000000","message":"I think this needs to handle tenant isolation by calling cls.get_client_manager(). See BaseComputeTest.","commit_id":"4c38ff93c94b8631e48d49daedf513aaffb2cd1f"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"f07912a652ad7b38b6c3120704664a7d0bae5cde","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"},{"line_number":56,"context_line":"    def tearDownClass(cls):"},{"line_number":57,"context_line":"        super(BaseMeteringTest, cls).tearDownClass()"},{"line_number":58,"context_line":"        cls.clear_alarms()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FJSU%3D","line":57,"updated":"2013-11-13 20:47:55.000000000","message":"The tearDownClass has to be at the end.","commit_id":"4c38ff93c94b8631e48d49daedf513aaffb2cd1f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"94efc85d40618509ae5f9f5f038f73d2c411caba","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        cls.alarms \u003d []"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def create_alarm(cls, name, type, **kwargs):"},{"line_number":43,"context_line":"        _, body \u003d cls.client.create_alarm(name, type, **kwargs)"},{"line_number":44,"context_line":"        alarm_id \u003d body[\u0027alarm_id\u0027]"},{"line_number":45,"context_line":"        cls.alarms.append(alarm_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Bdug%3D","line":42,"updated":"2013-11-25 19:41:06.000000000","message":"CRUD operations on alarms seem out of place in the base metering test, should these be moved into a base class defined in alarms sub-module?","commit_id":"e5e63a9a7f6437c38a33303d66064b90471e2e23"}],"tempest/api/telemetry/alarms/base_alarms.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d7a7dfa4eb5763839f672de08272229ba8c4725b","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def create_alarm(cls, name, type, **kwargs):"},{"line_number":35,"context_line":"        _, body \u003d cls.client.create_alarm(name, type, **kwargs)"},{"line_number":36,"context_line":"        alarm_id \u003d body[\u0027alarm_id\u0027]"},{"line_number":37,"context_line":"        cls.alarms.append(alarm_id)"},{"line_number":38,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAATn%2F89DY%3D","line":35,"updated":"2013-12-18 12:43:32.000000000","message":"why don\u0027t you care about the return code?","commit_id":"5c5509f30da8142d019ffcd51d83319454cb8f44"}],"tempest/config.py":[{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"metering_group \u003d cfg.OptGroup(name\u003d\u0027metering\u0027,"},{"line_number":453,"context_line":"                                   title\u003d\u0027Metering Service Options\u0027)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"MeteringGroup \u003d ["},{"line_number":456,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFpk%3D","line":453,"updated":"2013-11-14 15:13:43.000000000","message":"Please align with \"name\"","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"f49f445d66c7dc1d0e70d77b98bde54263f9dbfe","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"metering_group \u003d cfg.OptGroup(name\u003d\u0027metering\u0027,"},{"line_number":453,"context_line":"                                   title\u003d\u0027Metering Service Options\u0027)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"MeteringGroup \u003d ["},{"line_number":456,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FCs4%3D","line":453,"in_reply_to":"AAAATn%2F%2FFpk%3D","updated":"2013-11-15 09:11:05.000000000","message":"Done","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"MeteringGroup \u003d ["},{"line_number":456,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":457,"context_line":"               default\u003d\u0027metering\u0027,"},{"line_number":458,"context_line":"               help\u003d\"Catalog type of the Metering service.\"),"},{"line_number":459,"context_line":"]"},{"line_number":460,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFpc%3D","line":457,"updated":"2013-11-14 15:13:43.000000000","message":"This should be aligned with ( \u0027 )","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"f49f445d66c7dc1d0e70d77b98bde54263f9dbfe","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"MeteringGroup \u003d ["},{"line_number":456,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":457,"context_line":"               default\u003d\u0027metering\u0027,"},{"line_number":458,"context_line":"               help\u003d\"Catalog type of the Metering service.\"),"},{"line_number":459,"context_line":"]"},{"line_number":460,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FCs0%3D","line":457,"in_reply_to":"AAAATn%2F%2FFpc%3D","updated":"2013-11-15 09:11:05.000000000","message":"Done","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"}],"tempest/services/metering/json/alarms_client.py":[{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"7f3d64401e1ee19ebeb53d202cb0cbc6a9d48922","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \u0027counter_name\u0027: counter_name,"},{"line_number":64,"context_line":"            \u0027comparison_operator\u0027: comparison_operator,"},{"line_number":65,"context_line":"            \u0027threshold\u0027: threshold,"},{"line_number":66,"context_line":"            \u0027statistic\u0027: statistic,"},{"line_number":67,"context_line":"        }"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        for option in [\u0027description\u0027, \u0027period\u0027, \u0027evaluation_periods\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FYKw%3D","line":66,"updated":"2013-08-01 05:52:14.000000000","message":"extra \u0027,\u0027 at the end","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"637c4fcc323255b431ffa955a531bbb37a741ce8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \u0027counter_name\u0027: counter_name,"},{"line_number":64,"context_line":"            \u0027comparison_operator\u0027: comparison_operator,"},{"line_number":65,"context_line":"            \u0027threshold\u0027: threshold,"},{"line_number":66,"context_line":"            \u0027statistic\u0027: statistic,"},{"line_number":67,"context_line":"        }"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        for option in [\u0027description\u0027, \u0027period\u0027, \u0027evaluation_periods\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FKJk%3D","line":66,"in_reply_to":"AAAAQn%2F%2FYKw%3D","updated":"2013-08-06 08:48:50.000000000","message":"Done","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"7f3d64401e1ee19ebeb53d202cb0cbc6a9d48922","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                       \u0027matching_metadata\u0027, \u0027user_id\u0027, \u0027project_id\u0027]:"},{"line_number":75,"context_line":"            value \u003d kwargs.get(option)"},{"line_number":76,"context_line":"            if value is not None:"},{"line_number":77,"context_line":"                post_body[option] \u003d value"},{"line_number":78,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":79,"context_line":"        resp, body \u003d self.post(\u0027v2/alarms\u0027, post_body, self.headers)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FYLE%3D","line":77,"updated":"2013-08-01 05:52:14.000000000","message":"Not sure if this check is necessary. I mean, even if the value is None, it will just append a new key with None value to the post_body. Eg:\n\npost_body \u003d {\n\u0027name\u0027: name,\n\u0027counter_name\u0027: counter_name,\n...\n...\n\u0027option\u0027: None\n}\n\nIf there is no problem with this, you can actually save some lines of code, where instead of :\n\n            value \u003d kwargs.get(option)\n            if value is not None:\n                post_body[option] \u003d value\n\nyou can just say:\n\n           post_body[option] \u003d kwargs.get(option)","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"637c4fcc323255b431ffa955a531bbb37a741ce8","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                       \u0027matching_metadata\u0027, \u0027user_id\u0027, \u0027project_id\u0027]:"},{"line_number":75,"context_line":"            value \u003d kwargs.get(option)"},{"line_number":76,"context_line":"            if value is not None:"},{"line_number":77,"context_line":"                post_body[option] \u003d value"},{"line_number":78,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":79,"context_line":"        resp, body \u003d self.post(\u0027v2/alarms\u0027, post_body, self.headers)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FKKI%3D","line":77,"in_reply_to":"AAAAQn%2F%2FYLE%3D","updated":"2013-08-06 08:48:50.000000000","message":"I don\u0027t think we should do that. We\u0027re not trying to set that option to None, we\u0027re just leaving it as it is.","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"7f3d64401e1ee19ebeb53d202cb0cbc6a9d48922","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                post_body[option] \u003d value"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":102,"context_line":"        resp, body \u003d self.put(\"v2/alarms/%s\" % str(alarm_id),"},{"line_number":103,"context_line":"                              post_body, self.headers)"},{"line_number":104,"context_line":"        body \u003d json.loads(body)"},{"line_number":105,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FYMk%3D","line":102,"updated":"2013-08-01 05:52:14.000000000","message":"I think the use of \"%s\" for string concatenation is deprecated and python 3.x is not going to support this. The modern way of doing this is:\n\nresp, body \u003d self.put(\"v2/alarms/{0}\".format(str(alarm_id)))\n\n\nhttp://docs.python.org/3.2/library/string.html#format-examples","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"637c4fcc323255b431ffa955a531bbb37a741ce8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                post_body[option] \u003d value"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        post_body \u003d json.dumps(post_body)"},{"line_number":102,"context_line":"        resp, body \u003d self.put(\"v2/alarms/%s\" % str(alarm_id),"},{"line_number":103,"context_line":"                              post_body, self.headers)"},{"line_number":104,"context_line":"        body \u003d json.loads(body)"},{"line_number":105,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FKJo%3D","line":102,"in_reply_to":"AAAAQn%2F%2FYMk%3D","updated":"2013-08-06 08:48:50.000000000","message":"Python 3.3 still supports the use of old style string formatting, it has not been removed. I think most (if not all) of the openstack codebase uses it, so I used it for consistency.","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"7f3d64401e1ee19ebeb53d202cb0cbc6a9d48922","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def get_alarm(self, alarm_id):"},{"line_number":108,"context_line":"        \"\"\"Returns the details of an existing alarm.\"\"\""},{"line_number":109,"context_line":"        resp, body \u003d self.get(\"v2/alarms/%s\" % str(alarm_id))"},{"line_number":110,"context_line":"        body \u003d json.loads(body)"},{"line_number":111,"context_line":"        return resp, body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FYMc%3D","line":109,"updated":"2013-08-01 05:52:14.000000000","message":"same as above","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"637c4fcc323255b431ffa955a531bbb37a741ce8","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def get_alarm(self, alarm_id):"},{"line_number":108,"context_line":"        \"\"\"Returns the details of an existing alarm.\"\"\""},{"line_number":109,"context_line":"        resp, body \u003d self.get(\"v2/alarms/%s\" % str(alarm_id))"},{"line_number":110,"context_line":"        body \u003d json.loads(body)"},{"line_number":111,"context_line":"        return resp, body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FKJc%3D","line":109,"in_reply_to":"AAAAQn%2F%2FYMc%3D","updated":"2013-08-06 08:48:50.000000000","message":"Done","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"7f3d64401e1ee19ebeb53d202cb0cbc6a9d48922","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def delete_alarm(self, alarm_id):"},{"line_number":114,"context_line":"        \"\"\"Deletes the given alarm.\"\"\""},{"line_number":115,"context_line":"        return self.delete(\"v2/alarms/%s\" % str(alarm_id))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def list_alarms(self):"},{"line_number":118,"context_line":"        \"\"\"Lists all alarms for a user.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FYMY%3D","line":115,"updated":"2013-08-01 05:52:14.000000000","message":"same as above","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"637c4fcc323255b431ffa955a531bbb37a741ce8","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def delete_alarm(self, alarm_id):"},{"line_number":114,"context_line":"        \"\"\"Deletes the given alarm.\"\"\""},{"line_number":115,"context_line":"        return self.delete(\"v2/alarms/%s\" % str(alarm_id))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def list_alarms(self):"},{"line_number":118,"context_line":"        \"\"\"Lists all alarms for a user.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FKJY%3D","line":115,"in_reply_to":"AAAAQn%2F%2FYMY%3D","updated":"2013-08-06 08:48:50.000000000","message":"Done","commit_id":"4c9728ef1b09be40aaa3b35bde61b43652ebc631"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"6572f5bdfb3ef1d1bded5661f1c3d1ec8f5d0cca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASX%2F%2F19Y%3D","line":3,"updated":"2013-08-26 13:28:02.000000000","message":"You MAY exclude the copy right note or you should use the correct date.","commit_id":"8ab597ff6a1af04f44b0adfcc2ffd843213440ad"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"ac40be782b25e73bb80a75b52c564da348e2cb18","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            if value is not None:"},{"line_number":72,"context_line":"                post_body[option] \u003d value"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        print post_body"},{"line_number":75,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":76,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"},{"line_number":77,"context_line":"        resp, body \u003d self.put(url, headers\u003dself.headers, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FfzQ%3D","line":74,"updated":"2013-11-04 13:46:57.000000000","message":"I think this is a left-over of some debugging :)","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"d95744e39dd680a0eea20a0e4c509981a05744ad","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            if value is not None:"},{"line_number":72,"context_line":"                post_body[option] \u003d value"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        print post_body"},{"line_number":75,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":76,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"},{"line_number":77,"context_line":"        resp, body \u003d self.put(url, headers\u003dself.headers, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FQNI%3D","line":74,"in_reply_to":"AAAATn%2F%2FfzQ%3D","updated":"2013-11-12 08:46:24.000000000","message":"Done","commit_id":"6d456735d7b9baec87c72ed8cc05cfd60acb72c5"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":59,"context_line":"        url \u003d \u0027v2/alarms\u0027"},{"line_number":60,"context_line":"        resp, body \u003d self.post(url, headers\u003dself.headers, body\u003dbody)"},{"line_number":61,"context_line":"        body \u003d json.loads(body)"},{"line_number":62,"context_line":"        return resp, body"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFpA%3D","line":60,"updated":"2013-11-14 15:13:43.000000000","message":"Do you need to append this to some base url?","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"f49f445d66c7dc1d0e70d77b98bde54263f9dbfe","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":59,"context_line":"        url \u003d \u0027v2/alarms\u0027"},{"line_number":60,"context_line":"        resp, body \u003d self.post(url, headers\u003dself.headers, body\u003dbody)"},{"line_number":61,"context_line":"        body \u003d json.loads(body)"},{"line_number":62,"context_line":"        return resp, body"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FCss%3D","line":60,"in_reply_to":"AAAATn%2F%2FFpA%3D","updated":"2013-11-15 09:11:05.000000000","message":"No, the RestClient class takes care of that.","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                post_body[option] \u003d value"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":75,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"},{"line_number":76,"context_line":"        resp, body \u003d self.put(url, headers\u003dself.headers, body\u003dbody)"},{"line_number":77,"context_line":"        body \u003d json.loads(body)"},{"line_number":78,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFo0%3D","line":75,"updated":"2013-11-14 15:13:43.000000000","message":"Do you need to append this to some base url?","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def get_alarm(self, alarm_id):"},{"line_number":81,"context_line":"        \"\"\"Returns the details of an existing alarm.\"\"\""},{"line_number":82,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"},{"line_number":83,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":84,"context_line":"        body \u003d json.loads(body)"},{"line_number":85,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFoo%3D","line":82,"updated":"2013-11-14 15:13:43.000000000","message":"Do you need to append this to some base url?","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def delete_alarm(self, alarm_id):"},{"line_number":88,"context_line":"        \"\"\"Deletes the given alarm.\"\"\""},{"line_number":89,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"},{"line_number":90,"context_line":"        return self.delete(url)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def list_alarms(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFok%3D","line":89,"updated":"2013-11-14 15:13:43.000000000","message":"Do you need to append this to some base url?","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":7365,"name":"Jaydeep","email":"jaydeep.c1@gmail.com","username":"jdc"},"change_message_id":"c543d84c9cc1bebcccbf7468c303d3c1789ba86a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def list_alarms(self):"},{"line_number":93,"context_line":"        \"\"\"Lists all alarms for a user.\"\"\""},{"line_number":94,"context_line":"        url \u003d \u0027v2/alarms\u0027"},{"line_number":95,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":96,"context_line":"        body \u003d json.loads(body)"},{"line_number":97,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FFoc%3D","line":95,"updated":"2013-11-14 15:13:43.000000000","message":"Do you need to append this to some base url?","commit_id":"4ffb4b1f1dd3b22c5f370fe272d08276d8fd99e2"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"94efc85d40618509ae5f9f5f038f73d2c411caba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Bdvk%3D","line":3,"updated":"2013-11-25 19:41:06.000000000","message":"s/2012/2013/","commit_id":"e5e63a9a7f6437c38a33303d66064b90471e2e23"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"94efc85d40618509ae5f9f5f038f73d2c411caba","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        for option in UPDATABLE_ATTRIBUTES:"},{"line_number":70,"context_line":"            value \u003d kwargs.get(option)"},{"line_number":71,"context_line":"            if value is not None:"},{"line_number":72,"context_line":"                post_body[option] \u003d value"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":75,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BdxA%3D","line":72,"updated":"2013-11-25 19:41:06.000000000","message":"Since the alarms PUT API requires that all fields are specified, even those that are not changing, wouldn\u0027t it make sense to:\n\n * do a GET first to retrieve the current state of the alarm\n * merge in the attributes being updated\n * then PUT the result\n\nThis is the approach followed by the CLI:\n\n  https://github.com/openstack/python-ceilometerclient/blob/master/ceilometerclient/v2/alarms.py#L122","commit_id":"e5e63a9a7f6437c38a33303d66064b90471e2e23"}],"tempest/services/telemetry/json/alarms_client.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"a35d2f2a425b04426f81d3abb180c088160bcd7c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        for option in UPDATABLE_ATTRIBUTES:"},{"line_number":71,"context_line":"            value \u003d kwargs.get(option)"},{"line_number":72,"context_line":"            if value is not None:"},{"line_number":73,"context_line":"                post_body[option] \u003d value"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":76,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BPu0%3D","line":73,"updated":"2013-11-28 11:22:54.000000000","message":"I\u0027m not sure this will work if only a subset of a nested dict is being changed, e.g. updating just a single attribute of the threshold_rule.\n\nBy contrast, the CLI takes nested dicts into account:\n\n  https://github.com/openstack/python-ceilometerclient/blob/master/ceilometerclient/common/utils.py#L170\n\nCan you confirm with a test that only partially updates the threshold_rule? e.g. changes just the comparison_operator","commit_id":"d6b32508c42483ef28c05e658d53a9d1088ce7bd"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"6f1df17bdd372522e690bedb27de157acd348435","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        for option in UPDATABLE_ATTRIBUTES:"},{"line_number":71,"context_line":"            value \u003d kwargs.get(option)"},{"line_number":72,"context_line":"            if value is not None:"},{"line_number":73,"context_line":"                post_body[option] \u003d value"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":76,"context_line":"        url \u003d \u0027v2/alarms/%s\u0027 % str(alarm_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BPpU%3D","line":73,"in_reply_to":"AAAATn%2F%2BPu0%3D","updated":"2013-11-28 11:49:49.000000000","message":"You are right, it does not. I will take this into account.","commit_id":"d6b32508c42483ef28c05e658d53a9d1088ce7bd"}]}
