)]}'
{"tempest/api/network/base.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"c9d36d2b48a906332519c4ad6e7662e47cafeea7","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for pool in cls.pools:"},{"line_number":101,"context_line":"            cls.client.delete_pool(pool[\u0027id\u0027])"},{"line_number":102,"context_line":"        # Clean up metering label rules"},{"line_number":103,"context_line":"        for metering_label_rule in cls.metering_label_rules:"},{"line_number":104,"context_line":"            cls.client.delete_metering_label_rule(metering_label_rule[\u0027id\u0027])"},{"line_number":105,"context_line":"        # Clean up metering labels"},{"line_number":106,"context_line":"        for metering_label in cls.metering_labels:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FiNU%3D","line":103,"updated":"2014-01-12 09:35:24.000000000","message":"cls.metering_label_rules is undefined. You need to define it in setUpClass","commit_id":"efba0da7c32fff5ccf1def997e371b312c4564b9"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"c9d36d2b48a906332519c4ad6e7662e47cafeea7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        for metering_label_rule in cls.metering_label_rules:"},{"line_number":104,"context_line":"            cls.client.delete_metering_label_rule(metering_label_rule[\u0027id\u0027])"},{"line_number":105,"context_line":"        # Clean up metering labels"},{"line_number":106,"context_line":"        for metering_label in cls.metering_labels:"},{"line_number":107,"context_line":"            cls.client.delete_metering_label(metering_label[\u0027id\u0027])"},{"line_number":108,"context_line":"        # Clean up ports"},{"line_number":109,"context_line":"        for port in cls.ports:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FiNQ%3D","line":106,"updated":"2014-01-12 09:35:24.000000000","message":"same","commit_id":"efba0da7c32fff5ccf1def997e371b312c4564b9"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"65014a417a78721aca5728214d7fc1c48962fc62","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        cls.ikepolicies.append(ikepolicy)"},{"line_number":261,"context_line":"        return ikepolicy"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def create_metering_label(cls, name, description):"},{"line_number":264,"context_line":"        \"\"\"Wrapper utility that returns a test metering label.\"\"\""},{"line_number":265,"context_line":"        resp, body \u003d cls.client.create_metering_label("},{"line_number":266,"context_line":"            name\u003ddata_utils.rand_name(\"metering-label\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FgCQ%3D","line":263,"updated":"2014-01-13 09:36:36.000000000","message":"need to make them @classmethod to work","commit_id":"c96b205afe1fd1486d205ee6d5651c0b1425ae7d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"65014a417a78721aca5728214d7fc1c48962fc62","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        cls.metering_labels.append(metering_label)"},{"line_number":270,"context_line":"        return metering_label"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def create_metering_label_rule(cls, remote_ip_prefix, direction,"},{"line_number":273,"context_line":"                                   metering_label_id):"},{"line_number":274,"context_line":"        \"\"\"Wrapper utility that returns a test metering label rule.\"\"\""},{"line_number":275,"context_line":"        resp, body \u003d cls.client.create_metering_label_rule(remote_ip_prefix,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FgCM%3D","line":272,"updated":"2014-01-13 09:36:36.000000000","message":"same","commit_id":"c96b205afe1fd1486d205ee6d5651c0b1425ae7d"}],"tempest/api/network/test_metering_extensions.py":[{"author":{"_account_id":8861,"name":"Joris Roovers","email":"jroovers@cisco.com","username":"joris.roovers"},"change_message_id":"08a627e4e2ed6d4616fe98ffedbfefad696df45b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.assertIn(metering_label[\u0027id\u0027], metering_labels)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # Verification of label delete"},{"line_number":92,"context_line":"        resp, body \u003d (self.admin_client.delete_metering_label("},{"line_number":93,"context_line":"                      metering_label[\u0027id\u0027]))"},{"line_number":94,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":95,"context_line":"        # Asserting if label is found in the list after deletion"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FE6Q%3D","line":92,"updated":"2014-01-17 17:10:48.000000000","message":"I would suggest creating a deleter method like you did for metering label rule, and then call it in an addCleanup. That way, resources still get cleaned up if the test fails half way through.","commit_id":"45c94b44e4991891524957cd424bc054baa7dc0f"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"949f163cd3a5b5d0f3ecf37d7f33c04baa80bafa","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.assertIn(metering_label[\u0027id\u0027], metering_labels)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # Verification of label delete"},{"line_number":92,"context_line":"        resp, body \u003d (self.admin_client.delete_metering_label("},{"line_number":93,"context_line":"                      metering_label[\u0027id\u0027]))"},{"line_number":94,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":95,"context_line":"        # Asserting if label is found in the list after deletion"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FEc0%3D","line":92,"in_reply_to":"AAAAUH%2F%2FE6Q%3D","updated":"2014-01-17 19:09:18.000000000","message":"Done, and also use addCleanup.","commit_id":"45c94b44e4991891524957cd424bc054baa7dc0f"},{"author":{"_account_id":8861,"name":"Joris Roovers","email":"jroovers@cisco.com","username":"joris.roovers"},"change_message_id":"08a627e4e2ed6d4616fe98ffedbfefad696df45b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"},{"line_number":133,"context_line":"                        metering_label_rule[\u0027id\u0027])"},{"line_number":134,"context_line":"        # Verification of label route delete"},{"line_number":135,"context_line":"        resp, body \u003d (self.admin_client.delete_metering_label_rule("},{"line_number":136,"context_line":"                      metering_label_rule[\u0027id\u0027]))"},{"line_number":137,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FE7Y%3D","line":135,"updated":"2014-01-17 17:10:48.000000000","message":"You delete the same rule here that you just added to addCleanup(), so the rule is going to be deleted twice (which will fail). I think you can just deleted L135-L137","commit_id":"45c94b44e4991891524957cd424bc054baa7dc0f"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"949f163cd3a5b5d0f3ecf37d7f33c04baa80bafa","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"},{"line_number":133,"context_line":"                        metering_label_rule[\u0027id\u0027])"},{"line_number":134,"context_line":"        # Verification of label route delete"},{"line_number":135,"context_line":"        resp, body \u003d (self.admin_client.delete_metering_label_rule("},{"line_number":136,"context_line":"                      metering_label_rule[\u0027id\u0027]))"},{"line_number":137,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FERI%3D","line":135,"in_reply_to":"AAAAUH%2F%2FE7Y%3D","updated":"2014-01-17 19:09:18.000000000","message":"Done","commit_id":"45c94b44e4991891524957cd424bc054baa7dc0f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b55508638d4674d82430b9a405a4b2de5a8725bd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def _delete_metering_label(self, metering_label_id):"},{"line_number":51,"context_line":"        # Deletes a label and verifies if it is deleted or not"},{"line_number":52,"context_line":"        labels_list \u003d list()"},{"line_number":53,"context_line":"        resp, all_labels \u003d self.admin_client.list_metering_labels()"},{"line_number":54,"context_line":"        for label in all_labels[\u0027metering_labels\u0027]:"},{"line_number":55,"context_line":"            labels_list.append(label[\u0027id\u0027])"},{"line_number":56,"context_line":"        if metering_label_id in labels_list:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FCJs%3D","line":53,"updated":"2014-01-18 07:53:50.000000000","message":"just thinking: list operation on neutron-server side should allow filters, e.g. you can filter results by metering_label_id and then expect 1 or 0 entries returned","commit_id":"448b3234618fcac38568619d75d88d1af361cf75"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"0c6c728c69bffff2461fdb19eaa54b9b21e2f551","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def _delete_metering_label(self, metering_label_id):"},{"line_number":51,"context_line":"        # Deletes a label and verifies if it is deleted or not"},{"line_number":52,"context_line":"        labels_list \u003d list()"},{"line_number":53,"context_line":"        resp, all_labels \u003d self.admin_client.list_metering_labels()"},{"line_number":54,"context_line":"        for label in all_labels[\u0027metering_labels\u0027]:"},{"line_number":55,"context_line":"            labels_list.append(label[\u0027id\u0027])"},{"line_number":56,"context_line":"        if metering_label_id in labels_list:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FCEc%3D","line":53,"in_reply_to":"AAAAUH%2F%2FCJs%3D","updated":"2014-01-18 07:56:56.000000000","message":"example from routers test:\n resp, list_body \u003d self.admin_client.list_ports(\n            network_id\u003dself.network_cfg.public_network_id,\n            device_id\u003drouter_id)","commit_id":"448b3234618fcac38568619d75d88d1af361cf75"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b55508638d4674d82430b9a405a4b2de5a8725bd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # Deletes a label and verifies if it is deleted or not"},{"line_number":52,"context_line":"        labels_list \u003d list()"},{"line_number":53,"context_line":"        resp, all_labels \u003d self.admin_client.list_metering_labels()"},{"line_number":54,"context_line":"        for label in all_labels[\u0027metering_labels\u0027]:"},{"line_number":55,"context_line":"            labels_list.append(label[\u0027id\u0027])"},{"line_number":56,"context_line":"        if metering_label_id in labels_list:"},{"line_number":57,"context_line":"            resp, _ \u003d (self.admin_client.delete_metering_label("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FCE4%3D","line":54,"updated":"2014-01-18 07:53:50.000000000","message":"more pythonic way of doing this:\n labels_list \u003d [label[\u0027id\u0027] for label in all_labels[\u0027metering_labels\u0027]]\nalso you would not need initialization at L52","commit_id":"448b3234618fcac38568619d75d88d1af361cf75"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b55508638d4674d82430b9a405a4b2de5a8725bd","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            # Asserting that the label is not found in list after deletion"},{"line_number":61,"context_line":"            resp, labels \u003d self.admin_client.list_metering_labels()"},{"line_number":62,"context_line":"            labels_id_list \u003d list()"},{"line_number":63,"context_line":"            for i in labels[\u0027metering_labels\u0027]:"},{"line_number":64,"context_line":"                labels_id_list.append(i[\u0027id\u0027])"},{"line_number":65,"context_line":"            self.assertNotIn(metering_label_id, labels_id_list)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FCE0%3D","line":63,"updated":"2014-01-18 07:53:50.000000000","message":"same as above","commit_id":"448b3234618fcac38568619d75d88d1af361cf75"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b55508638d4674d82430b9a405a4b2de5a8725bd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def _delete_metering_label_rule(self, metering_label_rule_id):"},{"line_number":68,"context_line":"        # Deletes a label rule and verifies if it is deleted or not"},{"line_number":69,"context_line":"        rules_list \u003d list()"},{"line_number":70,"context_line":"        resp, all_rules \u003d self.admin_client.list_metering_label_rules()"},{"line_number":71,"context_line":"        for rule in all_rules[\u0027metering_label_rules\u0027]:"},{"line_number":72,"context_line":"            rules_list.append(rule[\u0027id\u0027])"},{"line_number":73,"context_line":"        if metering_label_rule_id in rules_list:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FCEw%3D","line":70,"updated":"2014-01-18 07:53:50.000000000","message":"same on filters","commit_id":"448b3234618fcac38568619d75d88d1af361cf75"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b55508638d4674d82430b9a405a4b2de5a8725bd","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            # Asserting that the label rule is not found in list after deletion"},{"line_number":78,"context_line":"            resp, label_rules \u003d self.admin_client.list_metering_label_rules()"},{"line_number":79,"context_line":"            rules_id_list \u003d list()"},{"line_number":80,"context_line":"            for i in label_rules[\u0027metering_label_rules\u0027]:"},{"line_number":81,"context_line":"                rules_id_list.append(i[\u0027id\u0027])"},{"line_number":82,"context_line":"            self.assertNotIn(metering_label_rule_id, rules_id_list)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FCEs%3D","line":80,"updated":"2014-01-18 07:53:50.000000000","message":"same on list comprehension","commit_id":"448b3234618fcac38568619d75d88d1af361cf75"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"679e5c8d929a76f590d2f2c1eb3982bb92290b24","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        metering_label \u003d body[\u0027metering_label\u0027]"},{"line_number":86,"context_line":"        # Assert if created labels are not found in labels list"},{"line_number":87,"context_line":"        resp, labels \u003d (self.admin_client.list_metering_labels("},{"line_number":88,"context_line":"                        metering_label[\u0027id\u0027]))"},{"line_number":89,"context_line":"        self.assertEqual(len(labels[\u0027metering_label]), 1)\u0027]))"},{"line_number":90,"context_line":"        # Deletes a label rule"},{"line_number":91,"context_line":"        self.addCleanup(self._delete_metering_label,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8mM%3D","line":88,"updated":"2014-01-20 14:33:38.000000000","message":"id\u003dmetering_label[\u0027id\u0027]","commit_id":"b4614c41edcbd9fbbbedf01d7f7e39a6002956b9"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"8e0f96251a3e6765dce47d7162b97cab4d51094b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        metering_label \u003d body[\u0027metering_label\u0027]"},{"line_number":86,"context_line":"        # Assert if created labels are not found in labels list"},{"line_number":87,"context_line":"        resp, labels \u003d (self.admin_client.list_metering_labels("},{"line_number":88,"context_line":"                        metering_label[\u0027id\u0027]))"},{"line_number":89,"context_line":"        self.assertEqual(len(labels[\u0027metering_label]), 1)\u0027]))"},{"line_number":90,"context_line":"        # Deletes a label rule"},{"line_number":91,"context_line":"        self.addCleanup(self._delete_metering_label,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8PQ%3D","line":88,"in_reply_to":"AAAAUH%2F%2B8mM%3D","updated":"2014-01-20 15:24:40.000000000","message":"Done","commit_id":"b4614c41edcbd9fbbbedf01d7f7e39a6002956b9"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"679e5c8d929a76f590d2f2c1eb3982bb92290b24","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        metering_label_rule \u003d body[\u0027metering_label_rule\u0027]"},{"line_number":125,"context_line":"        # Assert if created rules are not found in rules list"},{"line_number":126,"context_line":"        resp, rules \u003d (self.admin_client.list_metering_label_rules("},{"line_number":127,"context_line":"                       metering_label_rule[\u0027id\u0027]))"},{"line_number":128,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rule]), 1)\u0027]))"},{"line_number":129,"context_line":"        # Deletes a label rule"},{"line_number":130,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8l8%3D","line":127,"updated":"2014-01-20 14:33:38.000000000","message":"same","commit_id":"b4614c41edcbd9fbbbedf01d7f7e39a6002956b9"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"8e0f96251a3e6765dce47d7162b97cab4d51094b","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        metering_label_rule \u003d body[\u0027metering_label_rule\u0027]"},{"line_number":125,"context_line":"        # Assert if created rules are not found in rules list"},{"line_number":126,"context_line":"        resp, rules \u003d (self.admin_client.list_metering_label_rules("},{"line_number":127,"context_line":"                       metering_label_rule[\u0027id\u0027]))"},{"line_number":128,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rule]), 1)\u0027]))"},{"line_number":129,"context_line":"        # Deletes a label rule"},{"line_number":130,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B8O8%3D","line":127,"in_reply_to":"AAAAUH%2F%2B8l8%3D","updated":"2014-01-20 15:24:40.000000000","message":"Done","commit_id":"b4614c41edcbd9fbbbedf01d7f7e39a6002956b9"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"c225112617f1d7e77f948f5e4a2122b09888da4a","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 (C) 2014 eNovance SAS \u003clicensing@enovance.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F%2BxtQ%3D","line":1,"updated":"2014-01-22 09:01:32.000000000","message":"Please remove this line at a new file.\nI have cleaned up these things.\nhttps://review.openstack.org/#/c/66507/","commit_id":"b1dc3d8e4132ac12def2f58bed8e746bdbd587f9"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"020afc4f044dddf47942fb84700647432f2e7db2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                        id\u003dmetering_label[\u0027id\u0027]))"},{"line_number":87,"context_line":"        self.assertEqual(len(labels[\u0027metering_labels\u0027]), 1)"},{"line_number":88,"context_line":"        # Deletes a label rule"},{"line_number":89,"context_line":"        self.addCleanup(self._delete_metering_label,"},{"line_number":90,"context_line":"                        metering_label[\u0027id\u0027])"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2Bevc%3D","line":89,"updated":"2014-01-25 07:22:04.000000000","message":"Using addCleanup at the end of the test method does not makes sense.\nThe addCleanup \u0027s goal is to delete resource if the test case fails.\nSo the addCleanUp has to be as close to the creation as possible.","commit_id":"2be2f5028ec7c88bb6622c0db63669d20fa42816"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"58a83a0ff03830d51aec50ecb4c4fdebff086dab","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                        id\u003dmetering_label[\u0027id\u0027]))"},{"line_number":87,"context_line":"        self.assertEqual(len(labels[\u0027metering_labels\u0027]), 1)"},{"line_number":88,"context_line":"        # Deletes a label rule"},{"line_number":89,"context_line":"        self.addCleanup(self._delete_metering_label,"},{"line_number":90,"context_line":"                        metering_label[\u0027id\u0027])"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2Beto%3D","line":89,"in_reply_to":"AAAAUH%2F%2Bevc%3D","updated":"2014-01-25 07:40:17.000000000","message":"makes sense!","commit_id":"2be2f5028ec7c88bb6622c0db63669d20fa42816"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"020afc4f044dddf47942fb84700647432f2e7db2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                       id\u003dmetering_label_rule[\u0027id\u0027]))"},{"line_number":126,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rules\u0027]), 1)"},{"line_number":127,"context_line":"        # Deletes a label rule"},{"line_number":128,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"},{"line_number":129,"context_line":"                        metering_label_rule[\u0027id\u0027])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2BevU%3D","line":128,"updated":"2014-01-25 07:22:04.000000000","message":"dito","commit_id":"2be2f5028ec7c88bb6622c0db63669d20fa42816"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"611293bf88c0f50845b93c1d0637ab574976c6bc","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        direction \u003d \"ingress\""},{"line_number":44,"context_line":"        cls.metering_label_rule \u003d cls.create_metering_label_rule("},{"line_number":45,"context_line":"            remote_ip_prefix, direction,"},{"line_number":46,"context_line":"            metering_label_id\u003dcls.metering_label[\u0027id\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _delete_metering_label(self, metering_label_id):"},{"line_number":49,"context_line":"        # Deletes a label and verifies if it is deleted or not"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BbXI%3D","line":46,"updated":"2014-01-26 23:38:36.000000000","message":"I know this behaviour is common to pretty much all tests, so ignore this comment, but the above amounts to an un-testable create operation.","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"611293bf88c0f50845b93c1d0637ab574976c6bc","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rules\u0027]), 0)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":68,"context_line":"    def test_list_metering_labels(self):"},{"line_number":69,"context_line":"        # Verify label filtering"},{"line_number":70,"context_line":"        resp, body \u003d self.admin_client.list_metering_labels(id\u003d33)"},{"line_number":71,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BbW8%3D","line":68,"updated":"2014-01-26 23:38:36.000000000","message":"consider renaming to test_list_metering_labels_with_filters","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"7b45a26f5ed02801b348dc031dda823d05cc2100","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rules\u0027]), 0)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":68,"context_line":"    def test_list_metering_labels(self):"},{"line_number":69,"context_line":"        # Verify label filtering"},{"line_number":70,"context_line":"        resp, body \u003d self.admin_client.list_metering_labels(id\u003d33)"},{"line_number":71,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BaCo%3D","line":68,"in_reply_to":"AAAAUH%2F%2BbW8%3D","updated":"2014-01-27 10:49:30.000000000","message":"Done","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"611293bf88c0f50845b93c1d0637ab574976c6bc","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        metering_label_rule \u003d body[\u0027metering_label_rule\u0027]"},{"line_number":122,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"},{"line_number":123,"context_line":"                        metering_label_rule[\u0027id\u0027])"},{"line_number":124,"context_line":"        # Assert if created rules are not found in rules list"},{"line_number":125,"context_line":"        resp, rules \u003d (self.admin_client.list_metering_label_rules("},{"line_number":126,"context_line":"                       id\u003dmetering_label_rule[\u0027id\u0027]))"},{"line_number":127,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rules\u0027]), 1)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BbWo%3D","line":124,"updated":"2014-01-26 23:38:36.000000000","message":"Idk if the semantics of the comments are correct\nI would say\nassert whether created rules are found in rules list\nor\nfail if created rules are not found in rules list","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"7b45a26f5ed02801b348dc031dda823d05cc2100","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        metering_label_rule \u003d body[\u0027metering_label_rule\u0027]"},{"line_number":122,"context_line":"        self.addCleanup(self._delete_metering_label_rule,"},{"line_number":123,"context_line":"                        metering_label_rule[\u0027id\u0027])"},{"line_number":124,"context_line":"        # Assert if created rules are not found in rules list"},{"line_number":125,"context_line":"        resp, rules \u003d (self.admin_client.list_metering_label_rules("},{"line_number":126,"context_line":"                       id\u003dmetering_label_rule[\u0027id\u0027]))"},{"line_number":127,"context_line":"        self.assertEqual(len(rules[\u0027metering_label_rules\u0027]), 1)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BZlU%3D","line":124,"in_reply_to":"AAAAUH%2F%2BbWo%3D","updated":"2014-01-27 10:49:30.000000000","message":"Done","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a959321e111779f96ed0b36beb5fd338158d7070","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.assertEqual(self.metering_label_rule[\u0027direction\u0027],"},{"line_number":141,"context_line":"                         metering_label_rule[\u0027direction\u0027])"},{"line_number":142,"context_line":"        self.assertEqual(self.metering_label_rule[\u0027metering_label_id\u0027],"},{"line_number":143,"context_line":"                         metering_label_rule[\u0027metering_label_id\u0027])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class MeteringXML(MeteringJSON):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BbtQ%3D","line":143,"updated":"2014-01-26 18:45:48.000000000","message":"I suggest to test all the attributes for metering label rules. You are very close to it. Just add the following additional assertion:\n\nself.assertFalse(metering_label_rule[\u0027excluded\u0027])","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"7b45a26f5ed02801b348dc031dda823d05cc2100","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.assertEqual(self.metering_label_rule[\u0027direction\u0027],"},{"line_number":141,"context_line":"                         metering_label_rule[\u0027direction\u0027])"},{"line_number":142,"context_line":"        self.assertEqual(self.metering_label_rule[\u0027metering_label_id\u0027],"},{"line_number":143,"context_line":"                         metering_label_rule[\u0027metering_label_id\u0027])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class MeteringXML(MeteringJSON):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BZjs%3D","line":143,"in_reply_to":"AAAAUH%2F%2BbtQ%3D","updated":"2014-01-27 10:49:30.000000000","message":"Done","commit_id":"753664d143224d0e108e3ab524525a46498f7d89"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"dfa04c61b4cf84e15f749732507836736b28a534","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        cls.metering_label \u003d cls.create_metering_label(name, description)"},{"line_number":42,"context_line":"        remote_ip_prefix \u003d \"10.0.0.0/24\""},{"line_number":43,"context_line":"        direction \u003d \"ingress\""},{"line_number":44,"context_line":"        cls.metering_label_rule \u003d cls.create_metering_label_rule("},{"line_number":45,"context_line":"            remote_ip_prefix, direction,"},{"line_number":46,"context_line":"            metering_label_id\u003dcls.metering_label[\u0027id\u0027])"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BDe8%3D","line":44,"updated":"2014-01-30 16:21:54.000000000","message":"I think we should sorround here with try-except because if an exception will occur here, tearDownClass() will not be called. So the created metering label will not be deleted.","commit_id":"cb1c3c6f179719ae2316f9e4c7353c897445a48c"}],"tempest/services/network/network_client_base.py":[{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"cbd5694c5f1db09ec9b87d8b12cc9df4fcf13fb0","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \u0027vpnservices\u0027: \u0027vpn\u0027,"},{"line_number":28,"context_line":"    \u0027ikepolicies\u0027: \u0027vpn\u0027,"},{"line_number":29,"context_line":"    \u0027metering-labels\u0027: \u0027metering\u0027,"},{"line_number":30,"context_line":"    \u0027metering-label-rules\u0027: \u0027metering\u0027"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# The following list represents resource names that do not require"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfnU%3D","line":30,"updated":"2014-01-13 10:48:53.000000000","message":"You should use metering_labels instead of metering-labels, same thing for metering-label-rules","commit_id":"d678f25f3158517e3c6af7ecca8763af3ecb4c77"}]}
