)]}'
{"glance_tempest_plugin/tests/rbac/v2/test_images.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6680037399e26984faf64a9b146d2d56bae68545","unresolved":true,"context_lines":[{"line_number":618,"context_line":"        self.do_request(\u0027show_image_member\u0027,"},{"line_number":619,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":620,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":621,"context_line":"                        member_id\u003dmember_project_id)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    def test_list_image_members(self):"},{"line_number":624,"context_line":"        project_id \u003d self.persona.credentials.project_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"25ccb773_6e1bc62e","line":621,"updated":"2021-03-03 17:00:47.000000000","message":"This second case is that we create an image as a random project, add some other project as a member, and then check to see if a third project can show members on it?\n\nIt would help to prefix each of these with an explanation comment about what the case is and what we should expect. I was able to suss most of that out of the patch below this because I\u0027m more familiar with those operations. It\u0027s hard to keep all the clients and project_ids straight across all of this.","commit_id":"fa22c387d8e3054808e4bbf4faa336741e6242bb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6680037399e26984faf64a9b146d2d56bae68545","unresolved":true,"context_lines":[{"line_number":644,"context_line":"        self.assertIn(member_one_project_id, members)"},{"line_number":645,"context_line":"        # FIXME: This should eventually respect tenancy when glance supports"},{"line_number":646,"context_line":"        # system-scope and exclude members from other projects."},{"line_number":647,"context_line":"        self.assertIn(member_two_project_id, members)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def test_update_image_member(self):"},{"line_number":650,"context_line":"        project_client \u003d self.setup_user_client()"}],"source_content_type":"text/x-python","patch_set":11,"id":"24711c4e_a2e84509","line":647,"updated":"2021-03-03 17:00:47.000000000","message":"Are you saying that project2 should not be able to see that project1 is a member of this image (once the tenancy thing is fixed)? Like, they should both be members, but not be able to see that each other are on the list (like a bcc) ?","commit_id":"fa22c387d8e3054808e4bbf4faa336741e6242bb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6680037399e26984faf64a9b146d2d56bae68545","unresolved":true,"context_lines":[{"line_number":665,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":666,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":667,"context_line":"                        member_id\u003dself.persona.credentials.project_id,"},{"line_number":668,"context_line":"                        status\u003d\u0027rejected\u0027)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        member_client \u003d self.setup_user_client()"},{"line_number":671,"context_line":"        member_project_id \u003d member_client.credentials.project_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"b42aadce_0c7d2360","line":668,"updated":"2021-03-03 17:00:47.000000000","message":"We accept and the reject the same thing? Same client, same image, same member_id, right? I\u0027m confused.","commit_id":"fa22c387d8e3054808e4bbf4faa336741e6242bb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6680037399e26984faf64a9b146d2d56bae68545","unresolved":true,"context_lines":[{"line_number":687,"context_line":"        self.do_request(\u0027update_image_member\u0027,"},{"line_number":688,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":689,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":690,"context_line":"                        member_id\u003dmember_project_id, status\u003d\u0027rejected\u0027)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def test_delete_image_member(self):"},{"line_number":693,"context_line":"        member_client \u003d self.setup_user_client()"}],"source_content_type":"text/x-python","patch_set":11,"id":"e0ee13b0_2a1c85dc","line":690,"updated":"2021-03-03 17:00:47.000000000","message":"Same for these two assertions. I\u0027m not sure what\u0027s going on here.","commit_id":"fa22c387d8e3054808e4bbf4faa336741e6242bb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":628,"context_line":"        self.do_request(\u0027show_image_member\u0027,"},{"line_number":629,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":630,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":631,"context_line":"                        member_id\u003dproject_one_id)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def test_list_image_members(self):"},{"line_number":634,"context_line":"        # Stash the project_id for this persona"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fbc4371_a0e19b54","line":631,"updated":"2021-03-03 21:17:14.000000000","message":"Okay, I was initially confused about this, but the subtext here is \"we\u0027re a project admin, but shouldn\u0027t be able to do this because it\u0027s outside our project. Once project admins are really project-scoped they won\u0027t be able to do this.\"","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        self.do_request(\u0027show_image_member\u0027,"},{"line_number":629,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":630,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":631,"context_line":"                        member_id\u003dproject_one_id)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    def test_list_image_members(self):"},{"line_number":634,"context_line":"        # Stash the project_id for this persona"}],"source_content_type":"text/x-python","patch_set":12,"id":"eedcbfad_8854a8f1","line":631,"in_reply_to":"1fbc4371_a0e19b54","updated":"2021-03-03 23:39:34.000000000","message":"Done","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":653,"context_line":"        self.assertIn(project_id, members)"},{"line_number":654,"context_line":"        # FIXME: This should eventually respect tenancy when glance supports"},{"line_number":655,"context_line":"        # system-scope and exclude members from other projects."},{"line_number":656,"context_line":"        self.assertIn(other_member_project_id, members)"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"    def test_update_image_member(self):"},{"line_number":659,"context_line":"        project_client \u003d self.setup_user_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"e211ee9b_f612ec79","line":656,"updated":"2021-03-03 21:17:14.000000000","message":"So we should be able to see that it\u0027s shared with us, but not see that it\u0027s shared with other_project_id, right?","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":false,"context_lines":[{"line_number":653,"context_line":"        self.assertIn(project_id, members)"},{"line_number":654,"context_line":"        # FIXME: This should eventually respect tenancy when glance supports"},{"line_number":655,"context_line":"        # system-scope and exclude members from other projects."},{"line_number":656,"context_line":"        self.assertIn(other_member_project_id, members)"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"    def test_update_image_member(self):"},{"line_number":659,"context_line":"        project_client \u003d self.setup_user_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"2ef61f75_8d6d2864","line":656,"in_reply_to":"e211ee9b_f612ec79","updated":"2021-03-03 23:39:34.000000000","message":"Yep - in other words, pretty much what we test in ProjectMemberTests.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":677,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":678,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":679,"context_line":"                        member_id\u003dself.persona.credentials.project_id,"},{"line_number":680,"context_line":"                        status\u003d\u0027rejected\u0027)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        # Create another shared image in a separate project (not the persona"},{"line_number":683,"context_line":"        # user\u0027s project)."}],"source_content_type":"text/x-python","patch_set":12,"id":"75f05a31_05404a2e","line":680,"updated":"2021-03-03 21:17:14.000000000","message":"How can one user both accept and reject an image? I would have expected the accept to do something such that the reject won\u0027t work after that.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"91733deacb8f137d401d464acb8b3cc5e2776445","unresolved":true,"context_lines":[{"line_number":677,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":678,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":679,"context_line":"                        member_id\u003dself.persona.credentials.project_id,"},{"line_number":680,"context_line":"                        status\u003d\u0027rejected\u0027)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        # Create another shared image in a separate project (not the persona"},{"line_number":683,"context_line":"        # user\u0027s project)."}],"source_content_type":"text/x-python","patch_set":12,"id":"272ff002_4c966fa1","line":680,"in_reply_to":"75f05a31_05404a2e","updated":"2021-03-03 21:26:50.000000000","message":"Okay, I just looked up the API description for this and now I see how this works. A share makes it shared immediately, and the accept/reject thing just controls the visibility. So I guess this means you can accept an image, have it in your list, and then change it to rejected later to exclude it.\n\nThe use of accept/reject made me assume that these were actions with side-effects. But now I get how this works, so this makes sense.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":695,"context_line":"        # system-scope and fail with an appropriate error (e.g., 404). Project"},{"line_number":696,"context_line":"        # users shouldn\u0027t be able to update shared status for shared images in"},{"line_number":697,"context_line":"        # other projects, but here this is possible because the persona is the"},{"line_number":698,"context_line":"        # almighty project-admin."},{"line_number":699,"context_line":"        self.do_request(\u0027update_image_member\u0027,"},{"line_number":700,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":701,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"4ba30685_631850cd","line":698,"updated":"2021-03-03 21:17:14.000000000","message":"This right here is what I\u0027m looking for with these, more so than just \"this shouldn\u0027t happen later\" :)","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":709,"context_line":"        self.do_request(\u0027update_image_member\u0027,"},{"line_number":710,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":711,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":712,"context_line":"                        member_id\u003dmember_project_id, status\u003d\u0027rejected\u0027)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def test_delete_image_member(self):"},{"line_number":715,"context_line":"        # Create a user with authorization on another project."}],"source_content_type":"text/x-python","patch_set":12,"id":"0c194933_e75a0750","line":712,"updated":"2021-03-03 21:17:14.000000000","message":"I guess the same thing here: seems like we\u0027re both accepting and rejecting the same image.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":true,"context_lines":[{"line_number":709,"context_line":"        self.do_request(\u0027update_image_member\u0027,"},{"line_number":710,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":711,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":712,"context_line":"                        member_id\u003dmember_project_id, status\u003d\u0027rejected\u0027)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def test_delete_image_member(self):"},{"line_number":715,"context_line":"        # Create a user with authorization on another project."}],"source_content_type":"text/x-python","patch_set":12,"id":"8c0e2dc4_9782e26c","line":712,"in_reply_to":"0c194933_e75a0750","updated":"2021-03-03 23:39:34.000000000","message":"This is explicitly testing that an administrator can accept and reject images in any project, which should be a system-admin thing in the future.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e023c348c5ea87450b1657a5766b0455ddf87bb","unresolved":true,"context_lines":[{"line_number":709,"context_line":"        self.do_request(\u0027update_image_member\u0027,"},{"line_number":710,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":711,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":712,"context_line":"                        member_id\u003dmember_project_id, status\u003d\u0027rejected\u0027)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"    def test_delete_image_member(self):"},{"line_number":715,"context_line":"        # Create a user with authorization on another project."}],"source_content_type":"text/x-python","patch_set":12,"id":"b56afcc3_b4eb9cc8","line":712,"in_reply_to":"8c0e2dc4_9782e26c","updated":"2021-03-03 23:45:41.000000000","message":"Yeah, my \"same thing\" comment was related to the \"how can we accept and then reject the same image\" thing above, which I resolved for myself by...reading :)","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":749,"context_line":"        self.do_request(\u0027delete_image_member\u0027,"},{"line_number":750,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":751,"context_line":"                        expected_status\u003d204, image_id\u003dimage[\u0027id\u0027],"},{"line_number":752,"context_line":"                        member_id\u003dmember_project_id)"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def test_deactivate_image(self):"},{"line_number":755,"context_line":"        project_id \u003d self.persona.credentials.project_id"}],"source_content_type":"text/x-python","patch_set":12,"id":"438940d9_7f91174d","line":752,"updated":"2021-03-03 21:17:14.000000000","message":"Subtext: \"We, as project admin, shouldn\u0027t be able to delete image membership in projects outside our scope.\"","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        self.do_request(\u0027delete_image_member\u0027,"},{"line_number":750,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":751,"context_line":"                        expected_status\u003d204, image_id\u003dimage[\u0027id\u0027],"},{"line_number":752,"context_line":"                        member_id\u003dmember_project_id)"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def test_deactivate_image(self):"},{"line_number":755,"context_line":"        project_id \u003d self.persona.credentials.project_id"}],"source_content_type":"text/x-python","patch_set":12,"id":"22440855_86d5cb59","line":752,"in_reply_to":"438940d9_7f91174d","updated":"2021-03-03 23:39:34.000000000","message":"Done","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    def test_copy_image(self):"},{"line_number":883,"context_line":"        skip_msg \u003d \u0027Copy image requires multiple glance backends.\u0027"},{"line_number":884,"context_line":"        raise self.skipException(skip_msg)"},{"line_number":885,"context_line":""},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"class ProjectMemberTests(ProjectAdminTests, base.BaseV2ImageTest):"}],"source_content_type":"text/x-python","patch_set":12,"id":"133e95c3_d19295f0","line":884,"updated":"2021-03-03 21:17:14.000000000","message":"This seems out of place in a patch for \"membership, deactivation, and reactivation\" tests.\n\nAlso, we have examples in base tempest for how to detect multiple stores and do copies, when the time comes.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":1260,"context_line":"        image \u003d project_client.image_client_v2.create_image("},{"line_number":1261,"context_line":"            **self.image(visibility\u003d\u0027shared\u0027))"},{"line_number":1262,"context_line":"        self.addCleanup(self.admin_images_client.delete_image, image[\u0027id\u0027])"},{"line_number":1263,"context_line":"        self.do_request(\u0027create_image_member\u0027,"},{"line_number":1264,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":1265,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":1266,"context_line":"                        member\u003dmember_project_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ebb85d9_c8b3d23a","line":1263,"updated":"2021-03-03 21:17:14.000000000","message":"# We, as a regular user, should be able to share our own images with other projects.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":false,"context_lines":[{"line_number":1260,"context_line":"        image \u003d project_client.image_client_v2.create_image("},{"line_number":1261,"context_line":"            **self.image(visibility\u003d\u0027shared\u0027))"},{"line_number":1262,"context_line":"        self.addCleanup(self.admin_images_client.delete_image, image[\u0027id\u0027])"},{"line_number":1263,"context_line":"        self.do_request(\u0027create_image_member\u0027,"},{"line_number":1264,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":1265,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":1266,"context_line":"                        member\u003dmember_project_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"0949b827_76a1eaba","line":1263,"in_reply_to":"9ebb85d9_c8b3d23a","updated":"2021-03-03 23:39:34.000000000","message":"Done","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":1280,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":1281,"context_line":"                        member_id\u003dmember_project_id)"},{"line_number":1282,"context_line":""},{"line_number":1283,"context_line":"        project_client \u003d self.setup_user_client()"},{"line_number":1284,"context_line":"        image \u003d project_client.image_client_v2.create_image("},{"line_number":1285,"context_line":"            **self.image(visibility\u003d\u0027shared\u0027))"},{"line_number":1286,"context_line":"        self.addCleanup(self.admin_images_client.delete_image, image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"b9eae833_313c7959","line":1283,"updated":"2021-03-03 21:17:14.000000000","message":"This second test-in-a-test creates an image in another project, shares it with member_project_id (i.e not us) and makes sure we can\u0027t see the membership, yeah?\n\nHaving all these cases in the same test functions when they\u0027re not related can be confusing.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":true,"context_lines":[{"line_number":1280,"context_line":"                        expected_status\u003d200, image_id\u003dimage[\u0027id\u0027],"},{"line_number":1281,"context_line":"                        member_id\u003dmember_project_id)"},{"line_number":1282,"context_line":""},{"line_number":1283,"context_line":"        project_client \u003d self.setup_user_client()"},{"line_number":1284,"context_line":"        image \u003d project_client.image_client_v2.create_image("},{"line_number":1285,"context_line":"            **self.image(visibility\u003d\u0027shared\u0027))"},{"line_number":1286,"context_line":"        self.addCleanup(self.admin_images_client.delete_image, image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"b63bae13_c3dcbb95","line":1283,"in_reply_to":"b9eae833_313c7959","updated":"2021-03-03 23:39:34.000000000","message":"The initial though was to keep the base class simple and generic so the test names are applicable to each persona.\n\nBut yeah, the trade of is that the tests become bloated and overloaded for multiple cases :(","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":1315,"context_line":"                               expected_status\u003d200, image_id\u003dimage[\u0027id\u0027])"},{"line_number":1316,"context_line":"        members \u003d set(m[\u0027member_id\u0027] for m in resp[\u0027members\u0027])"},{"line_number":1317,"context_line":"        # Make sure this user (persona) can\u0027t view members of an image other"},{"line_number":1318,"context_line":"        # than themselves."},{"line_number":1319,"context_line":"        self.assertIn(project_id, members)"},{"line_number":1320,"context_line":"        self.assertNotIn(other_member_project_id, members)"},{"line_number":1321,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"50bb1541_91761d8e","line":1318,"updated":"2021-03-03 21:17:14.000000000","message":"Ack, assume this is the answer to my question above, when project admins lose their $DEITY powers...","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":1359,"context_line":"            image[\u0027id\u0027], member\u003dmember_project_id)"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        # Make sure the persona user can\u0027t accept images for other projects"},{"line_number":1362,"context_line":"        # they are not a member of."},{"line_number":1363,"context_line":"        self.do_request(\u0027update_image_member\u0027,"},{"line_number":1364,"context_line":"                        client\u003dself.persona.image_member_client_v2,"},{"line_number":1365,"context_line":"                        expected_status\u003dexceptions.NotFound,"}],"source_content_type":"text/x-python","patch_set":12,"id":"a455bac7_eee631dd","line":1362,"updated":"2021-03-03 21:17:14.000000000","message":"This one is much easier to follow with the comments like this, thanks.\n\nStill super confused about how we can both accept and reject an image :)","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":1500,"context_line":"        self.addCleanup(self.admin_images_client.delete_image, image[\u0027id\u0027])"},{"line_number":1501,"context_line":"        project_client.image_client_v2.store_image_file(image[\u0027id\u0027],"},{"line_number":1502,"context_line":"                                                        image_data)"},{"line_number":1503,"context_line":"        project_client.image_client_v2.deactivate_image(image[\u0027id\u0027])"},{"line_number":1504,"context_line":"        self.do_request(\u0027reactivate_image\u0027, expected_status\u003d204,"},{"line_number":1505,"context_line":"                        image_id\u003dimage[\u0027id\u0027])"},{"line_number":1506,"context_line":"        resp \u003d self.client.show_image(image_id\u003dimage[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"c8e4fda3_fe5f233e","line":1503,"updated":"2021-03-03 21:17:14.000000000","message":"I\u0027d validate that this actually went to deactivated here just to make sure we actually did it.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":false,"context_lines":[{"line_number":1500,"context_line":"        self.addCleanup(self.admin_images_client.delete_image, image[\u0027id\u0027])"},{"line_number":1501,"context_line":"        project_client.image_client_v2.store_image_file(image[\u0027id\u0027],"},{"line_number":1502,"context_line":"                                                        image_data)"},{"line_number":1503,"context_line":"        project_client.image_client_v2.deactivate_image(image[\u0027id\u0027])"},{"line_number":1504,"context_line":"        self.do_request(\u0027reactivate_image\u0027, expected_status\u003d204,"},{"line_number":1505,"context_line":"                        image_id\u003dimage[\u0027id\u0027])"},{"line_number":1506,"context_line":"        resp \u003d self.client.show_image(image_id\u003dimage[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"889596ad_87aaa8fb","line":1503,"in_reply_to":"c8e4fda3_fe5f233e","updated":"2021-03-03 23:39:34.000000000","message":"Done","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":1504,"context_line":"        self.do_request(\u0027reactivate_image\u0027, expected_status\u003d204,"},{"line_number":1505,"context_line":"                        image_id\u003dimage[\u0027id\u0027])"},{"line_number":1506,"context_line":"        resp \u003d self.client.show_image(image_id\u003dimage[\u0027id\u0027])"},{"line_number":1507,"context_line":"        self.assertTrue(resp[\u0027status\u0027] \u003d\u003d \u0027active\u0027)"},{"line_number":1508,"context_line":""},{"line_number":1509,"context_line":"        # Create a shared image within the persona user\u0027s project and make sure"},{"line_number":1510,"context_line":"        # we can reactivate it."}],"source_content_type":"text/x-python","patch_set":12,"id":"ebc93ac2_0a991a8f","line":1507,"updated":"2021-03-03 21:17:14.000000000","message":"So this means regular users _can_ deactivate and reactivate images...","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e023c348c5ea87450b1657a5766b0455ddf87bb","unresolved":true,"context_lines":[{"line_number":1504,"context_line":"        self.do_request(\u0027reactivate_image\u0027, expected_status\u003d204,"},{"line_number":1505,"context_line":"                        image_id\u003dimage[\u0027id\u0027])"},{"line_number":1506,"context_line":"        resp \u003d self.client.show_image(image_id\u003dimage[\u0027id\u0027])"},{"line_number":1507,"context_line":"        self.assertTrue(resp[\u0027status\u0027] \u003d\u003d \u0027active\u0027)"},{"line_number":1508,"context_line":""},{"line_number":1509,"context_line":"        # Create a shared image within the persona user\u0027s project and make sure"},{"line_number":1510,"context_line":"        # we can reactivate it."}],"source_content_type":"text/x-python","patch_set":12,"id":"6e31af24_10577a02","line":1507,"in_reply_to":"383a0da4_c88e2c56","updated":"2021-03-03 23:45:41.000000000","message":"Yeah, just confirming that it\u0027s not only what we expect, but what is true today before changes.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"168f47263d6a2da47172f30bd4fe7318ef832d4f","unresolved":true,"context_lines":[{"line_number":1504,"context_line":"        self.do_request(\u0027reactivate_image\u0027, expected_status\u003d204,"},{"line_number":1505,"context_line":"                        image_id\u003dimage[\u0027id\u0027])"},{"line_number":1506,"context_line":"        resp \u003d self.client.show_image(image_id\u003dimage[\u0027id\u0027])"},{"line_number":1507,"context_line":"        self.assertTrue(resp[\u0027status\u0027] \u003d\u003d \u0027active\u0027)"},{"line_number":1508,"context_line":""},{"line_number":1509,"context_line":"        # Create a shared image within the persona user\u0027s project and make sure"},{"line_number":1510,"context_line":"        # we can reactivate it."}],"source_content_type":"text/x-python","patch_set":12,"id":"383a0da4_c88e2c56","line":1507,"in_reply_to":"ebc93ac2_0a991a8f","updated":"2021-03-03 23:39:34.000000000","message":"Yes - case #3 from IRC I believe.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"671073067f5b3b78a82205024b0bb8da6e54f238","unresolved":true,"context_lines":[{"line_number":2119,"context_line":"        # Make sure the user can\u0027t reactivate public images."},{"line_number":2120,"context_line":"        self.do_request(\u0027reactivate_image\u0027,"},{"line_number":2121,"context_line":"                        expected_status\u003dexceptions.Forbidden,"},{"line_number":2122,"context_line":"                        image_id\u003dimage[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"b5a9fe87_a736be98","line":2122,"updated":"2021-03-03 21:17:14.000000000","message":"By the time we get to this, it surely seems like we\u0027ve duplicated the same scenarios over and over, and could put these in a base class with separate \"should we be able to change these things\" assertions. But, re-combining all of that is a lot of work at this point.","commit_id":"f23f2b76d856111e68d745b9474dd8f0a83167a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e023c348c5ea87450b1657a5766b0455ddf87bb","unresolved":true,"context_lines":[{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    def test_copy_image(self):"},{"line_number":890,"context_line":"        skip_msg \u003d \u0027Copy image requires multiple glance backends.\u0027"},{"line_number":891,"context_line":"        raise self.skipException(skip_msg)"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":""},{"line_number":894,"context_line":"class ProjectMemberTests(ProjectAdminTests, base.BaseV2ImageTest):"}],"source_content_type":"text/x-python","patch_set":13,"id":"a5862a4b_39e7a7b4","line":891,"updated":"2021-03-03 23:45:41.000000000","message":"Still seems like this \"test\" should come out, but not a big deal.","commit_id":"3fda3747466467b08bda61eeac647946f7a22b93"}]}
