)]}'
{"tempest/api/identity/admin/v3/test_domains.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"9beee2d69fac4fda44e3e64f213f8322347720d2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        # Create some test domains to be used during tests"},{"line_number":30,"context_line":"        # One of those domains will be disabled"},{"line_number":31,"context_line":"        cls.setup_domains \u003d list()"},{"line_number":32,"context_line":"        for i in range(3):"},{"line_number":33,"context_line":"            domain \u003d cls.domains_client.create_domain("},{"line_number":34,"context_line":"                data_utils.rand_name(\u0027domain\u0027),"},{"line_number":35,"context_line":"                description\u003ddata_utils.rand_name(\u0027domain-desc\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_afdfda0a","line":32,"updated":"2016-05-13 16:59:40.000000000","message":"not a big deal since we are only doing 3 but usually xrange is preferred over range (much more efficient for large numbers)","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d23f24f0c8dfeee5b0df9d41d7bc4aa7197c0d6a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        # Create some test domains to be used during tests"},{"line_number":30,"context_line":"        # One of those domains will be disabled"},{"line_number":31,"context_line":"        cls.setup_domains \u003d list()"},{"line_number":32,"context_line":"        for i in range(3):"},{"line_number":33,"context_line":"            domain \u003d cls.domains_client.create_domain("},{"line_number":34,"context_line":"                data_utils.rand_name(\u0027domain\u0027),"},{"line_number":35,"context_line":"                description\u003ddata_utils.rand_name(\u0027domain-desc\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_d2171ea1","line":32,"in_reply_to":"dab17558_afdfda0a","updated":"2016-05-16 15:42:19.000000000","message":"Thanks for the tip Steve.","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"9beee2d69fac4fda44e3e64f213f8322347720d2","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            domain \u003d cls.domains_client.create_domain("},{"line_number":34,"context_line":"                data_utils.rand_name(\u0027domain\u0027),"},{"line_number":35,"context_line":"                description\u003ddata_utils.rand_name(\u0027domain-desc\u0027),"},{"line_number":36,"context_line":"                enabled\u003dTrue if (i \u003c 2) else False)[\u0027domain\u0027]"},{"line_number":37,"context_line":"            cls.setup_domains.append(domain)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_cf117eb1","line":36,"updated":"2016-05-13 16:59:40.000000000","message":"you can just say enabled \u003d i\u003c2","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d23f24f0c8dfeee5b0df9d41d7bc4aa7197c0d6a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            domain \u003d cls.domains_client.create_domain("},{"line_number":34,"context_line":"                data_utils.rand_name(\u0027domain\u0027),"},{"line_number":35,"context_line":"                description\u003ddata_utils.rand_name(\u0027domain-desc\u0027),"},{"line_number":36,"context_line":"                enabled\u003dTrue if (i \u003c 2) else False)[\u0027domain\u0027]"},{"line_number":37,"context_line":"            cls.setup_domains.append(domain)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_12436614","line":36,"in_reply_to":"dab17558_cf117eb1","updated":"2016-05-16 15:42:19.000000000","message":"Done","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"9beee2d69fac4fda44e3e64f213f8322347720d2","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":84,"context_line":"    def test_list_domains_with_enabled(self):"},{"line_number":85,"context_line":"        # List domains filtering by disabled domains"},{"line_number":86,"context_line":"        params \u003d {\u0027enabled\u0027: False}"},{"line_number":87,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_efea8273","line":84,"updated":"2016-05-13 16:59:40.000000000","message":"the name of this test is confusing since it is looking for disabled domains","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d23f24f0c8dfeee5b0df9d41d7bc4aa7197c0d6a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":84,"context_line":"    def test_list_domains_with_enabled(self):"},{"line_number":85,"context_line":"        # List domains filtering by disabled domains"},{"line_number":86,"context_line":"        params \u003d {\u0027enabled\u0027: False}"},{"line_number":87,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_66df93d6","line":84,"in_reply_to":"dab17558_efea8273","updated":"2016-05-16 15:42:19.000000000","message":"I know what you mean, and I actually though about changing the name to test_list_domains_with_disabled, but I am naming the test according to its parameter name, which is called \"enabled\", and to be literal, the test is looking for domains with the \"enabled\" property set to False. To avoid confusions I will just look for domains with enabled\u003dTrue instead.","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":19587,"name":"Joshua White","email":"joshua.l.white@intel.com","username":"jwhite"},"change_message_id":"129b89938227173dff4b0afb534738f32a81fb26","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":84,"context_line":"    def test_list_domains_with_disabled(self):"},{"line_number":85,"context_line":"        # List domains filtering by disabled domains"},{"line_number":86,"context_line":"        params \u003d {\u0027enabled\u0027: True}"},{"line_number":87,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("},{"line_number":88,"context_line":"            params\u003dparams)[\u0027domains\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_d02c314c","line":85,"range":{"start_line":84,"start_character":4,"end_line":85,"end_character":52},"updated":"2016-05-16 17:09:46.000000000","message":"I\u0027m kind of confused here now after the name change and by the comment under.  test_list_domains_with_enabled makes sense here now since enabled\u003dtrue.  And comment \u0027List domains filtering by enabled domains\u0027 would be better in my opinion as well.  Let me know what you think.","commit_id":"408b52c02ba6819c7732448531c753c240686b14"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"53259d41b80fbadde3b4abe6df23993ad67c1fa1","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":84,"context_line":"    def test_list_domains_with_disabled(self):"},{"line_number":85,"context_line":"        # List domains filtering by disabled domains"},{"line_number":86,"context_line":"        params \u003d {\u0027enabled\u0027: True}"},{"line_number":87,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("},{"line_number":88,"context_line":"            params\u003dparams)[\u0027domains\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_a0e832e3","line":85,"range":{"start_line":84,"start_character":4,"end_line":85,"end_character":52},"in_reply_to":"dab17558_d02c314c","updated":"2016-05-16 20:54:19.000000000","message":"Looks like I made the change first then I forgot to revert it... Thanks for noticing it Josh. I will rename back to test_list_domains_with_enabled.","commit_id":"408b52c02ba6819c7732448531c753c240686b14"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b5bed51bdaf3ec191ae815c28419c56d9ea7bd6a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.domains_client.update_domain(domain_id, enabled\u003dFalse)"},{"line_number":50,"context_line":"        self.domains_client.delete_domain(domain_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _delete_domain_and_assert(self, domain_id):"},{"line_number":53,"context_line":"        self._delete_domain(domain_id)"},{"line_number":54,"context_line":"        # Asserting that the domain is not found in the list"},{"line_number":55,"context_line":"        # after deletion"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_6997293a","line":52,"updated":"2016-05-17 14:49:44.000000000","message":"You can\u0027t mix a delete action and an assert call as part as cleanUp, that\u0027s bad development practice.\n\nYou should assert in the test code and the cleanup should only do clean up.","commit_id":"2b164cd2e1836a49cbe2e47aa3dc3ae28b10c56d"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"218bc7d541af4ddf92b14a82e34f3b35d7e82b2e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.domains_client.update_domain(domain_id, enabled\u003dFalse)"},{"line_number":50,"context_line":"        self.domains_client.delete_domain(domain_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _delete_domain_and_assert(self, domain_id):"},{"line_number":53,"context_line":"        self._delete_domain(domain_id)"},{"line_number":54,"context_line":"        # Asserting that the domain is not found in the list"},{"line_number":55,"context_line":"        # after deletion"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_47dda913","line":52,"in_reply_to":"dab17558_6997293a","updated":"2016-05-18 16:03:05.000000000","message":"Thanks for reviewing Jordan. I agree with you that doing assertions during a cleanup is not a good idea. But actually that code for asserting during deletion is already merged in Tempest. I didn\u0027t add that part of the code, all I did was to rename the previously existing function from _delete_domain to _delete_domain_and_assert because that is what the function was actually doing. I didn\u0027t want to remove that part from the function because that was already approved, and the purpose of the patch was to add new tests, not to fix existing ones. But I can fix the existing tests too by removing the assertion part from the clean up if that is what you think is best.","commit_id":"2b164cd2e1836a49cbe2e47aa3dc3ae28b10c56d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b7b1101a70fa5bdb3c607ea6b942362789e662ee","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        d_desc \u003d data_utils.rand_name(\u0027domain-desc\u0027)"},{"line_number":61,"context_line":"        domain \u003d self.domains_client.create_domain("},{"line_number":62,"context_line":"            d_name, description\u003dd_desc)[\u0027domain\u0027]"},{"line_number":63,"context_line":"        self.addCleanup(self._delete_domain, domain[\u0027id\u0027])"},{"line_number":64,"context_line":"        self.assertIn(\u0027id\u0027, domain)"},{"line_number":65,"context_line":"        self.assertIn(\u0027description\u0027, domain)"},{"line_number":66,"context_line":"        self.assertIn(\u0027name\u0027, domain)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_c42de9fe","side":"PARENT","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":58},"updated":"2016-05-25 09:02:19.000000000","message":"I think it\u0027s fine to have delete as part of the test, but I wouldn\u0027t remove the cleanup here, because if an assertion fails then you will leak the domain.","commit_id":"df4b86d4bf00f2c2611ad64bc2f4785368ec775e"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"896b9e4a29e778fd190d97689624d7cfab906d7e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        d_desc \u003d data_utils.rand_name(\u0027domain-desc\u0027)"},{"line_number":61,"context_line":"        domain \u003d self.domains_client.create_domain("},{"line_number":62,"context_line":"            d_name, description\u003dd_desc)[\u0027domain\u0027]"},{"line_number":63,"context_line":"        self.addCleanup(self._delete_domain, domain[\u0027id\u0027])"},{"line_number":64,"context_line":"        self.assertIn(\u0027id\u0027, domain)"},{"line_number":65,"context_line":"        self.assertIn(\u0027description\u0027, domain)"},{"line_number":66,"context_line":"        self.assertIn(\u0027name\u0027, domain)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_dae8f5e4","side":"PARENT","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":58},"in_reply_to":"bab6814e_c42de9fe","updated":"2016-05-25 23:24:07.000000000","message":"I totally agree, I never meant to remove that cleanup from there. I think I ended up removing it cause it was causing the test to fail since trying to delete a domain that doesn\u0027t exist raises an error, and since the test body deletes the domain the cleanup was always raising an error. But I will add a workaround that to make sure we don\u0027t leave trash if the test fails. Thanks Andrea.","commit_id":"df4b86d4bf00f2c2611ad64bc2f4785368ec775e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b7b1101a70fa5bdb3c607ea6b942362789e662ee","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        body \u003d self.domains_client.list_domains()[\u0027domains\u0027]"},{"line_number":58,"context_line":"        for d in body:"},{"line_number":59,"context_line":"            fetched_ids.append(d[\u0027id\u0027])"},{"line_number":60,"context_line":"        missing_doms \u003d \\"},{"line_number":61,"context_line":"            [d for d in self.setup_domains if d[\u0027id\u0027] not in fetched_ids]"},{"line_number":62,"context_line":"        self.assertEqual(0, len(missing_doms))"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_81011309","line":60,"updated":"2016-05-25 09:02:19.000000000","message":"NIT: I think you can avoid the \"\\\" by using parenthesis or even by breaking the comprehension before the if]","commit_id":"15ea7e22814594172d042d81cb610a49de1b9016"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"896b9e4a29e778fd190d97689624d7cfab906d7e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        body \u003d self.domains_client.list_domains()[\u0027domains\u0027]"},{"line_number":58,"context_line":"        for d in body:"},{"line_number":59,"context_line":"            fetched_ids.append(d[\u0027id\u0027])"},{"line_number":60,"context_line":"        missing_doms \u003d \\"},{"line_number":61,"context_line":"            [d for d in self.setup_domains if d[\u0027id\u0027] not in fetched_ids]"},{"line_number":62,"context_line":"        self.assertEqual(0, len(missing_doms))"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_fa17b942","line":60,"in_reply_to":"bab6814e_81011309","updated":"2016-05-25 23:24:07.000000000","message":"Done","commit_id":"15ea7e22814594172d042d81cb610a49de1b9016"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b7b1101a70fa5bdb3c607ea6b942362789e662ee","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("},{"line_number":69,"context_line":"            params\u003dparams)[\u0027domains\u0027]"},{"line_number":70,"context_line":"        # Verify the filtered list is correct"},{"line_number":71,"context_line":"        self.assertEqual(1, len(fetched_domains))"},{"line_number":72,"context_line":"        self.assertEqual(fetched_domains[0][\u0027name\u0027],"},{"line_number":73,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_c4bcc9dd","line":71,"updated":"2016-05-25 09:02:19.000000000","message":"NIT: Is there a constraint for domain names to be unique? Given that you use rand_name they are very likely to be unique anyways :)","commit_id":"15ea7e22814594172d042d81cb610a49de1b9016"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"896b9e4a29e778fd190d97689624d7cfab906d7e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("},{"line_number":69,"context_line":"            params\u003dparams)[\u0027domains\u0027]"},{"line_number":70,"context_line":"        # Verify the filtered list is correct"},{"line_number":71,"context_line":"        self.assertEqual(1, len(fetched_domains))"},{"line_number":72,"context_line":"        self.assertEqual(fetched_domains[0][\u0027name\u0027],"},{"line_number":73,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_ba94118b","line":71,"in_reply_to":"bab6814e_c4bcc9dd","updated":"2016-05-25 23:24:07.000000000","message":"Yes, according to the API documentation domain names have to be unique: \"Domain name. Globally unique across all domains.\"\nhttp://developer.openstack.org/api-ref-identity-v3.html#domains-v3\nI will add a comment to the test to clarify that.","commit_id":"15ea7e22814594172d042d81cb610a49de1b9016"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b7b1101a70fa5bdb3c607ea6b942362789e662ee","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":76,"context_line":"    def test_list_domains_with_enabled(self):"},{"line_number":77,"context_line":"        # List domains filtering by enabled domains"},{"line_number":78,"context_line":"        params \u003d {\u0027enabled\u0027: True}"},{"line_number":79,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_e48e2d26","line":76,"range":{"start_line":76,"start_character":0,"end_line":76,"end_character":45},"updated":"2016-05-25 09:02:19.000000000","message":"I think you should verify here that the two domains you expect to be enabled are in the list.","commit_id":"15ea7e22814594172d042d81cb610a49de1b9016"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"896b9e4a29e778fd190d97689624d7cfab906d7e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":76,"context_line":"    def test_list_domains_with_enabled(self):"},{"line_number":77,"context_line":"        # List domains filtering by enabled domains"},{"line_number":78,"context_line":"        params \u003d {\u0027enabled\u0027: True}"},{"line_number":79,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_fa6699b9","line":76,"range":{"start_line":76,"start_character":0,"end_line":76,"end_character":45},"in_reply_to":"bab6814e_e48e2d26","updated":"2016-05-25 23:24:07.000000000","message":"Good idea. I\u0027ll add that check. Thanks.","commit_id":"15ea7e22814594172d042d81cb610a49de1b9016"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f060cfd95435d7707f03ba78491ec37c6a05243e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # Verify the filtered list is correct, domain names are unique"},{"line_number":79,"context_line":"        # so exactly one domain should be found with the provided name"},{"line_number":80,"context_line":"        self.assertEqual(1, len(fetched_domains))"},{"line_number":81,"context_line":"        self.assertEqual(fetched_domains[0][\u0027name\u0027],"},{"line_number":82,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_db13bfb6","line":81,"updated":"2016-05-31 16:59:26.000000000","message":"assertion parameter order should be (expected, observed)","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"97c33fc2f4e37785fa3d5cc0da87a91abbe0ca80","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # Verify the filtered list is correct, domain names are unique"},{"line_number":79,"context_line":"        # so exactly one domain should be found with the provided name"},{"line_number":80,"context_line":"        self.assertEqual(1, len(fetched_domains))"},{"line_number":81,"context_line":"        self.assertEqual(fetched_domains[0][\u0027name\u0027],"},{"line_number":82,"context_line":"                         self.setup_domains[0][\u0027name\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_b5040418","line":81,"in_reply_to":"9abb7d3a_db13bfb6","updated":"2016-05-31 19:11:14.000000000","message":"good catch Steve, thanks. I\u0027ll change this.","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f060cfd95435d7707f03ba78491ec37c6a05243e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.assertIn(self.setup_domains[0], fetched_domains)"},{"line_number":92,"context_line":"        self.assertIn(self.setup_domains[1], fetched_domains)"},{"line_number":93,"context_line":"        for domain in fetched_domains:"},{"line_number":94,"context_line":"            self.assertEqual(domain[\u0027enabled\u0027], True)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":97,"context_line":"    @test.idempotent_id(\u0027f2f5b44a-82e8-4dad-8084-0661ea3b18cf\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_5b286fe2","line":94,"updated":"2016-05-31 16:59:26.000000000","message":"same as above - swap the parameters","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"97c33fc2f4e37785fa3d5cc0da87a91abbe0ca80","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.assertIn(self.setup_domains[0], fetched_domains)"},{"line_number":92,"context_line":"        self.assertIn(self.setup_domains[1], fetched_domains)"},{"line_number":93,"context_line":"        for domain in fetched_domains:"},{"line_number":94,"context_line":"            self.assertEqual(domain[\u0027enabled\u0027], True)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":97,"context_line":"    @test.idempotent_id(\u0027f2f5b44a-82e8-4dad-8084-0661ea3b18cf\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_f0005a03","line":94,"in_reply_to":"9abb7d3a_5b286fe2","updated":"2016-05-31 19:11:14.000000000","message":"Done","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"e6bc69d1c603ebff69e386d3d801d6f0a7089d81","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(0, len(missing_doms))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @test.idempotent_id(\u0027c6aee07b-4981-440c-bb0b-eb598f58ffe9\u0027)"},{"line_number":73,"context_line":"    def test_list_domains_with_name(self):"},{"line_number":74,"context_line":"        # List domains filtering by name"},{"line_number":75,"context_line":"        params \u003d {\u0027name\u0027: self.setup_domains[0][\u0027name\u0027]}"},{"line_number":76,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_61382af0","line":73,"updated":"2016-06-07 21:46:15.000000000","message":"test_list_domains_filter_by_name\n\n\n* less confusing name","commit_id":"997b481e5b3581c61934b30023e7bfec420b7a94"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"b45f21691df54ba48d494081be7abd174e428a8e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(0, len(missing_doms))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @test.idempotent_id(\u0027c6aee07b-4981-440c-bb0b-eb598f58ffe9\u0027)"},{"line_number":73,"context_line":"    def test_list_domains_with_name(self):"},{"line_number":74,"context_line":"        # List domains filtering by name"},{"line_number":75,"context_line":"        params \u003d {\u0027name\u0027: self.setup_domains[0][\u0027name\u0027]}"},{"line_number":76,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_7a37f04c","line":73,"in_reply_to":"7aa08908_61382af0","updated":"2016-06-08 18:11:38.000000000","message":"Done","commit_id":"997b481e5b3581c61934b30023e7bfec420b7a94"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"e6bc69d1c603ebff69e386d3d801d6f0a7089d81","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                         fetched_domains[0][\u0027name\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":85,"context_line":"    def test_list_domains_with_enabled(self):"},{"line_number":86,"context_line":"        # List domains filtering by enabled domains"},{"line_number":87,"context_line":"        params \u003d {\u0027enabled\u0027: True}"},{"line_number":88,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_41052e12","line":85,"updated":"2016-06-07 21:46:15.000000000","message":"test_list_domains_filter_by_enabled","commit_id":"997b481e5b3581c61934b30023e7bfec420b7a94"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"b45f21691df54ba48d494081be7abd174e428a8e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                         fetched_domains[0][\u0027name\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @test.idempotent_id(\u00273fd19840-65c1-43f8-b48c-51bdd066dff9\u0027)"},{"line_number":85,"context_line":"    def test_list_domains_with_enabled(self):"},{"line_number":86,"context_line":"        # List domains filtering by enabled domains"},{"line_number":87,"context_line":"        params \u003d {\u0027enabled\u0027: True}"},{"line_number":88,"context_line":"        fetched_domains \u003d self.domains_client.list_domains("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_5abf9460","line":85,"in_reply_to":"7aa08908_41052e12","updated":"2016-06-08 18:11:38.000000000","message":"Done","commit_id":"997b481e5b3581c61934b30023e7bfec420b7a94"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"dfc60dd19f2cf64fadeab67b3728596cceeafb61","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.api.identity import base"},{"line_number":17,"context_line":"from tempest.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib.exceptions import NotFound"},{"line_number":20,"context_line":"from tempest import test"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_c6508661","line":19,"updated":"2016-06-09 19:40:02.000000000","message":"Import only module not class","commit_id":"da958ffb1b5af7d5c280a24c978b34c609b5a308"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"6f2b64b73a4304c1797aff242b3d25965ae756b2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.api.identity import base"},{"line_number":17,"context_line":"from tempest.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib.exceptions import NotFound"},{"line_number":20,"context_line":"from tempest import test"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_b7173c53","line":19,"in_reply_to":"7aa08908_c6508661","updated":"2016-06-10 15:07:58.000000000","message":"I will remove this import since it is no longer needed if using the call_and_ignore_notfound_exc function","commit_id":"da958ffb1b5af7d5c280a24c978b34c609b5a308"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"dfc60dd19f2cf64fadeab67b3728596cceeafb61","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.domains_client.update_domain(domain_id, enabled\u003dFalse)"},{"line_number":51,"context_line":"        self.domains_client.delete_domain(domain_id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _domain_cleanup(self, domain_id):"},{"line_number":54,"context_line":"        # Trying to delete a domain that doesn\u0027t exist raises an exception"},{"line_number":55,"context_line":"        try:"},{"line_number":56,"context_line":"            self._delete_domain(domain_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_26fcea3d","line":53,"updated":"2016-06-09 19:40:02.000000000","message":"Use the call_and_ignore_notfound_exc function","commit_id":"da958ffb1b5af7d5c280a24c978b34c609b5a308"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"6f2b64b73a4304c1797aff242b3d25965ae756b2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.domains_client.update_domain(domain_id, enabled\u003dFalse)"},{"line_number":51,"context_line":"        self.domains_client.delete_domain(domain_id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _domain_cleanup(self, domain_id):"},{"line_number":54,"context_line":"        # Trying to delete a domain that doesn\u0027t exist raises an exception"},{"line_number":55,"context_line":"        try:"},{"line_number":56,"context_line":"            self._delete_domain(domain_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_28cac94f","line":53,"in_reply_to":"7aa08908_26fcea3d","updated":"2016-06-10 15:07:58.000000000","message":"I see this call_and_ignore_notfound_exc  function is new, nice, it should be useful. I will modify the test to use it and will remove this function.","commit_id":"da958ffb1b5af7d5c280a24c978b34c609b5a308"}],"tempest/api/identity/admin/v3/test_list_projects.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"9beee2d69fac4fda44e3e64f213f8322347720d2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        cls.p2 \u003d cls.projects_client.create_project(p2_name)[\u0027project\u0027]"},{"line_number":38,"context_line":"        cls.data.projects.append(cls.p2)"},{"line_number":39,"context_line":"        cls.project_ids.append(cls.p2[\u0027id\u0027])"},{"line_number":40,"context_line":"        # Create project with parent"},{"line_number":41,"context_line":"        p3_name \u003d data_utils.rand_name(\u0027project\u0027)"},{"line_number":42,"context_line":"        cls.p3 \u003d cls.projects_client.create_project("},{"line_number":43,"context_line":"            p3_name, parent_id\u003dcls.p2[\u0027id\u0027])[\u0027project\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_2f848aaf","line":40,"updated":"2016-05-13 16:59:40.000000000","message":"would like to see comment say that p2 is the parent of p3.","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d23f24f0c8dfeee5b0df9d41d7bc4aa7197c0d6a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        cls.p2 \u003d cls.projects_client.create_project(p2_name)[\u0027project\u0027]"},{"line_number":38,"context_line":"        cls.data.projects.append(cls.p2)"},{"line_number":39,"context_line":"        cls.project_ids.append(cls.p2[\u0027id\u0027])"},{"line_number":40,"context_line":"        # Create project with parent"},{"line_number":41,"context_line":"        p3_name \u003d data_utils.rand_name(\u0027project\u0027)"},{"line_number":42,"context_line":"        cls.p3 \u003d cls.projects_client.create_project("},{"line_number":43,"context_line":"            p3_name, parent_id\u003dcls.p2[\u0027id\u0027])[\u0027project\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_d236fe01","line":40,"in_reply_to":"dab17558_2f848aaf","updated":"2016-05-16 15:42:19.000000000","message":"Done","commit_id":"be0fb8cc93f5e5bbe025a9012647aed878695c38"}],"tempest/api/identity/admin/v3/test_regions.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b7b1101a70fa5bdb3c607ea6b942362789e662ee","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        region \u003d self.client.create_region("},{"line_number":54,"context_line":"            description\u003dr_description,"},{"line_number":55,"context_line":"            parent_region_id\u003dself.setup_regions[0][\u0027id\u0027])[\u0027region\u0027]"},{"line_number":56,"context_line":"        self.addCleanup(self._delete_region, region[\u0027id\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(r_description, region[\u0027description\u0027])"},{"line_number":58,"context_line":"        self.assertEqual(self.setup_regions[0][\u0027id\u0027],"},{"line_number":59,"context_line":"                         region[\u0027parent_region_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_24d155ce","side":"PARENT","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":58},"updated":"2016-05-25 09:02:19.000000000","message":"Same comment as for domains: it\u0027s fine to have delete at the end of the test, but you need to keep cleanup as well.","commit_id":"df4b86d4bf00f2c2611ad64bc2f4785368ec775e"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"896b9e4a29e778fd190d97689624d7cfab906d7e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        region \u003d self.client.create_region("},{"line_number":54,"context_line":"            description\u003dr_description,"},{"line_number":55,"context_line":"            parent_region_id\u003dself.setup_regions[0][\u0027id\u0027])[\u0027region\u0027]"},{"line_number":56,"context_line":"        self.addCleanup(self._delete_region, region[\u0027id\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(r_description, region[\u0027description\u0027])"},{"line_number":58,"context_line":"        self.assertEqual(self.setup_regions[0][\u0027id\u0027],"},{"line_number":59,"context_line":"                         region[\u0027parent_region_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_1a743d34","side":"PARENT","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":58},"in_reply_to":"bab6814e_24d155ce","updated":"2016-05-25 23:24:07.000000000","message":"Done","commit_id":"df4b86d4bf00f2c2611ad64bc2f4785368ec775e"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f060cfd95435d7707f03ba78491ec37c6a05243e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        r_description \u003d data_utils.rand_name(\u0027description\u0027)"},{"line_number":89,"context_line":"        region \u003d self.client.create_region("},{"line_number":90,"context_line":"            region_id\u003dr_region_id, description\u003dr_description)[\u0027region\u0027]"},{"line_number":91,"context_line":"        self.addCleanup(self.client.delete_region, region[\u0027id\u0027])"},{"line_number":92,"context_line":"        # Asserting Create Region with specific id response body"},{"line_number":93,"context_line":"        self.assertEqual(r_region_id, region[\u0027id\u0027])"},{"line_number":94,"context_line":"        self.assertEqual(r_description, region[\u0027description\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_9be3f7a3","line":91,"updated":"2016-05-31 16:59:26.000000000","message":"why is this one self.client.delete_region and above (line 59) is self._region_cleanup?","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"97c33fc2f4e37785fa3d5cc0da87a91abbe0ca80","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        r_description \u003d data_utils.rand_name(\u0027description\u0027)"},{"line_number":89,"context_line":"        region \u003d self.client.create_region("},{"line_number":90,"context_line":"            region_id\u003dr_region_id, description\u003dr_description)[\u0027region\u0027]"},{"line_number":91,"context_line":"        self.addCleanup(self.client.delete_region, region[\u0027id\u0027])"},{"line_number":92,"context_line":"        # Asserting Create Region with specific id response body"},{"line_number":93,"context_line":"        self.assertEqual(r_region_id, region[\u0027id\u0027])"},{"line_number":94,"context_line":"        self.assertEqual(r_description, region[\u0027description\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_300dc2e8","line":91,"in_reply_to":"9abb7d3a_9be3f7a3","updated":"2016-05-31 19:11:14.000000000","message":"The test test_create_update_get_delete_region above as part of the validation it performs, it deletes the region that it created a little earlier. Because of this, if the addCleanup uses self.client.delete_region it will cause an exception since the region should already been deleted at that point if everything went well with the test and the test will be marked as failed. The self._region_cleanup is just an emergency cleanup method in case the test fails at some point before getting to the deletion part of the test to avoid leaking garbage resources. I will add a few extra comments in the _region_cleanup method to clarify this.","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f060cfd95435d7707f03ba78491ec37c6a05243e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        region \u003d self.client.create_region("},{"line_number":112,"context_line":"            description\u003dr_description,"},{"line_number":113,"context_line":"            parent_region_id\u003dself.setup_regions[0][\u0027id\u0027])[\u0027region\u0027]"},{"line_number":114,"context_line":"        self.addCleanup(self.client.delete_region, region[\u0027id\u0027])"},{"line_number":115,"context_line":"        # Get the list of regions filtering with the parent_region_id"},{"line_number":116,"context_line":"        params \u003d {\u0027parent_region_id\u0027: self.setup_regions[0][\u0027id\u0027]}"},{"line_number":117,"context_line":"        fetched_regions \u003d self.client.list_regions(params\u003dparams)[\u0027regions\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_fbea0373","line":114,"updated":"2016-05-31 16:59:26.000000000","message":"same as above (line 91)","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"97c33fc2f4e37785fa3d5cc0da87a91abbe0ca80","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        region \u003d self.client.create_region("},{"line_number":112,"context_line":"            description\u003dr_description,"},{"line_number":113,"context_line":"            parent_region_id\u003dself.setup_regions[0][\u0027id\u0027])[\u0027region\u0027]"},{"line_number":114,"context_line":"        self.addCleanup(self.client.delete_region, region[\u0027id\u0027])"},{"line_number":115,"context_line":"        # Get the list of regions filtering with the parent_region_id"},{"line_number":116,"context_line":"        params \u003d {\u0027parent_region_id\u0027: self.setup_regions[0][\u0027id\u0027]}"},{"line_number":117,"context_line":"        fetched_regions \u003d self.client.list_regions(params\u003dparams)[\u0027regions\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_50f846c3","line":114,"in_reply_to":"9abb7d3a_fbea0373","updated":"2016-05-31 19:11:14.000000000","message":"Answered above.","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f060cfd95435d7707f03ba78491ec37c6a05243e","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # Asserting list regions response"},{"line_number":119,"context_line":"        self.assertIn(region, fetched_regions)"},{"line_number":120,"context_line":"        for r in fetched_regions:"},{"line_number":121,"context_line":"            self.assertEqual(r[\u0027parent_region_id\u0027],"},{"line_number":122,"context_line":"                             self.setup_regions[0][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_7bf73359","line":121,"updated":"2016-05-31 16:59:26.000000000","message":"swap order of args - should be expected, observed","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"97c33fc2f4e37785fa3d5cc0da87a91abbe0ca80","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # Asserting list regions response"},{"line_number":119,"context_line":"        self.assertIn(region, fetched_regions)"},{"line_number":120,"context_line":"        for r in fetched_regions:"},{"line_number":121,"context_line":"            self.assertEqual(r[\u0027parent_region_id\u0027],"},{"line_number":122,"context_line":"                             self.setup_regions[0][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_70e90ae6","line":121,"in_reply_to":"9abb7d3a_7bf73359","updated":"2016-05-31 19:11:14.000000000","message":"Done","commit_id":"ff797b8c495a1135b29c1b7abd6a04f7e052a0f1"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"e6bc69d1c603ebff69e386d3d801d6f0a7089d81","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                         \u0027, \u0027.join(str(e) for e in missing_regions))"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @test.idempotent_id(\u00272d1057cb-bbde-413a-acdf-e2d265284542\u0027)"},{"line_number":112,"context_line":"    def test_list_regions_with_parent_region_id(self):"},{"line_number":113,"context_line":"        # Add a sub-region to one of the existing test regions"},{"line_number":114,"context_line":"        r_description \u003d data_utils.rand_name(\u0027description\u0027)"},{"line_number":115,"context_line":"        region \u003d self.client.create_region("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_b37b89f4","line":112,"updated":"2016-06-07 21:46:15.000000000","message":"test_list_regions_filter_by_parent_region_id","commit_id":"997b481e5b3581c61934b30023e7bfec420b7a94"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"b45f21691df54ba48d494081be7abd174e428a8e","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                         \u0027, \u0027.join(str(e) for e in missing_regions))"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @test.idempotent_id(\u00272d1057cb-bbde-413a-acdf-e2d265284542\u0027)"},{"line_number":112,"context_line":"    def test_list_regions_with_parent_region_id(self):"},{"line_number":113,"context_line":"        # Add a sub-region to one of the existing test regions"},{"line_number":114,"context_line":"        r_description \u003d data_utils.rand_name(\u0027description\u0027)"},{"line_number":115,"context_line":"        region \u003d self.client.create_region("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_7a6ff0fb","line":112,"in_reply_to":"7aa08908_b37b89f4","updated":"2016-06-08 18:11:38.000000000","message":"Done","commit_id":"997b481e5b3581c61934b30023e7bfec420b7a94"}]}
