)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"fd186d06d8d92207d2c27c9a6ebd5fcb14d4ccdf","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia736577ff30eee1c611a59f9dd7b382102be2098"},{"line_number":14,"context_line":"Partial-Bug: #1599488"},{"line_number":15,"context_line":"Depends-On: \u003cIef2a6a4d2d7085e2a9dcd901123bc4fe6ac7ca22\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a430d35_9be860e4","line":15,"updated":"2017-02-07 01:10:38.000000000","message":"Just a heads up the zuul probably won\u0027t like the \u003c\u003e surrounding the change id for the Depends-On","commit_id":"2d025d65700283595fa744902fa329f3980d875c"}],"tempest/api/network/admin/test_quotas.py":[{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"93a40f367427cf3f9a7f9ca0f4d13e4690027f8b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.api.network import base"},{"line_number":17,"context_line":"from tempest.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":19,"context_line":"from tempest.lib import decorators"},{"line_number":20,"context_line":"from tempest import test"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_c4e192d2","side":"PARENT","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":34},"updated":"2017-02-10 00:11:29.000000000","message":"this is the correct module to use idempotent_id","commit_id":"7c43b980c038ca2815db8a23728ff180d8c899e0"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"93a40f367427cf3f9a7f9ca0f4d13e4690027f8b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.assertEqual(new_quotas[key][\u0027used\u0027],"},{"line_number":107,"context_line":"                             detail_quota[key][\u0027used\u0027])"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    @test.idempotent_id(\u00272390f766-836d-40ef-9aeb-e810d78207fb\u0027)"},{"line_number":110,"context_line":"    def test_quotas(self):"},{"line_number":111,"context_line":"        new_quotas \u003d {\u0027network\u0027: 0, \u0027port\u0027: 0}"},{"line_number":112,"context_line":"        self._check_quotas(new_quotas)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_e4e696e7","line":109,"range":{"start_line":109,"start_character":5,"end_line":109,"end_character":10},"updated":"2017-02-10 00:11:29.000000000","message":"return decorators","commit_id":"15bcc3b1cb4b6b2d6bde84fc08a28406daab4876"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"93a40f367427cf3f9a7f9ca0f4d13e4690027f8b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self._check_quotas(new_quotas)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @test.idempotent_id(\u00278d21aaca-4364-4eb9-8b79-44b4fff6373b\u0027)"},{"line_number":115,"context_line":"    def test_detail_quotas(self):"},{"line_number":116,"context_line":"        new_quota_set \u003d {\u0027network\u0027: {\u0027used\u0027: 0, \u0027limit\u0027: 2, \u0027reserved\u0027: 0},"},{"line_number":117,"context_line":"                         \u0027port\u0027: {\u0027used\u0027: 0, \u0027limit\u0027: 2, \u0027reserved\u0027: 0}}"},{"line_number":118,"context_line":"        self._check_detail_quotas(new_quota_set)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_a403be75","line":115,"range":{"start_line":115,"start_character":8,"end_line":115,"end_character":26},"updated":"2017-02-10 00:11:29.000000000","message":"should we add test_details_quotas into existing test case: test_quotas (LN109) instead of adding a new one (for reusability of test resources created)? - Need confirmation from somebody else.","commit_id":"15bcc3b1cb4b6b2d6bde84fc08a28406daab4876"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7a6c90f36f3e55ca2e943a92685254ca08b817ab","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d \"detail quotas extension not enabled.\""},{"line_number":105,"context_line":"            raise cls.skipException(msg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _modify_quota_set(self, quota):"},{"line_number":108,"context_line":"        # check if quota is in"},{"line_number":109,"context_line":"        # {\u0027network\u0027: 0, \u0027port\u0027: 0} form"},{"line_number":110,"context_line":"        if 0 not in quota.items()[0]:"},{"line_number":111,"context_line":"            quota_set \u003d {}"},{"line_number":112,"context_line":"            for k, v in quota.items():"},{"line_number":113,"context_line":"                quota_set.update({k: quota[k][\u0027limit\u0027]})"},{"line_number":114,"context_line":"            return quota_set"},{"line_number":115,"context_line":"        else:"},{"line_number":116,"context_line":"            return quota"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _check_detail_quotas(self, new_quotas):"},{"line_number":119,"context_line":"        # Add a project to conduct the test"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_cd723dad","line":116,"range":{"start_line":107,"start_character":0,"end_line":116,"end_character":24},"updated":"2017-02-21 23:09:46.000000000","message":"As discussed this is not needed since detail resource statistics for quota  include  \u0027used\u0027 , \u0027limit\u0027 and  \u0027reserved","commit_id":"e9d8cdf281850344c6606b7c9936883e63a65633"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7a6c90f36f3e55ca2e943a92685254ca08b817ab","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            project_id, **new_quota)[\u0027quota\u0027]"},{"line_number":130,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":131,"context_line":"                        self.admin_quotas_client.reset_quotas, project_id)"},{"line_number":132,"context_line":"        for key in new_quotas.keys():"},{"line_number":133,"context_line":"            self.assertEqual(new_quotas[key][\u0027limit\u0027], detail_quota[key])"},{"line_number":134,"context_line":"        # Confirm from extended API quotas were changed as"},{"line_number":135,"context_line":"        # requested for project"},{"line_number":136,"context_line":"        detail_quota \u003d self.admin_quotas_client.show_quotas(project_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_6dbb11e6","line":133,"range":{"start_line":132,"start_character":0,"end_line":133,"end_character":73},"updated":"2017-02-21 23:09:46.000000000","message":"this is not needed since the same is being done at line @140","commit_id":"e9d8cdf281850344c6606b7c9936883e63a65633"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7a6c90f36f3e55ca2e943a92685254ca08b817ab","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @decorators.idempotent_id(\u00278d21aaca-4364-4eb9-8b79-44b4fff6373b\u0027)"},{"line_number":148,"context_line":"    def test_detail_quotas(self):"},{"line_number":149,"context_line":"        new_quota_set \u003d {\u0027network\u0027: {\u0027used\u0027: 0, \u0027limit\u0027: 2, \u0027reserved\u0027: 0},"},{"line_number":150,"context_line":"                         \u0027port\u0027: {\u0027used\u0027: 0, \u0027limit\u0027: 2, \u0027reserved\u0027: 0}}"},{"line_number":151,"context_line":"        self._check_detail_quotas(new_quota_set)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_4d5f2d0e","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":21},"updated":"2017-02-21 23:09:46.000000000","message":"how about using new_quotas?  new_quota_set looks like a misnomer","commit_id":"e9d8cdf281850344c6606b7c9936883e63a65633"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"51795cb414336bc9f2262cb561d53d6092a9fb6e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._check_quotas(new_quotas)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class DetailQuotasTest(base.BaseAdminNetworkTest):"},{"line_number":89,"context_line":"    \"\"\"Tests the following operations in the Neutron API:"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        show detail quotas for a specified project"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_0ed6824e","line":88,"updated":"2017-03-13 11:57:48.000000000","message":"Why do you need to introduce a new test class ?","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"d21ddb7c715e1c6dd114a5a66c2acfbda0f9a1c5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._check_quotas(new_quotas)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class DetailQuotasTest(base.BaseAdminNetworkTest):"},{"line_number":89,"context_line":"    \"\"\"Tests the following operations in the Neutron API:"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        show detail quotas for a specified project"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a25e98e_e30be57b","line":88,"in_reply_to":"9a30ddce_0ed6824e","updated":"2017-03-13 22:10:49.000000000","message":"will change test structure and use one class.","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"51795cb414336bc9f2262cb561d53d6092a9fb6e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def skip_checks(cls):"},{"line_number":102,"context_line":"        super(DetailQuotasTest, cls).skip_checks()"},{"line_number":103,"context_line":"        if not test.is_extension_enabled(\u0027quota_detail\u0027, \u0027network\u0027):"},{"line_number":104,"context_line":"            msg \u003d \"detail quotas extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_2e57c6ca","line":101,"updated":"2017-03-13 11:57:48.000000000","message":"Just decorate your test with @testtools.skipUnless(test.is_extension_enabled(...)","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"d21ddb7c715e1c6dd114a5a66c2acfbda0f9a1c5","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def skip_checks(cls):"},{"line_number":102,"context_line":"        super(DetailQuotasTest, cls).skip_checks()"},{"line_number":103,"context_line":"        if not test.is_extension_enabled(\u0027quota_detail\u0027, \u0027network\u0027):"},{"line_number":104,"context_line":"            msg \u003d \"detail quotas extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a25e98e_0311e1ac","line":101,"in_reply_to":"9a30ddce_2e57c6ca","updated":"2017-03-13 22:10:49.000000000","message":"done","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"51795cb414336bc9f2262cb561d53d6092a9fb6e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d \"detail quotas extension not enabled.\""},{"line_number":105,"context_line":"            raise cls.skipException(msg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _check_detail_quotas(self, new_quotas):"},{"line_number":108,"context_line":"        # Add a project to conduct the test"},{"line_number":109,"context_line":"        project \u003d data_utils.rand_name(\u0027test_project_\u0027)"},{"line_number":110,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_0e0be2d6","line":107,"updated":"2017-03-13 11:57:48.000000000","message":"Given that this method is not reused and probably never will be, please inline the contact of this method in your test case.","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"d21ddb7c715e1c6dd114a5a66c2acfbda0f9a1c5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d \"detail quotas extension not enabled.\""},{"line_number":105,"context_line":"            raise cls.skipException(msg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _check_detail_quotas(self, new_quotas):"},{"line_number":108,"context_line":"        # Add a project to conduct the test"},{"line_number":109,"context_line":"        project \u003d data_utils.rand_name(\u0027test_project_\u0027)"},{"line_number":110,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a25e98e_23541d53","line":107,"in_reply_to":"9a30ddce_0e0be2d6","updated":"2017-03-13 22:10:49.000000000","message":"Following the existing test structure, afaik the contents of this method should remain outside of test case.","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"49fa6798021041ceefc5d26cecd1330eac960019","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        for q in non_default_quotas[\u0027quotas\u0027]:"},{"line_number":75,"context_line":"            self.assertNotEqual(project_id, q[\u0027tenant_id\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _check_detail_quotas(self, new_quotas):"},{"line_number":78,"context_line":"        # Add a project to conduct the test"},{"line_number":79,"context_line":"        project \u003d data_utils.rand_name(\u0027test_project_\u0027)"},{"line_number":80,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a22e58a_5abe6100","line":77,"updated":"2017-03-14 09:07:31.000000000","message":"Given that this method is not reused and probably never will be, please inline the content of this method in your test case. (regardless of the rest of the class, this is not reused and doesn\u0027t help the understanding of the test case)","commit_id":"0b3a993a02e040df9bfdbc9f8f79acda9beb895e"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"e8ca57e70cda930ccbd8bb7909534cecd6e85e73","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        for q in non_default_quotas[\u0027quotas\u0027]:"},{"line_number":75,"context_line":"            self.assertNotEqual(project_id, q[\u0027tenant_id\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _check_detail_quotas(self, new_quotas):"},{"line_number":78,"context_line":"        # Add a project to conduct the test"},{"line_number":79,"context_line":"        project \u003d data_utils.rand_name(\u0027test_project_\u0027)"},{"line_number":80,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_646c5f9d","line":77,"in_reply_to":"5a22e58a_5abe6100","updated":"2017-03-14 17:30:24.000000000","message":"Done","commit_id":"0b3a993a02e040df9bfdbc9f8f79acda9beb895e"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"e89a4595242586070e7e0cc0cbfe17b79e819ea5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import testtools"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.network import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":21,"context_line":"from tempest.lib import decorators"},{"line_number":22,"context_line":"from tempest import test"}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_3cb9782d","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":43},"updated":"2017-04-08 06:53:05.000000000","message":"Hi, please use the stable version of data_utils from tempest.lib (tempest.lib.common.utils.data_utils) rather than the tempest internal version from tempest.common.","commit_id":"169a22e81dac17662b94568ca48691e0f2a2f08b"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"03f39335309774235e7d5e3b3054064a202fcb3a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import testtools"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.network import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":21,"context_line":"from tempest.lib import decorators"},{"line_number":22,"context_line":"from tempest import test"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ff52f3f_c247c4bc","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":43},"in_reply_to":"bff0334d_3cb9782d","updated":"2017-04-12 22:44:08.000000000","message":"Done","commit_id":"169a22e81dac17662b94568ca48691e0f2a2f08b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"372912d0ed515a319ee2d230c1b80f0b5945c5a0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self._check_quotas(new_quotas)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @decorators.idempotent_id(\u00278d21aaca-4364-4eb9-8b79-44b4fff6373b\u0027)"},{"line_number":86,"context_line":"    @testtools.skipUnless(test.is_extension_enabled(\u0027quota_detail\u0027, \u0027network\u0027),"},{"line_number":87,"context_line":"                          \u0027detail quotas extension not enabled.\u0027)"},{"line_number":88,"context_line":"    def test_detail_quotas(self):"},{"line_number":89,"context_line":"        new_quotas \u003d {\u0027network\u0027: {\u0027used\u0027: 1, \u0027limit\u0027: 2, \u0027reserved\u0027: 0},"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_55d8ebef","line":86,"updated":"2017-03-14 18:55:20.000000000","message":"According to https://raw.githubusercontent.com/openstack/neutron/master/neutron/tests/contrib/hooks/api_all_extensions I don\u0027t see quota_detail listed as an extension. Could you provide some links to Neutron code or Neutron documentation that explains this quota_detail extension please .","commit_id":"169a22e81dac17662b94568ca48691e0f2a2f08b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6a3ad67e8e2f3c7ff569a81bb0d492ea72d309b3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self._check_quotas(new_quotas)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @decorators.idempotent_id(\u00278d21aaca-4364-4eb9-8b79-44b4fff6373b\u0027)"},{"line_number":86,"context_line":"    @testtools.skipUnless(test.is_extension_enabled(\u0027quota_detail\u0027, \u0027network\u0027),"},{"line_number":87,"context_line":"                          \u0027detail quotas extension not enabled.\u0027)"},{"line_number":88,"context_line":"    def test_detail_quotas(self):"},{"line_number":89,"context_line":"        new_quotas \u003d {\u0027network\u0027: {\u0027used\u0027: 1, \u0027limit\u0027: 2, \u0027reserved\u0027: 0},"}],"source_content_type":"text/x-python","patch_set":12,"id":"ffe62b97_591527e4","line":86,"in_reply_to":"3a1ff146_55d8ebef","updated":"2017-03-29 04:20:45.000000000","message":"I believe the code you\u0027re looking for is here: https://review.openstack.org/#/c/383673/ \n\n(In other words, the Depends-On change-id in the commit message.)","commit_id":"169a22e81dac17662b94568ca48691e0f2a2f08b"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"a18bd7dd4cc521e1fdfc86ad314f6567e050e4fd","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                      \u0027port\u0027: {\u0027used\u0027: 1, \u0027limit\u0027: 2, \u0027reserved\u0027: 0}}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # Add a project to conduct the test"},{"line_number":93,"context_line":"        project \u003d data_utils.rand_name(\u0027test_project_\u0027)"},{"line_number":94,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":95,"context_line":"        project \u003d self.identity_utils.create_project(name\u003dproject,"},{"line_number":96,"context_line":"                                                     description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ff52f3f_d3e314a4","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":15},"updated":"2017-04-13 01:35:00.000000000","message":"name","commit_id":"7c625488af175255091cab003552ead943cab2e3"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"863015ef6f0509d2bbda6643609ab17cb9e82eda","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                      \u0027port\u0027: {\u0027used\u0027: 1, \u0027limit\u0027: 2, \u0027reserved\u0027: 0}}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        # Add a project to conduct the test"},{"line_number":93,"context_line":"        project \u003d data_utils.rand_name(\u0027test_project_\u0027)"},{"line_number":94,"context_line":"        description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":95,"context_line":"        project \u003d self.identity_utils.create_project(name\u003dproject,"},{"line_number":96,"context_line":"                                                     description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_67df2b3a","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":15},"in_reply_to":"9ff52f3f_d3e314a4","updated":"2017-04-21 00:11:34.000000000","message":"Can you please explain further","commit_id":"7c625488af175255091cab003552ead943cab2e3"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"a18bd7dd4cc521e1fdfc86ad314f6567e050e4fd","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                     new_quotas[\u0027port\u0027][\u0027limit\u0027]}"},{"line_number":103,"context_line":"        detail_quota \u003d self.admin_quotas_client.update_quotas("},{"line_number":104,"context_line":"            project_id, **new_quota)[\u0027quota\u0027]"},{"line_number":105,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":106,"context_line":"                        self.admin_quotas_client.reset_quotas, project_id)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        # Create test resources network and port"},{"line_number":109,"context_line":"        tenant_id \u003d {\u0027tenant_id\u0027: project_id}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ff52f3f_33600033","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":74},"updated":"2017-04-13 01:35:00.000000000","message":"this seems not needed, because project_id is a project created in the testcase","commit_id":"7c625488af175255091cab003552ead943cab2e3"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"863015ef6f0509d2bbda6643609ab17cb9e82eda","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                     new_quotas[\u0027port\u0027][\u0027limit\u0027]}"},{"line_number":103,"context_line":"        detail_quota \u003d self.admin_quotas_client.update_quotas("},{"line_number":104,"context_line":"            project_id, **new_quota)[\u0027quota\u0027]"},{"line_number":105,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":106,"context_line":"                        self.admin_quotas_client.reset_quotas, project_id)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        # Create test resources network and port"},{"line_number":109,"context_line":"        tenant_id \u003d {\u0027tenant_id\u0027: project_id}"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_c7d4bf22","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":74},"in_reply_to":"9ff52f3f_33600033","updated":"2017-04-21 00:11:34.000000000","message":"Cleanup after changing/updating quotas for the project.","commit_id":"7c625488af175255091cab003552ead943cab2e3"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"a18bd7dd4cc521e1fdfc86ad314f6567e050e4fd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                                            detail\u003dTrue)"},{"line_number":123,"context_line":"        detail_quota \u003d detail_quota[\u0027quota\u0027]"},{"line_number":124,"context_line":"        for key in new_quotas.keys():"},{"line_number":125,"context_line":"            self.assertEqual(new_quotas[key][\u0027limit\u0027],"},{"line_number":126,"context_line":"                             detail_quota[key][\u0027limit\u0027])"},{"line_number":127,"context_line":"            self.assertEqual(new_quotas[key][\u0027reserved\u0027],"},{"line_number":128,"context_line":"                             detail_quota[key][\u0027reserved\u0027])"},{"line_number":129,"context_line":"            self.assertEqual(new_quotas[key][\u0027used\u0027],"},{"line_number":130,"context_line":"                             detail_quota[key][\u0027used\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ff52f3f_53e9447e","line":130,"range":{"start_line":125,"start_character":0,"end_line":130,"end_character":55},"updated":"2017-04-13 01:35:00.000000000","message":"for field in [\u0027limit\u0027, \u0027reserved\u0027, \u0027used\u0027]:\n                self.assertEqual(new_quotas[key][field], \n                                 detail_quota[key][field])","commit_id":"7c625488af175255091cab003552ead943cab2e3"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"863015ef6f0509d2bbda6643609ab17cb9e82eda","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                                            detail\u003dTrue)"},{"line_number":123,"context_line":"        detail_quota \u003d detail_quota[\u0027quota\u0027]"},{"line_number":124,"context_line":"        for key in new_quotas.keys():"},{"line_number":125,"context_line":"            self.assertEqual(new_quotas[key][\u0027limit\u0027],"},{"line_number":126,"context_line":"                             detail_quota[key][\u0027limit\u0027])"},{"line_number":127,"context_line":"            self.assertEqual(new_quotas[key][\u0027reserved\u0027],"},{"line_number":128,"context_line":"                             detail_quota[key][\u0027reserved\u0027])"},{"line_number":129,"context_line":"            self.assertEqual(new_quotas[key][\u0027used\u0027],"},{"line_number":130,"context_line":"                             detail_quota[key][\u0027used\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_87a8f78b","line":130,"range":{"start_line":125,"start_character":0,"end_line":130,"end_character":55},"in_reply_to":"9ff52f3f_53e9447e","updated":"2017-04-21 00:11:34.000000000","message":"I believe the earlier way is straight forward. What do you think?","commit_id":"7c625488af175255091cab003552ead943cab2e3"}],"tempest/lib/services/network/quotas_client.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"32b072c8cf832c7a5122bc4aef2f463d0e266851","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        uri \u003d \u0027/quotas/%s\u0027 % tenant_id"},{"line_number":23,"context_line":"        return self.update_resource(uri, put_body)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def update_detail_quotas(self, tenant_id, **kwargs):"},{"line_number":26,"context_line":"        quota_set \u003d {}"},{"line_number":27,"context_line":"        for k, v in kwargs.items():"},{"line_number":28,"context_line":"            quota_set.update({k: kwargs[k][\u0027limit\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_a544c849","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":28},"updated":"2017-02-08 15:48:18.000000000","message":"shouldn\u0027t this function be called \"update_quota_limits\"?","commit_id":"62368e0d5e451737aac51255f4b2605867b2807a"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"bf856573004687e2623acad5eda1b8c18eecf822","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        uri \u003d \u0027/quotas/%s\u0027 % tenant_id"},{"line_number":23,"context_line":"        return self.update_resource(uri, put_body)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def update_detail_quotas(self, tenant_id, **kwargs):"},{"line_number":26,"context_line":"        quota_set \u003d {}"},{"line_number":27,"context_line":"        for k, v in kwargs.items():"},{"line_number":28,"context_line":"            quota_set.update({k: kwargs[k][\u0027limit\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_04148af3","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":28},"in_reply_to":"1a430d35_a544c849","updated":"2017-02-09 23:57:02.000000000","message":"joined it to update_quotas function","commit_id":"62368e0d5e451737aac51255f4b2605867b2807a"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"32b072c8cf832c7a5122bc4aef2f463d0e266851","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        return self.show_resource(uri, **fields)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def show_detail_quotas(self, tenant_id, **fields):"},{"line_number":44,"context_line":"        uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"},{"line_number":45,"context_line":"        return self.show_resource(uri, **fields)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def list_quotas(self, **filters):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_8811a106","line":44,"range":{"start_line":44,"start_character":26,"end_line":44,"end_character":32},"updated":"2017-02-08 15:48:18.000000000","message":"It seems like the QuotaSetsController is not properly routing the action\n\nhttp://logs.openstack.org/50/429950/3/check/gate-tempest-dsvm-neutron-full-ubuntu-xenial-newton/27123f3/console.html#_2017-02-07_08_45_55_448257","commit_id":"62368e0d5e451737aac51255f4b2605867b2807a"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"93a40f367427cf3f9a7f9ca0f4d13e4690027f8b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class QuotasClient(base.BaseNetworkClient):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def update_quotas(self, tenant_id, **kwargs):"},{"line_number":21,"context_line":"        # check if quota set passed as kwargs"},{"line_number":22,"context_line":"        # is in {\u0027network\u0027: 0, \u0027port\u0027: 0} form"},{"line_number":23,"context_line":"        if 0 not in kwargs.items()[0]:"},{"line_number":24,"context_line":"            quota_set \u003d {}"},{"line_number":25,"context_line":"            for k, v in kwargs.items():"},{"line_number":26,"context_line":"                quota_set.update({k: kwargs[k][\u0027limit\u0027]})"},{"line_number":27,"context_line":"            put_body \u003d {\u0027quota\u0027: quota_set}"},{"line_number":28,"context_line":"        else:"},{"line_number":29,"context_line":"            put_body \u003d {\u0027quota\u0027: kwargs}"},{"line_number":30,"context_line":"        uri \u003d \u0027/quotas/%s\u0027 % tenant_id"},{"line_number":31,"context_line":"        return self.update_resource(uri, put_body)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_0411eaac","line":28,"range":{"start_line":21,"start_character":8,"end_line":28,"end_character":13},"updated":"2017-02-10 00:11:29.000000000","message":"tempest library represents the actual api as defined. Hence move these logic into the test case","commit_id":"15bcc3b1cb4b6b2d6bde84fc08a28406daab4876"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"66c673005e073c91b5018e25d53d7c58848ce814","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        uri \u003d \u0027/quotas/%s\u0027 % tenant_id"},{"line_number":29,"context_line":"        return self.delete_resource(uri)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def show_quotas(self, tenant_id, detail\u003dFalse, **fields):"},{"line_number":32,"context_line":"        if detail:"},{"line_number":33,"context_line":"            uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"},{"line_number":34,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_8b4e7194","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":19},"updated":"2017-03-08 17:10:37.000000000","message":"Add doc strings something like\n\"\"\"List the quota of a project\n\n        For a full list of available parameters, please refer to the official\n        API reference:\n        https://developer.openstack.org/api-ref/networking/v2/#list-quotas-for-projects-with-non-default-quota-values\n        \"\"\"","commit_id":"37f0e00e7b7352abce1864edd4187341d2dc204b"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"3dc76636695a6e89b31c880141ddd629fa27d2e6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        uri \u003d \u0027/quotas/%s\u0027 % tenant_id"},{"line_number":29,"context_line":"        return self.delete_resource(uri)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def show_quotas(self, tenant_id, detail\u003dFalse, **fields):"},{"line_number":32,"context_line":"        if detail:"},{"line_number":33,"context_line":"            uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"},{"line_number":34,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_3e9cd468","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":19},"in_reply_to":"9a30ddce_8b4e7194","updated":"2017-03-09 00:30:10.000000000","message":"Done","commit_id":"37f0e00e7b7352abce1864edd4187341d2dc204b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"51795cb414336bc9f2262cb561d53d6092a9fb6e","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :param tenant_id: the ID of a tenant/ project"},{"line_number":35,"context_line":"        :param detail: identifier to request for detail"},{"line_number":36,"context_line":"        quotas for a tenant/project."},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        if detail:"},{"line_number":39,"context_line":"            uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_2e25065b","line":36,"updated":"2017-03-13 11:57:48.000000000","message":"Indentation is wrong here.","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"d21ddb7c715e1c6dd114a5a66c2acfbda0f9a1c5","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :param tenant_id: the ID of a tenant/ project"},{"line_number":35,"context_line":"        :param detail: identifier to request for detail"},{"line_number":36,"context_line":"        quotas for a tenant/project."},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        if detail:"},{"line_number":39,"context_line":"            uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a25e98e_8346b1bd","line":36,"in_reply_to":"9a30ddce_2e25065b","updated":"2017-03-13 22:10:49.000000000","message":"which line indentation are you referring to please?","commit_id":"edeee1c485bfdccc5deb161f1272e2d609d2ee90"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"49fa6798021041ceefc5d26cecd1330eac960019","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :param tenant_id: the ID of a tenant/ project"},{"line_number":35,"context_line":"        :param detail: identifier to request for detail"},{"line_number":36,"context_line":"        quotas for a tenant/project."},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        if detail:"},{"line_number":39,"context_line":"            uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a22e58a_faa9cde0","line":36,"updated":"2017-03-14 09:07:31.000000000","message":"You should indent that line.","commit_id":"0b3a993a02e040df9bfdbc9f8f79acda9beb895e"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"e8ca57e70cda930ccbd8bb7909534cecd6e85e73","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :param tenant_id: the ID of a tenant/ project"},{"line_number":35,"context_line":"        :param detail: identifier to request for detail"},{"line_number":36,"context_line":"        quotas for a tenant/project."},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        if detail:"},{"line_number":39,"context_line":"            uri \u003d \u0027/quotas/%s/detail\u0027 % tenant_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_c40993df","line":36,"in_reply_to":"5a22e58a_faa9cde0","updated":"2017-03-14 17:30:24.000000000","message":"Done","commit_id":"0b3a993a02e040df9bfdbc9f8f79acda9beb895e"}]}
