)]}'
{"openstackclient/identity/v2_0/project.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"37048eb2b44f9b2827b3ef3259397177ff532f27","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        kwargs \u003d {}"},{"line_number":80,"context_line":"        if parsed_args.property:"},{"line_number":81,"context_line":"            kwargs \u003d parsed_args.property.copy()"},{"line_number":82,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":83,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"true\"):"},{"line_number":84,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d True"},{"line_number":85,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":86,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"false\"):"},{"line_number":87,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d False"},{"line_number":88,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":89,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"none\"):"},{"line_number":90,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d None"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            project \u003d identity_client.tenants.create("}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_9916afa7","line":90,"range":{"start_line":82,"start_character":0,"end_line":90,"end_character":38},"updated":"2020-04-02 11:56:20.000000000","message":"The v2.0 API was never domain-aware. We probably don\u0027t need to expose this, but I\u0027ll defer to openstackclient cores for their advice on what to do here.","commit_id":"51771c3dc44e5ad28e440a5bbce18688e8c6512a"}],"openstackclient/identity/v3/project.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b1ddcfd1431c3d90a2ae37858fc87ec3c435f3e7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        kwargs \u003d {}"},{"line_number":104,"context_line":"        if parsed_args.property:"},{"line_number":105,"context_line":"            kwargs \u003d parsed_args.property.copy()"},{"line_number":106,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":107,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"true\"):"},{"line_number":108,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d True"},{"line_number":109,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":110,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"false\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_f5d3e836","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":59},"updated":"2020-05-14 19:24:14.000000000","message":"This breaks when I test it locally because it\u0027s already operating on a boolean.\n\n (py36) [stack@undercloud ~]$ openstack project create --property is_domain\u003dTrue my_domain                                                                             \n\u0027bool\u0027 object has no attribute \u0027lower\u0027","commit_id":"51771c3dc44e5ad28e440a5bbce18688e8c6512a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5ef2db721a901a3f0586b6058ebb074a343bca33","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        kwargs \u003d {}"},{"line_number":104,"context_line":"        if parsed_args.property:"},{"line_number":105,"context_line":"            kwargs \u003d parsed_args.property.copy()"},{"line_number":106,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":107,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"true\"):"},{"line_number":108,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d True"},{"line_number":109,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":110,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"false\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_b3022508","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":59},"in_reply_to":"ff570b3c_612556c2","updated":"2020-05-15 01:26:27.000000000","message":"We can avoid the issue by using an elif statement.\n\nhttp://paste.openstack.org/raw/793621/\n\nI\u0027ve proposed what I needed to do to get this passing in a subsequent patch. Feel free to incorporate it into this patch if you\u0027d like.\n\nhttps://review.opendev.org/#/c/728320/1","commit_id":"51771c3dc44e5ad28e440a5bbce18688e8c6512a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6fcc6fa4ffe23f0a58d8e8b08cdc40a1d97d08b2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        kwargs \u003d {}"},{"line_number":104,"context_line":"        if parsed_args.property:"},{"line_number":105,"context_line":"            kwargs \u003d parsed_args.property.copy()"},{"line_number":106,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":107,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"true\"):"},{"line_number":108,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d True"},{"line_number":109,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":110,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"false\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_612556c2","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":59},"in_reply_to":"ff570b3c_f5d3e836","updated":"2020-05-15 01:16:48.000000000","message":"This is because the kwargs dictionary is being reused.\n\nWhen I test this, I\u0027m passing is_domain\u003dTrue, which invokes the first case and overwrites the kwargs to be a boolean instead of a string, causing the second if statement to fail.","commit_id":"51771c3dc44e5ad28e440a5bbce18688e8c6512a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2839f236d1688816e3c9013763cc73e2ad5d4bd4","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":110,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"false\"):"},{"line_number":111,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d False"},{"line_number":112,"context_line":"        if (kwargs.get(\u0027is_domain\u0027) and"},{"line_number":113,"context_line":"                kwargs.get(\u0027is_domain\u0027).lower() \u003d\u003d \"none\"):"},{"line_number":114,"context_line":"            kwargs[\u0027is_domain\u0027] \u003d None"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        kwargs[\u0027tags\u0027] \u003d list(set(parsed_args.tags))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_7b998977","line":113,"range":{"start_line":112,"start_character":0,"end_line":113,"end_character":59},"updated":"2020-05-29 01:45:24.000000000","message":"I think the current test is only passing because it\u0027s being tested with is_doamin\u003dfalse. If we add a test for is_domain\u003dtrue, this statement would fail because we\u0027re expecting to operate on a string but we actually have a boolean.","commit_id":"51771c3dc44e5ad28e440a5bbce18688e8c6512a"}],"openstackclient/tests/unit/identity/v3/test_project.py":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"a688cb0657d6d3e4c30053af7b66dba118831804","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.assertEqual(self.datalist, data)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def test_project_create_is_domian_property(self):"},{"line_number":354,"context_line":"        self.parent \u003d identity_fakes.FakeProject.create_one_project()"},{"line_number":355,"context_line":"        self.project \u003d identity_fakes.FakeProject.create_one_project("},{"line_number":356,"context_line":"            attrs\u003d{\u0027domain_id\u0027: self.domain.id, \u0027parent_id\u0027: self.parent.id})"},{"line_number":357,"context_line":"        self.projects_mock.get.return_value \u003d self.parent"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_350472c6","line":354,"range":{"start_line":354,"start_character":8,"end_line":354,"end_character":69},"updated":"2019-06-19 06:06:02.000000000","message":"Do we need to create parent here? Maybe this unit test can write same as test_project_create_property.","commit_id":"5d14a0bd840961bf2fb4cda34ef6cb7d6ef679b7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"a97484917a7f80e91d7065fac05cb37e9a3b6c1d","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.assertEqual(self.datalist, data)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def test_project_create_is_domian_property(self):"},{"line_number":354,"context_line":"        self.parent \u003d identity_fakes.FakeProject.create_one_project()"},{"line_number":355,"context_line":"        self.project \u003d identity_fakes.FakeProject.create_one_project("},{"line_number":356,"context_line":"            attrs\u003d{\u0027domain_id\u0027: self.domain.id, \u0027parent_id\u0027: self.parent.id})"},{"line_number":357,"context_line":"        self.projects_mock.get.return_value \u003d self.parent"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_7ee5e737","line":354,"range":{"start_line":354,"start_character":8,"end_line":354,"end_character":69},"in_reply_to":"9fb8cfa7_350472c6","updated":"2019-06-19 09:04:10.000000000","message":"Done","commit_id":"5d14a0bd840961bf2fb4cda34ef6cb7d6ef679b7"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"3827e699b1d7df73e84b2c8819a25a0867168b2a","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.assertEqual(self.datalist, data)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def test_project_create_is_domian_property(self):"},{"line_number":354,"context_line":"        #self.parent \u003d identity_fakes.FakeProject.create_one_project()"},{"line_number":355,"context_line":"        #self.project \u003d identity_fakes.FakeProject.create_one_project("},{"line_number":356,"context_line":"            #attrs\u003d{\u0027domain_id\u0027: self.domain.id, \u0027parent_id\u0027: self.parent.id})"},{"line_number":357,"context_line":"        #self.projects_mock.get.return_value \u003d self.parent"},{"line_number":358,"context_line":"        #self.projects_mock.create.return_value \u003d self.project"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        arglist \u003d ["},{"line_number":361,"context_line":"            \u0027--property\u0027, \u0027is_domain\u003dfalse\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fb8cfa7_5e3b439b","line":358,"range":{"start_line":354,"start_character":8,"end_line":358,"end_character":62},"updated":"2019-06-19 09:06:13.000000000","message":"Please remove the comment code.","commit_id":"f5f4d336e4ec1915029d35839d1998ca992f6287"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"3827e699b1d7df73e84b2c8819a25a0867168b2a","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            \u0027is_domain\u0027: False,"},{"line_number":389,"context_line":"            \u0027tags\u0027: []"},{"line_number":390,"context_line":"        }"},{"line_number":391,"context_line":"        # ProjectManager.create(name\u003d, domain\u003d, description\u003d,"},{"line_number":392,"context_line":"        #                       enabled\u003d, **kwargs)"},{"line_number":393,"context_line":"        self.projects_mock.create.assert_called_with("},{"line_number":394,"context_line":"            **kwargs"},{"line_number":395,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fb8cfa7_de465322","line":392,"range":{"start_line":391,"start_character":8,"end_line":392,"end_character":51},"updated":"2019-06-19 09:06:13.000000000","message":"ditto","commit_id":"f5f4d336e4ec1915029d35839d1998ca992f6287"}]}
