)]}'
{"doc/source/contributor/rbac-testing.rst":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b0a02ce3c99af369e20054f1cbc7ab58e094cf7e","unresolved":true,"context_lines":[{"line_number":8,"context_line":"   later patches, but it is also broad in nature attempting to provide"},{"line_number":9,"context_line":"   context to aid in review."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The Role Based Access control testing is a minor departure from the ironic"},{"line_number":12,"context_line":"standard pattern of entirely python based unit testing. In part this was done"},{"line_number":13,"context_line":"for purposes of speed and to keep the declaration of the test context."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1bcbf521_44ed2ec8","line":11,"updated":"2021-02-11 22:45:35.000000000","message":"nit: s/ironic/Ironic, also on line 49 (in 404 description)","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e113c70b1e1c9ff7cd02ad5d75e814e6f383d09f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"   later patches, but it is also broad in nature attempting to provide"},{"line_number":9,"context_line":"   context to aid in review."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The Role Based Access control testing is a minor departure from the ironic"},{"line_number":12,"context_line":"standard pattern of entirely python based unit testing. In part this was done"},{"line_number":13,"context_line":"for purposes of speed and to keep the declaration of the test context."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"28e81658_bfac16a2","line":11,"in_reply_to":"1bcbf521_44ed2ec8","updated":"2021-02-12 14:52:37.000000000","message":"Done","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b0a02ce3c99af369e20054f1cbc7ab58e094cf7e","unresolved":true,"context_lines":[{"line_number":44,"context_line":"* 201 - Created - This is databaes driven interaction. These are rare."},{"line_number":45,"context_line":"* 204 - Accepted - This is a database driven interaction. These are rare."},{"line_number":46,"context_line":"* 403 - Forbidden - This tells us the policy worked as expected where"},{"line_number":47,"context_line":"        access sgiydk gave veeb debued,"},{"line_number":48,"context_line":"* 404 - NotFound - This is typically when objects were not found. Before"},{"line_number":49,"context_line":"        ironic becomes scope aware, these are generally only in the drivers"},{"line_number":50,"context_line":"        API endpoint\u0027s behavior. In System scope aware Project scoped"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1328f1e9_42f570e1","line":47,"updated":"2021-02-11 22:45:35.000000000","message":"This is gibberish? I\u0027m not sure what was intended here.","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9f5d097e6f52b8e1a44068860a0a0a025c4dfab1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* 201 - Created - This is databaes driven interaction. These are rare."},{"line_number":45,"context_line":"* 204 - Accepted - This is a database driven interaction. These are rare."},{"line_number":46,"context_line":"* 403 - Forbidden - This tells us the policy worked as expected where"},{"line_number":47,"context_line":"        access sgiydk gave veeb debued,"},{"line_number":48,"context_line":"* 404 - NotFound - This is typically when objects were not found. Before"},{"line_number":49,"context_line":"        ironic becomes scope aware, these are generally only in the drivers"},{"line_number":50,"context_line":"        API endpoint\u0027s behavior. In System scope aware Project scoped"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ef10bf5f_c46230b8","line":47,"in_reply_to":"1328f1e9_42f570e1","updated":"2021-02-11 22:46:45.000000000","message":"Done","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b0a02ce3c99af369e20054f1cbc7ab58e094cf7e","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Some general rules apply"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Admins can do things"},{"line_number":79,"context_line":"* Members can do some things, but not everything"},{"line_number":80,"context_line":"* Readers can always read, but as we get into sensitive data later on"},{"line_number":81,"context_line":"  such as fields containing infrastucture internal addresses, these values"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7929fcca_9e75472d","line":78,"updated":"2021-02-11 22:45:35.000000000","message":"all things? Omitting \u0027everything\u0027 or \u0027all things\u0027 here implies to me there are things even admins can\u0027t do...","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e113c70b1e1c9ff7cd02ad5d75e814e6f383d09f","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Some general rules apply"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Admins can do things"},{"line_number":79,"context_line":"* Members can do some things, but not everything"},{"line_number":80,"context_line":"* Readers can always read, but as we get into sensitive data later on"},{"line_number":81,"context_line":"  such as fields containing infrastucture internal addresses, these values"}],"source_content_type":"text/x-rst","patch_set":15,"id":"d078ae83_9e827be5","line":78,"in_reply_to":"7929fcca_9e75472d","updated":"2021-02-12 14:52:37.000000000","message":"i was meaning broadly that admins can do things, but I didn\u0027t constrain that for owners/lessee admins. Updating.","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3f70f3b71cd0df828540407508216dbf9cb13403","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Role Based Acces Control - Testing"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":".. todo: This entire file is being added in to provide context for"}],"source_content_type":"text/x-rst","patch_set":16,"id":"fb8b6f04_699886c5","line":2,"updated":"2021-02-12 12:44:48.000000000","message":"Access","commit_id":"606549c1c95b3f2c611b8bd5771e19dadeed3995"}],"ironic/tests/unit/api/test_acl.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            rpcapi.ConductorAPI, \u0027get_topic_for\u0027, autospec\u003dTrue)"},{"line_number":169,"context_line":"        self.mock_topic \u003d topic.start()"},{"line_number":170,"context_line":"        self.mock_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":171,"context_line":"        self.addCleanup(topic.stop)"},{"line_number":172,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":173,"context_line":"                                   autospec\u003dTrue)"},{"line_number":174,"context_line":"        self.mock_random_topic \u003d rtopic.start()"}],"source_content_type":"text/x-python","patch_set":6,"id":"56f68966_d5ab0e26","line":171,"updated":"2021-01-11 17:41:48.000000000","message":"This mocking style is very hard to track when the file is large. I\u0027d rather have it on the class level with something like:\n\n @mock.patch.object(rpcapi.ConductorAPI, \u0027get_topic_for\u0027, mock.Mock(side_effect\u003dexception.TemporaryFailure))\n class TestACLBase..","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            rpcapi.ConductorAPI, \u0027get_topic_for\u0027, autospec\u003dTrue)"},{"line_number":169,"context_line":"        self.mock_topic \u003d topic.start()"},{"line_number":170,"context_line":"        self.mock_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":171,"context_line":"        self.addCleanup(topic.stop)"},{"line_number":172,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":173,"context_line":"                                   autospec\u003dTrue)"},{"line_number":174,"context_line":"        self.mock_random_topic \u003d rtopic.start()"}],"source_content_type":"text/x-python","patch_set":6,"id":"591c2041_33541254","line":171,"in_reply_to":"046cd6e8_5100f307","updated":"2021-01-18 04:47:03.000000000","message":"mock decorators are nice, but this pattern is common enough. Also this particular mock is to just switch something off, not to have test-specific responses or asserts.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de195521c374dd1bea89b71548f51500c640c331","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            rpcapi.ConductorAPI, \u0027get_topic_for\u0027, autospec\u003dTrue)"},{"line_number":169,"context_line":"        self.mock_topic \u003d topic.start()"},{"line_number":170,"context_line":"        self.mock_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":171,"context_line":"        self.addCleanup(topic.stop)"},{"line_number":172,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":173,"context_line":"                                   autospec\u003dTrue)"},{"line_number":174,"context_line":"        self.mock_random_topic \u003d rtopic.start()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ae6c2d1d_d102d93d","line":171,"in_reply_to":"56f68966_d5ab0e26","updated":"2021-01-11 20:05:10.000000000","message":"This style plays nicely with ddt. Class/Method decorators unfortunately do not play nicely with ddt.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5bc34a1525a13034af9ae7faacdae17652a07e06","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            rpcapi.ConductorAPI, \u0027get_topic_for\u0027, autospec\u003dTrue)"},{"line_number":169,"context_line":"        self.mock_topic \u003d topic.start()"},{"line_number":170,"context_line":"        self.mock_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":171,"context_line":"        self.addCleanup(topic.stop)"},{"line_number":172,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":173,"context_line":"                                   autospec\u003dTrue)"},{"line_number":174,"context_line":"        self.mock_random_topic \u003d rtopic.start()"}],"source_content_type":"text/x-python","patch_set":6,"id":"046cd6e8_5100f307","line":171,"in_reply_to":"ae6c2d1d_d102d93d","updated":"2021-01-13 10:49:09.000000000","message":"This makes me even more wonder if the ddt path is right to be honest.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":209,"context_line":"            response \u003d self.get_json("},{"line_number":210,"context_line":"                path,"},{"line_number":211,"context_line":"                headers\u003drheaders,"},{"line_number":212,"context_line":"                expect_errors\u003dexpect_errors,"},{"line_number":213,"context_line":"                extra_environ\u003dself.environ,"},{"line_number":214,"context_line":"                path_prefix\u003d\u0027\u0027"},{"line_number":215,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"0d63efcc_599fc73e","line":212,"updated":"2021-01-18 04:47:03.000000000","message":"This change needs to be updated to always set expect_errors\u003dTrue, see [1]\n\n[1] https://review.opendev.org/c/openstack/ironic/+/767445/4/ironic/tests/unit/api/test_acl.py#112","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":217,"context_line":"            response \u003d self.put_json("},{"line_number":218,"context_line":"                path,"},{"line_number":219,"context_line":"                headers\u003drheaders,"},{"line_number":220,"context_line":"                expect_errors\u003dexpect_errors,"},{"line_number":221,"context_line":"                extra_environ\u003dself.environ,"},{"line_number":222,"context_line":"                path_prefix\u003d\u0027\u0027,"},{"line_number":223,"context_line":"                params\u003dbody"}],"source_content_type":"text/x-python","patch_set":6,"id":"3088d50e_960d068e","line":220,"range":{"start_line":220,"start_character":16,"end_line":220,"end_character":43},"updated":"2021-01-18 04:47:03.000000000","message":"expect_errors\u003dTrue","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":226,"context_line":"            response \u003d self.post_json("},{"line_number":227,"context_line":"                path,"},{"line_number":228,"context_line":"                headers\u003drheaders,"},{"line_number":229,"context_line":"                expect_errors\u003dexpect_errors,"},{"line_number":230,"context_line":"                extra_environ\u003dself.environ,"},{"line_number":231,"context_line":"                path_prefix\u003d\u0027\u0027,"},{"line_number":232,"context_line":"                params\u003dbody"}],"source_content_type":"text/x-python","patch_set":6,"id":"913a03c3_c441196e","line":229,"range":{"start_line":229,"start_character":16,"end_line":229,"end_character":43},"updated":"2021-01-18 04:47:03.000000000","message":"expect_errors\u003dTrue","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":236,"context_line":"                path,"},{"line_number":237,"context_line":"                params\u003dbody,"},{"line_number":238,"context_line":"                headers\u003drheaders,"},{"line_number":239,"context_line":"                expect_errors\u003dexpect_errors,"},{"line_number":240,"context_line":"                extra_environ\u003dself.environ,"},{"line_number":241,"context_line":"                path_prefix\u003d\u0027\u0027"},{"line_number":242,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"c83d42e3_b00bbf9a","line":239,"range":{"start_line":239,"start_character":16,"end_line":239,"end_character":43},"updated":"2021-01-18 04:47:03.000000000","message":"expect_errors\u003dTrue","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        if assert_status:"},{"line_number":255,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if assert_not_status:"},{"line_number":258,"context_line":"            self.assertNotEqual(assert_not_status, response.status_int)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":6,"id":"785b44cb_90610078","line":257,"updated":"2021-01-11 17:41:48.000000000","message":"-1 to this, let\u0027s be precise with statuses (even if it\u0027s 503)","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de195521c374dd1bea89b71548f51500c640c331","unresolved":true,"context_lines":[{"line_number":254,"context_line":"        if assert_status:"},{"line_number":255,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if assert_not_status:"},{"line_number":258,"context_line":"            self.assertNotEqual(assert_not_status, response.status_int)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":6,"id":"b6b25eb0_8c313b8d","line":257,"in_reply_to":"785b44cb_90610078","updated":"2021-01-11 20:05:10.000000000","message":"I know a number of people want to be do full decoupled testing. So in other word, somehow source the same yaml file for external testing. This would effectively torpedo this eventual use case as with our mocked conductor we are going to return 503s. Could a an \"assert_access_denied\" make more sense, since the purpose of the 403 or not 403 check is to that end. Granted, there is also 401, and we actually have a case where we return a 401.\n\nAll that being said, the assert not/assert back and forth is... frustrating to at least hammer out.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5df25f32733e632f598ac76d4a6b1e8788d339ce","unresolved":true,"context_lines":[{"line_number":254,"context_line":"        if assert_status:"},{"line_number":255,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if assert_not_status:"},{"line_number":258,"context_line":"            self.assertNotEqual(assert_not_status, response.status_int)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":6,"id":"d6d4dfd6_92dea22c","line":257,"in_reply_to":"a80218df_d1554ced","updated":"2021-01-14 21:22:10.000000000","message":"I\u0027m not really sure that is a good path, at least when considering in the bigger picture and the effort that it has already taken to get to this point.  While I agree we are re-inventing a little bit, I don\u0027t see it as a big deal nor do I see much more possibly having to be added in terms of checking/ensuring policy compliance. Especially given that we will now end up now checking the specific value even if we don\u0027t get the precisely expected value, and thus the yaml can\u0027t be easily re-used elsewhere against a live deployment. The format and use model seem much more useful instead of just the bulk/copy and modification of testing. At this point, it would likely be a minimum of another week to be at the same point of a change that can pass CI, where the overall effort related to this is another ?13? patches and possibly thousands of more tests that will need to be tested, and with any luck the same YAML could be re-used in several of those major tests as-is with additional testing data added as we\u0027re able to move forward with each policy group.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5bc34a1525a13034af9ae7faacdae17652a07e06","unresolved":true,"context_lines":[{"line_number":254,"context_line":"        if assert_status:"},{"line_number":255,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if assert_not_status:"},{"line_number":258,"context_line":"            self.assertNotEqual(assert_not_status, response.status_int)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":6,"id":"a80218df_d1554ced","line":257,"in_reply_to":"b6b25eb0_8c313b8d","updated":"2021-01-13 10:49:09.000000000","message":"I sudden suggestion. Let\u0027s revert the switch to ddt. We\u0027ve started reinventing Python\u0027s assert machinery in yaml, at this point it\u0027s saner to copy-paste many small Python methods that call the same function.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":254,"context_line":"        if assert_status:"},{"line_number":255,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if assert_not_status:"},{"line_number":258,"context_line":"            self.assertNotEqual(assert_not_status, response.status_int)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bb14be0c_927088fc","line":257,"in_reply_to":"d6d4dfd6_92dea22c","updated":"2021-01-18 04:47:03.000000000","message":"This was an expedient workaround to avoid the confusion of asserting 503 for unmocked API internals, vs mocking literally everything to return a legitimate 2xx.\n\nThe intent was that the positive and negative access-denied tests would be adjacent in the yaml file, and have test names which make it obvious that these specific tests are for allowed/denied checking. I don\u0027t mind removing assert_not_status and just asserting the actual code, but I do think this mechanism is closer to the actual aim of the tests which use it (does this request get past the policy check).","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        if assert_list_length:"},{"line_number":266,"context_line":"            for root, length in assert_list_length.items():"},{"line_number":267,"context_line":"                items \u003d response[root]"},{"line_number":268,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":269,"context_line":"                self.assertEqual(length, len(items))"}],"source_content_type":"text/x-python","patch_set":6,"id":"f96d7108_5973b181","line":266,"updated":"2021-01-11 17:41:48.000000000","message":"Do we even have a case of returning several lists? Maybe for root endpoint, but a normal collection returns one list.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5df25f32733e632f598ac76d4a6b1e8788d339ce","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        if assert_list_length:"},{"line_number":266,"context_line":"            for root, length in assert_list_length.items():"},{"line_number":267,"context_line":"                items \u003d response[root]"},{"line_number":268,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":269,"context_line":"                self.assertEqual(length, len(items))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fe7e8d40_e6e25aa0","line":266,"in_reply_to":"e175f36f_9c31be82","updated":"2021-01-14 21:22:10.000000000","message":"While yes, but as a generic check to be re-used, we also need to know what key to look with-in since we supply a dictionary body, {\u0027nodes\u0027: [{node1}, {node2}]}\n\nSo hacking on it, it actually makes sense.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de195521c374dd1bea89b71548f51500c640c331","unresolved":true,"context_lines":[{"line_number":263,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        if assert_list_length:"},{"line_number":266,"context_line":"            for root, length in assert_list_length.items():"},{"line_number":267,"context_line":"                items \u003d response[root]"},{"line_number":268,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":269,"context_line":"                self.assertEqual(length, len(items))"}],"source_content_type":"text/x-python","patch_set":6,"id":"e175f36f_9c31be82","line":266,"in_reply_to":"f96d7108_5973b181","updated":"2021-01-11 20:05:10.000000000","message":"I think this was an idea in Steve\u0027s head, the tests he had with this don\u0027t pass at present and are marked to skip.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        if assert_list_length:"},{"line_number":266,"context_line":"            for root, length in assert_list_length.items():"},{"line_number":267,"context_line":"                items \u003d response[root]"},{"line_number":268,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":269,"context_line":"                self.assertEqual(length, len(items))"}],"source_content_type":"text/x-python","patch_set":6,"id":"cfa526ef_4c1ee65f","line":266,"in_reply_to":"fe7e8d40_e6e25aa0","updated":"2021-01-18 04:47:03.000000000","message":"Yes, this is for testing roles which will filter out some records in get-list calls. Its a dict because that is a nice understandable representation in yaml. If the test really actually specifies multiple dict keys then the test will fail, because as you say there is nothing which returns multiple dicts.\n\nAlternatively assert_list_length could be a simple integer, and we infer the root key by choosing the first and only key, but I do like the self-documenting aspect of explicitly naming the root key.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        if assert_list_length:"},{"line_number":266,"context_line":"            for root, length in assert_list_length.items():"},{"line_number":267,"context_line":"                items \u003d response[root]"},{"line_number":268,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":269,"context_line":"                self.assertEqual(length, len(items))"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"75c29187_30dd5eaf","line":267,"range":{"start_line":267,"start_character":24,"end_line":267,"end_character":38},"updated":"2021-01-18 04:47:03.000000000","message":"response.json[root]","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":269,"context_line":"                self.assertEqual(length, len(items))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        print(\u0027response %s\u0027 % response)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":6,"id":"a05f72cb_7e823e53","line":271,"updated":"2021-01-11 17:41:48.000000000","message":"TODO","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"8b9e7301d6b189cbf89f8a4c5b7d029d29a1370c","unresolved":true,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @ddt.file_data(\u0027test_acl_pre_scopes.yaml\u0027)"},{"line_number":234,"context_line":"    @ddt.unpack"},{"line_number":235,"context_line":"    def test_existing(self, **kwargs):"},{"line_number":236,"context_line":"        self._check_skip(**kwargs)"},{"line_number":237,"context_line":"        self._test_request(**kwargs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"317dd50a_152636cd","line":235,"range":{"start_line":235,"start_character":8,"end_line":235,"end_character":21},"updated":"2021-01-18 04:55:49.000000000","message":"this should also be renamed to test_acl_pre_scopes.\n\nAlternatively all these classes can have one test_policy method.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4f2df2ea2e57d4797dce178ec66172f46157c108","unresolved":true,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @ddt.file_data(\u0027test_acl_pre_scopes.yaml\u0027)"},{"line_number":234,"context_line":"    @ddt.unpack"},{"line_number":235,"context_line":"    def test_existing(self, **kwargs):"},{"line_number":236,"context_line":"        self._check_skip(**kwargs)"},{"line_number":237,"context_line":"        self._test_request(**kwargs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"d208ec54_3fedfd40","line":235,"range":{"start_line":235,"start_character":8,"end_line":235,"end_character":21},"in_reply_to":"317dd50a_152636cd","updated":"2021-01-19 16:19:08.000000000","message":"It gets a little weird the further down the rabbit hole, but agree on the method name.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e571f30a466fb97bdba7d2c2e36ad51cb99b0e07","unresolved":true,"context_lines":[{"line_number":83,"context_line":"        rheaders \u003d {"},{"line_number":84,"context_line":"            \u0027X-OpenStack-Ironic-API-Version\u0027: version"},{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        print(\u0027API ACL Testing Path %s %s\u0027 % (method, path))"},{"line_number":87,"context_line":"        if headers:"},{"line_number":88,"context_line":"            for k, v in headers.items():"},{"line_number":89,"context_line":"                rheaders[k] \u003d v.format(**self.format_data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"4dfd1ef8_f94ea4fc","line":86,"updated":"2021-01-21 01:50:36.000000000","message":"These prints should be deleted, or moved to the current WIP change","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        rheaders \u003d {"},{"line_number":84,"context_line":"            \u0027X-OpenStack-Ironic-API-Version\u0027: version"},{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        print(\u0027API ACL Testing Path %s %s\u0027 % (method, path))"},{"line_number":87,"context_line":"        if headers:"},{"line_number":88,"context_line":"            for k, v in headers.items():"},{"line_number":89,"context_line":"                rheaders[k] \u003d v.format(**self.format_data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"75d68d43_bb236be1","line":86,"in_reply_to":"4dfd1ef8_f94ea4fc","updated":"2021-01-29 23:17:45.000000000","message":"Discussed this in irc ?last? week. Keeping these around to aid in development and troubleshooting of tests as we do this in other tests as well.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e571f30a466fb97bdba7d2c2e36ad51cb99b0e07","unresolved":true,"context_lines":[{"line_number":155,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":156,"context_line":"                self.assertEqual(length, len(items))"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        print(\u0027ACL test response %s\u0027 % response)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":12,"id":"b7d9e2c0_e4f07596","line":158,"updated":"2021-01-21 01:50:36.000000000","message":"print","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                self.assertIsInstance(items, list)"},{"line_number":156,"context_line":"                self.assertEqual(length, len(items))"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        print(\u0027ACL test response %s\u0027 % response)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":12,"id":"decb538e_c2054e49","line":158,"in_reply_to":"b7d9e2c0_e4f07596","updated":"2021-01-29 23:17:45.000000000","message":"Discussed this in irc ?last? week. Keeping these around to aid in development and troubleshooting of tests as we do this in other tests as well.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b0a02ce3c99af369e20054f1cbc7ab58e094cf7e","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        # in troubleshooting ACL testing. This is a pattern"},{"line_number":88,"context_line":"        # followed in API unit testing in ironic, and"},{"line_number":89,"context_line":"        # really does help."},{"line_number":90,"context_line":"        print(\u0027API ACL Testing Path %s %s\u0027 % (method, path))"},{"line_number":91,"context_line":"        if headers:"},{"line_number":92,"context_line":"            for k, v in headers.items():"},{"line_number":93,"context_line":"                rheaders[k] \u003d v.format(**self.format_data)"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa5780cf_74532447","line":90,"updated":"2021-02-11 22:45:35.000000000","message":"Is there no actual supported way to log from a test in TestTools aside from a print?\n\n[fifteen minutes later]\nNo, no there isn\u0027t. Not that I can tell, anyway.","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3f70f3b71cd0df828540407508216dbf9cb13403","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        topic \u003d mock.patch.object("},{"line_number":49,"context_line":"            rpcapi.ConductorAPI, \u0027get_topic_for\u0027, autospec\u003dTrue)"},{"line_number":50,"context_line":"        self.mock_topic \u003d topic.start()"},{"line_number":51,"context_line":"        self.mock_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":52,"context_line":"        self.addCleanup(topic.stop)"},{"line_number":53,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":54,"context_line":"                                   autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":16,"id":"6c787dfb_4d3f6c53","line":51,"updated":"2021-02-12 12:44:48.000000000","message":"A thought: maybe use a new (test-only) status code (I\u0027m voting for 418, obviously)?","commit_id":"606549c1c95b3f2c611b8bd5771e19dadeed3995"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e113c70b1e1c9ff7cd02ad5d75e814e6f383d09f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        topic \u003d mock.patch.object("},{"line_number":49,"context_line":"            rpcapi.ConductorAPI, \u0027get_topic_for\u0027, autospec\u003dTrue)"},{"line_number":50,"context_line":"        self.mock_topic \u003d topic.start()"},{"line_number":51,"context_line":"        self.mock_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":52,"context_line":"        self.addCleanup(topic.stop)"},{"line_number":53,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":54,"context_line":"                                   autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1d5756ce_a7ffc6d3","line":51,"in_reply_to":"6c787dfb_4d3f6c53","updated":"2021-02-12 14:52:37.000000000","message":"So the intermediate layers won\u0027t let us return non-standard codes :\\  Tried with the teapot response patch. But open to doing it once we get way down the patch chain to reduce rebase risks","commit_id":"606549c1c95b3f2c611b8bd5771e19dadeed3995"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3f70f3b71cd0df828540407508216dbf9cb13403","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rtopic \u003d mock.patch.object(rpcapi.ConductorAPI, \u0027get_random_topic\u0027,"},{"line_number":54,"context_line":"                                   autospec\u003dTrue)"},{"line_number":55,"context_line":"        self.mock_random_topic \u003d rtopic.start()"},{"line_number":56,"context_line":"        self.mock_random_topic.side_effect \u003d exception.TemporaryFailure"},{"line_number":57,"context_line":"        self.addCleanup(rtopic.stop)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _make_app(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ffaed4d3_eff97ea0","line":56,"updated":"2021-02-12 12:44:48.000000000","message":"ditto","commit_id":"606549c1c95b3f2c611b8bd5771e19dadeed3995"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3f70f3b71cd0df828540407508216dbf9cb13403","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        # NOTE(TheJulia): Logging the test request to aid"},{"line_number":87,"context_line":"        # in troubleshooting ACL testing. This is a pattern"},{"line_number":88,"context_line":"        # followed in API unit testing in ironic, and"},{"line_number":89,"context_line":"        # really does help."},{"line_number":90,"context_line":"        print(\u0027API ACL Testing Path %s %s\u0027 % (method, path))"},{"line_number":91,"context_line":"        if headers:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba9566ef_f93702da","line":88,"updated":"2021-02-12 12:44:48.000000000","message":"I don\u0027t think we really print in unit tests. I guess the problem here are poorly generated test names? I think we should fix that rather than rely on printing..","commit_id":"606549c1c95b3f2c611b8bd5771e19dadeed3995"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e113c70b1e1c9ff7cd02ad5d75e814e6f383d09f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        # NOTE(TheJulia): Logging the test request to aid"},{"line_number":87,"context_line":"        # in troubleshooting ACL testing. This is a pattern"},{"line_number":88,"context_line":"        # followed in API unit testing in ironic, and"},{"line_number":89,"context_line":"        # really does help."},{"line_number":90,"context_line":"        print(\u0027API ACL Testing Path %s %s\u0027 % (method, path))"},{"line_number":91,"context_line":"        if headers:"}],"source_content_type":"text/x-python","patch_set":16,"id":"69cdc8ae_6b5d8682","line":88,"in_reply_to":"ba9566ef_f93702da","updated":"2021-02-12 14:52:37.000000000","message":"It is actually for content debugging. Most of the time to make sure the right data is being sent and being able to validate it. The output that is, which is exactly what our existing api tests do, we just log a little more here. We can at least remove them later on.","commit_id":"606549c1c95b3f2c611b8bd5771e19dadeed3995"}],"ironic/tests/unit/api/test_acl_existing.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":1,"context_line":"values:"},{"line_number":2,"context_line":"  # fake skipped test to define references to user tokens etc"},{"line_number":3,"context_line":"  skip: true"},{"line_number":4,"context_line":"  admin_headers: \u0026admin_headers"},{"line_number":5,"context_line":"    X-Auth-Token: \u0027{admin_token}\u0027"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"6d52d96b_54c9f9c6","line":2,"updated":"2021-01-11 17:41:48.000000000","message":"nit: I\u0027d rather move all tests under \"tests\" key","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"values:"},{"line_number":2,"context_line":"  # fake skipped test to define references to user tokens etc"},{"line_number":3,"context_line":"  skip: true"},{"line_number":4,"context_line":"  admin_headers: \u0026admin_headers"},{"line_number":5,"context_line":"    X-Auth-Token: \u0027{admin_token}\u0027"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"4ee1051f_fc5b5bff","line":2,"in_reply_to":"6d52d96b_54c9f9c6","updated":"2021-01-18 04:47:03.000000000","message":"Unfortunately ddt only consumes yaml in this format, and yaml based test data is the only way to have meaningful test names.\n\nIf you really don\u0027t want a skipped fake test to define anchors to frequently used values, the anchors could be moved to the first test which needs them (but I think this is tidier)","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":2001,"context_line":"# These endpoints basically fall outside of the policy testing matrix,"},{"line_number":2002,"context_line":"# however these should still be listed and normal states checked."},{"line_number":2003,"context_line":""},{"line_number":2004,"context_line":"utility_lookup_normally_denied:"},{"line_number":2005,"context_line":"  path: \u0027/v1/lookup?node_uuid\u003d{node_ident}\u0027"},{"line_number":2006,"context_line":"  method: get"},{"line_number":2007,"context_line":"  headers: *admin_headers"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7329bd67_9714cebd","line":2004,"updated":"2021-01-11 17:41:48.000000000","message":"Why is it normal?","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":2004,"context_line":"utility_lookup_normally_denied:"},{"line_number":2005,"context_line":"  path: \u0027/v1/lookup?node_uuid\u003d{node_ident}\u0027"},{"line_number":2006,"context_line":"  method: get"},{"line_number":2007,"context_line":"  headers: *admin_headers"},{"line_number":2008,"context_line":"  assert_status: 403"},{"line_number":2009,"context_line":""},{"line_number":2010,"context_line":"utility_heartbeat_normally_denied:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"744e5ba4_489ec515","line":2007,"updated":"2021-01-11 17:41:48.000000000","message":"Lookup never has credentials","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de195521c374dd1bea89b71548f51500c640c331","unresolved":true,"context_lines":[{"line_number":2004,"context_line":"utility_lookup_normally_denied:"},{"line_number":2005,"context_line":"  path: \u0027/v1/lookup?node_uuid\u003d{node_ident}\u0027"},{"line_number":2006,"context_line":"  method: get"},{"line_number":2007,"context_line":"  headers: *admin_headers"},{"line_number":2008,"context_line":"  assert_status: 403"},{"line_number":2009,"context_line":""},{"line_number":2010,"context_line":"utility_heartbeat_normally_denied:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"e9a04c0d_18205084","line":2007,"in_reply_to":"744e5ba4_489ec515","updated":"2021-01-11 20:05:10.000000000","message":"True, I guess my purpose with this and the other was to ensure that oslo_policy is not somehow magically granting privileges on these endpoints and that the behavior is unexpected.","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"051462bb488db5f5ce1281028f4671b0612a9fa9","unresolved":true,"context_lines":[{"line_number":2004,"context_line":"utility_lookup_normally_denied:"},{"line_number":2005,"context_line":"  path: \u0027/v1/lookup?node_uuid\u003d{node_ident}\u0027"},{"line_number":2006,"context_line":"  method: get"},{"line_number":2007,"context_line":"  headers: *admin_headers"},{"line_number":2008,"context_line":"  assert_status: 403"},{"line_number":2009,"context_line":""},{"line_number":2010,"context_line":"utility_heartbeat_normally_denied:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"23bc4aa1_e0e7b596","line":2007,"in_reply_to":"e9a04c0d_18205084","updated":"2021-01-18 04:47:03.000000000","message":"Maybe these tests should be moved to test_acl_basic.yaml","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"82f665f895ff2e3739ba220694d2c58de1ff0d51","unresolved":false,"context_lines":[{"line_number":2010,"context_line":"utility_heartbeat_normally_denied:"},{"line_number":2011,"context_line":"  path: \u0027/v1/heartbeat/{node_ident}\u0027"},{"line_number":2012,"context_line":"  method: post"},{"line_number":2013,"context_line":"  headers: *admin_headers"},{"line_number":2014,"context_line":"  body:"},{"line_number":2015,"context_line":"    callback_url: \"http://localhost/v1/callback\""},{"line_number":2016,"context_line":"    agent_version: \"4.5.0\""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"4c481d17_e5f8bb35","line":2013,"updated":"2021-01-11 17:41:48.000000000","message":"ditto","commit_id":"7f89c332c0bb7864f80a123db8c9c5b9d3c90184"}],"ironic/tests/unit/api/test_acl_pre_scopes.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":12,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":13,"context_line":"    X-Roles: member"},{"line_number":14,"context_line":"    X-Project-Name: baremetal"},{"line_number":15,"context_line":"  # Project Scoped Observer Token"},{"line_number":16,"context_line":"  observer_headers: \u0026observer_headers"},{"line_number":17,"context_line":"    X-Auth-Token: \u0027baremetal-observer-token\u0027"},{"line_number":18,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"17375ed0_a2b59129","line":15,"range":{"start_line":15,"start_character":12,"end_line":15,"end_character":13},"updated":"2021-01-18 20:27:40.000000000","message":"nit: scoped* to be consistent with the case used above.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":13,"context_line":"    X-Roles: member"},{"line_number":14,"context_line":"    X-Project-Name: baremetal"},{"line_number":15,"context_line":"  # Project Scoped Observer Token"},{"line_number":16,"context_line":"  observer_headers: \u0026observer_headers"},{"line_number":17,"context_line":"    X-Auth-Token: \u0027baremetal-observer-token\u0027"},{"line_number":18,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"e4b59cdc_3bdea0d6","line":15,"range":{"start_line":15,"start_character":12,"end_line":15,"end_character":13},"in_reply_to":"17375ed0_a2b59129","updated":"2021-01-20 00:12:45.000000000","message":"Done","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    X-Auth-Token: \u0027baremetal-observer-token\u0027"},{"line_number":18,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":19,"context_line":"    X-Project-Name: baremetal"},{"line_number":20,"context_line":"    # TODO(TheJulia): observer shouldn\u0027t require member in the"},{"line_number":21,"context_line":"    # future universe, seems counter to the intent unless observer"},{"line_number":22,"context_line":"    # is auditor, and in this case it explicitly is not."},{"line_number":23,"context_line":"    X-Roles: baremetal_observer"},{"line_number":24,"context_line":"  other_admin_headers: \u0026other_admin_headers"},{"line_number":25,"context_line":"    X-Auth-Token: \u0027other-admin-token\u0027"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0b017d59_e32eef2e","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":56},"updated":"2021-01-18 20:27:40.000000000","message":"If we wanted to re-use observer in keystone, we would need to implement an enhancement in keystone to ensure `keystone-manage boostrap` creates the observer role and ensures it implies reader. If that\u0027s the case, then we would update the X-Roles list as follows:\n\n  X-Roles: \u0027observer,reader`\n\nBut probably a discussion to have across projects to get consensus on what that name should be.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    X-Auth-Token: \u0027baremetal-observer-token\u0027"},{"line_number":18,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":19,"context_line":"    X-Project-Name: baremetal"},{"line_number":20,"context_line":"    # TODO(TheJulia): observer shouldn\u0027t require member in the"},{"line_number":21,"context_line":"    # future universe, seems counter to the intent unless observer"},{"line_number":22,"context_line":"    # is auditor, and in this case it explicitly is not."},{"line_number":23,"context_line":"    X-Roles: baremetal_observer"},{"line_number":24,"context_line":"  other_admin_headers: \u0026other_admin_headers"},{"line_number":25,"context_line":"    X-Auth-Token: \u0027other-admin-token\u0027"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"2ad75911_a5b569eb","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":56},"in_reply_to":"0b017d59_e32eef2e","updated":"2021-01-20 00:12:45.000000000","message":"Observer was always intended to be a read-only user role, but there was massive disagreement regarding reader. I mean we can, but in later versions I\u0027d rather just rename everything reader. That being said! I can strip that entire comment out it seems, it was from earlier on when I was going \"why is  the token misbehaving.\"","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":24,"context_line":"  other_admin_headers: \u0026other_admin_headers"},{"line_number":25,"context_line":"    X-Auth-Token: \u0027other-admin-token\u0027"},{"line_number":26,"context_line":"    X-Project-ID: a1111111111111111111111111111111"},{"line_number":27,"context_line":"    X-Roles: admin"},{"line_number":28,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":29,"context_line":"  other_member_headers: \u0026other_member_headers"},{"line_number":30,"context_line":"    X-Auth-Token: a2222222222222222222222222222222"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"d49e6e18_b6bd1300","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":18},"updated":"2021-01-18 20:27:40.000000000","message":"In today\u0027s world, keystone will build out the role implications for project-scoped tokes like so:\n\n  X-Roles: admin,member,reader","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  other_admin_headers: \u0026other_admin_headers"},{"line_number":25,"context_line":"    X-Auth-Token: \u0027other-admin-token\u0027"},{"line_number":26,"context_line":"    X-Project-ID: a1111111111111111111111111111111"},{"line_number":27,"context_line":"    X-Roles: admin"},{"line_number":28,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":29,"context_line":"  other_member_headers: \u0026other_member_headers"},{"line_number":30,"context_line":"    X-Auth-Token: a2222222222222222222222222222222"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"00fbe194_2204d8fb","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":18},"in_reply_to":"d49e6e18_b6bd1300","updated":"2021-01-20 00:12:45.000000000","message":"Done","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":29,"context_line":"  other_member_headers: \u0026other_member_headers"},{"line_number":30,"context_line":"    X-Auth-Token: a2222222222222222222222222222222"},{"line_number":31,"context_line":"    X-Roles: member"},{"line_number":32,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":33,"context_line":"  owner_project_id: \u0026owner_project_id \u0027{owner_project_id}\u0027"},{"line_number":34,"context_line":"  other_project_id: \u0026other_project_id \u0027{other_project_id}\u0027"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0db82906_d16543a5","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":19},"updated":"2021-01-18 20:27:40.000000000","message":"Similar comment here as above. The X-Roles for users with the member role on a project will be:\n\n  X-Roles: member,reader","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":29,"context_line":"  other_member_headers: \u0026other_member_headers"},{"line_number":30,"context_line":"    X-Auth-Token: a2222222222222222222222222222222"},{"line_number":31,"context_line":"    X-Roles: member"},{"line_number":32,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":33,"context_line":"  owner_project_id: \u0026owner_project_id \u0027{owner_project_id}\u0027"},{"line_number":34,"context_line":"  other_project_id: \u0026other_project_id \u0027{other_project_id}\u0027"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5513153a_04c9cf4c","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":19},"in_reply_to":"0db82906_d16543a5","updated":"2021-01-20 00:12:45.000000000","message":"Done","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Nodes - https://docs.openstack.org/api-ref/baremetal/?expanded\u003d#nodes-nodes"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"nodes_post_admin:"},{"line_number":40,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":41,"context_line":"  method: post"},{"line_number":42,"context_line":"  headers: *admin_headers"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"8d13995e_52f4a89f","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":16},"updated":"2021-01-18 20:27:40.000000000","message":"nit: This is obviously up to ironic developers, but I try to include specific personas in my test names, regardless of testing the old approach of the new approach. For example:\n\n  project_admin_cannot_create_nodes_with_unsupported_driver\n\n(I have no idea if that\u0027s the reason for the 503)\n\nI think it\u0027s helpful to include the exact persona because it\u0027s descriptive of who can do what (e.g., here we\u0027re testing project administrators can create nodes). Using only the role name makes it harder to know if we\u0027re dealing with a project administrator or a system administrator at first glance.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Nodes - https://docs.openstack.org/api-ref/baremetal/?expanded\u003d#nodes-nodes"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"nodes_post_admin:"},{"line_number":40,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":41,"context_line":"  method: post"},{"line_number":42,"context_line":"  headers: *admin_headers"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"4a15fc1f_dde82453","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":16},"in_reply_to":"8d13995e_52f4a89f","updated":"2021-01-20 00:12:45.000000000","message":"This is all pre-scope testing, so it is appropriate to *not* express project as an operational constraint.\n\n(O.S. The reason for the 503 is there is no conductor. All creates go through the conductor for driver/hardware type validation reasons (The result of someone creating nodes and could then never edit them because we couldn\u0027t create the task to lock the resource a long long time ago))\n\nThat being said, I think as we evolve forward, we should. That also being said, we can evolve the names and notes (the file has already been copied in a later patch, so I\u0027d make a note there), but we\u0027ll need to likely go ahead and do that all in bulk past initial creation so we can work through everything on first pass with matching test names.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    driver: fake-driverz"},{"line_number":46,"context_line":"  assert_status: 503 "},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"nodes_post_member:"},{"line_number":49,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":50,"context_line":"  method: post"},{"line_number":51,"context_line":"  headers: *member_headers"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"78f6247e_fddde1f1","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":17},"updated":"2021-01-18 20:27:40.000000000","message":"nit: I also try and include the outcome in the test name, assuming I don\u0027t run into line-length linting issues:\n\n  project_member_cannot_create_nodes\n\nor\n\n  project_member_unauthorized_to_create_nodes","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    driver: fake-driverz"},{"line_number":46,"context_line":"  assert_status: 503 "},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"nodes_post_member:"},{"line_number":49,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":50,"context_line":"  method: post"},{"line_number":51,"context_line":"  headers: *member_headers"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"d979d818_df5fdfa9","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":17},"in_reply_to":"78f6247e_fddde1f1","updated":"2021-01-20 00:12:45.000000000","message":"Ack","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":85,"context_line":"  path: \u0027/v1/nodes/{node_ident}\u0027"},{"line_number":86,"context_line":"  method: get"},{"line_number":87,"context_line":"  headers: *other_admin_headers"},{"line_number":88,"context_line":"  # TODO(TheJulia): So this is not great, but it is default."},{"line_number":89,"context_line":"  assert_status: 200"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0c81c9f0_c4dcf11a","line":88,"range":{"start_line":88,"start_character":1,"end_line":88,"end_character":60},"updated":"2021-01-18 20:27:40.000000000","message":"Ideally, this will be fixed when the /v1/nodes API is moved to system-scope, right? And if we expose the /v1/nodes API to project users, we\u0027ll just make to sure filter the response for the baremetal node by the project ID if the request was made with a project-scoped token?","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":false,"context_lines":[{"line_number":85,"context_line":"  path: \u0027/v1/nodes/{node_ident}\u0027"},{"line_number":86,"context_line":"  method: get"},{"line_number":87,"context_line":"  headers: *other_admin_headers"},{"line_number":88,"context_line":"  # TODO(TheJulia): So this is not great, but it is default."},{"line_number":89,"context_line":"  assert_status: 200"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ecf57a93_a1b29592","line":88,"range":{"start_line":88,"start_character":1,"end_line":88,"end_character":60},"in_reply_to":"0c81c9f0_c4dcf11a","updated":"2021-01-20 00:12:45.000000000","message":"it *should* I think. I was looking at the original defaults and I think I\u0027m going to make some additional changes above and beyond the rbac work. I think once I get settled with the nodes changes, it would be good to do.\n\nFor now, clarifying comment.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"67c0cf13340648a4ba6306d8968a7ad3225da160","unresolved":true,"context_lines":[{"line_number":185,"context_line":"# Node Management - https://docs.openstack.org/api-ref/baremetal/?expanded\u003d#node-management-nodes"},{"line_number":186,"context_line":"# NOTE(TheJulia): Most management methods call into the conductor as they"},{"line_number":187,"context_line":"# require a task, which means they generally return 503 when the conductor"},{"line_number":188,"context_line":"# is mocked."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"nodes_validate_get_admin:"},{"line_number":191,"context_line":"  path: \u0027/v1/nodes/{node_ident}/validate\u0027"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"17486576_e57772e5","line":188,"updated":"2021-01-18 20:27:40.000000000","message":"nit: With the extensive test coverage here (which is awesome), does it make sense to have something like ironic/tests/unit/api/policy/legacy_rbac/test_node_management.yaml, where we can break the tests into smaller files?","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3f44d475092a40d9443d975634a426a36cb56399","unresolved":true,"context_lines":[{"line_number":185,"context_line":"# Node Management - https://docs.openstack.org/api-ref/baremetal/?expanded\u003d#node-management-nodes"},{"line_number":186,"context_line":"# NOTE(TheJulia): Most management methods call into the conductor as they"},{"line_number":187,"context_line":"# require a task, which means they generally return 503 when the conductor"},{"line_number":188,"context_line":"# is mocked."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"nodes_validate_get_admin:"},{"line_number":191,"context_line":"  path: \u0027/v1/nodes/{node_ident}/validate\u0027"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7a63e6e6_711dd8bf","line":188,"in_reply_to":"17486576_e57772e5","updated":"2021-01-20 00:12:45.000000000","message":"I have mixed feelings here. I\u0027m kind of finding working in one file just easy to get it done for now and then we can split them apart later. I strongly suspect more in depth testing for owner/lessee stuff is going to take much more work and should begin to be split.","commit_id":"90c359aab2138e9706b9a854062fdaae8bc876d7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"957e4cfacdb89e6e741f83d0378e508744da3b3e","unresolved":true,"context_lines":[{"line_number":59,"context_line":"  body: *node_post_body"},{"line_number":60,"context_line":"  assert_status: 403"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"nodes_get_node_admin:"},{"line_number":63,"context_line":"  path: \u0027/v1/nodes/{node_ident}\u0027"},{"line_number":64,"context_line":"  method: get"},{"line_number":65,"context_line":"  headers: *admin_headers"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"c1d362e9_4957b778","line":62,"updated":"2021-01-20 15:34:02.000000000","message":"This file needs to go away :\\ I need to unwind later chagnes to it.","commit_id":"35718032c86bcf69c8398e3611976bdcc8d3d4cc"}],"ironic/tests/unit/api/test_rbac_legacy.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ea5c8cbce91e8ec8186d82b71948914045fbd7c","unresolved":true,"context_lines":[{"line_number":1,"context_line":"values:"},{"line_number":2,"context_line":"  skip_reason: \"These are fake reference values for YAML templating\""},{"line_number":3,"context_line":"  # Project scoped admin token"},{"line_number":4,"context_line":"  admin_headers: \u0026admin_headers"},{"line_number":5,"context_line":"    X-Auth-Token: \u0027baremetal-admin-token\u0027"},{"line_number":6,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":7,"context_line":"    X-Roles: baremetal_admin"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"716de335_9de33934","line":4,"range":{"start_line":4,"start_character":2,"end_line":4,"end_character":15},"updated":"2021-01-21 02:46:52.000000000","message":"(nit): I like to name these according to scope, so they\u0027re descriptive today and in the future. Since we\u0027re making the admin role more reusable, it\u0027s nice to know what kind of admin we\u0027re testing with (e.g., project-admin or system-admin).\n\n  project_admin_headers: \u0026project_admin_headers\n\nOr we could keep it as baremetal_admin.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"values:"},{"line_number":2,"context_line":"  skip_reason: \"These are fake reference values for YAML templating\""},{"line_number":3,"context_line":"  # Project scoped admin token"},{"line_number":4,"context_line":"  admin_headers: \u0026admin_headers"},{"line_number":5,"context_line":"    X-Auth-Token: \u0027baremetal-admin-token\u0027"},{"line_number":6,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":7,"context_line":"    X-Roles: baremetal_admin"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"f48f21ea_fda0d0b3","line":4,"range":{"start_line":4,"start_character":2,"end_line":4,"end_character":15},"in_reply_to":"716de335_9de33934","updated":"2021-01-29 23:17:45.000000000","message":"So I think this is a bit of a source of confusion because these are legacy tests and all project scoped through a legacy configuration. Additionally the these tests are touched later on as we begin to implement system scoped testing, and we would sink days into resolving the rebase conflicts then. I just don\u0027t see this helping.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ea5c8cbce91e8ec8186d82b71948914045fbd7c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    X-Roles: baremetal_admin"},{"line_number":8,"context_line":"    X-Project-Name: baremetal"},{"line_number":9,"context_line":"  # Project scoped other member token."},{"line_number":10,"context_line":"  member_headers: \u0026member_headers"},{"line_number":11,"context_line":"    X-Auth-Token: \u0027baremetal-member-token\u0027"},{"line_number":12,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":13,"context_line":"    X-Roles: member"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"fcbc6f4a_dc6ad213","line":10,"range":{"start_line":10,"start_character":2,"end_line":10,"end_character":16},"updated":"2021-01-21 02:46:52.000000000","message":"Same comment here about including scope in the variable names.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    X-Roles: baremetal_admin"},{"line_number":8,"context_line":"    X-Project-Name: baremetal"},{"line_number":9,"context_line":"  # Project scoped other member token."},{"line_number":10,"context_line":"  member_headers: \u0026member_headers"},{"line_number":11,"context_line":"    X-Auth-Token: \u0027baremetal-member-token\u0027"},{"line_number":12,"context_line":"    X-Project-ID: 66140b35c7524c6da836ca834e3fd3f9"},{"line_number":13,"context_line":"    X-Roles: member"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"8cc9f918_d0a1f584","line":10,"range":{"start_line":10,"start_character":2,"end_line":10,"end_character":16},"in_reply_to":"fcbc6f4a_dc6ad213","updated":"2021-01-29 23:17:45.000000000","message":"Ack, my prior comment is the same to this comment name.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ea5c8cbce91e8ec8186d82b71948914045fbd7c","unresolved":true,"context_lines":[{"line_number":20,"context_line":"    X-Roles: baremetal_observer"},{"line_number":21,"context_line":"  other_admin_headers: \u0026other_admin_headers"},{"line_number":22,"context_line":"    X-Auth-Token: \u0027other-admin-token\u0027"},{"line_number":23,"context_line":"    X-Project-ID: a1111111111111111111111111111111"},{"line_number":24,"context_line":"    X-Roles: admin,member,reader"},{"line_number":25,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":26,"context_line":"  other_member_headers: \u0026other_member_headers"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"58a5ba6b_693ee3b0","line":23,"range":{"start_line":23,"start_character":18,"end_line":23,"end_character":50},"updated":"2021-01-21 02:46:52.000000000","message":"(nit): We could keep re-using the X-Project-ID from lines 6, 12, and 18.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":true,"context_lines":[{"line_number":20,"context_line":"    X-Roles: baremetal_observer"},{"line_number":21,"context_line":"  other_admin_headers: \u0026other_admin_headers"},{"line_number":22,"context_line":"    X-Auth-Token: \u0027other-admin-token\u0027"},{"line_number":23,"context_line":"    X-Project-ID: a1111111111111111111111111111111"},{"line_number":24,"context_line":"    X-Roles: admin,member,reader"},{"line_number":25,"context_line":"    X-Project-Name: \u0027other-project\u0027"},{"line_number":26,"context_line":"  other_member_headers: \u0026other_member_headers"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"a632fedd_878601e0","line":23,"range":{"start_line":23,"start_character":18,"end_line":23,"end_character":50},"in_reply_to":"58a5ba6b_693ee3b0","updated":"2021-01-29 23:17:45.000000000","message":"That is not the intent here, the intent, truthfully is to validate that other admins can\u0027t access the resource. This is presently project name based. I have a patch later on for that.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ea5c8cbce91e8ec8186d82b71948914045fbd7c","unresolved":true,"context_lines":[{"line_number":40,"context_line":"  body: \u0026node_post_body"},{"line_number":41,"context_line":"    name: node"},{"line_number":42,"context_line":"    driver: fake-driverz"},{"line_number":43,"context_line":"  assert_status: 503"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"nodes_post_member:"},{"line_number":46,"context_line":"  path: \u0027/v1/nodes\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"c64cd162_8d8caa31","line":43,"range":{"start_line":43,"start_character":17,"end_line":43,"end_character":20},"updated":"2021-01-21 02:46:52.000000000","message":"This would otherwise succeed with a valid driver, right?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d48cd37bd49c3f6658a08baa8c687a252cbe11c2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"  body: \u0026node_post_body"},{"line_number":41,"context_line":"    name: node"},{"line_number":42,"context_line":"    driver: fake-driverz"},{"line_number":43,"context_line":"  assert_status: 503"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"nodes_post_member:"},{"line_number":46,"context_line":"  path: \u0027/v1/nodes\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"f64f3441_44510ebb","line":43,"range":{"start_line":43,"start_character":17,"end_line":43,"end_character":20},"in_reply_to":"769734bc_ab1dd689","updated":"2021-01-21 21:15:57.000000000","message":"Ack","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"53ed181c12cd59cbc3fd9f7eb9b6785e3dcb8263","unresolved":true,"context_lines":[{"line_number":40,"context_line":"  body: \u0026node_post_body"},{"line_number":41,"context_line":"    name: node"},{"line_number":42,"context_line":"    driver: fake-driverz"},{"line_number":43,"context_line":"  assert_status: 503"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"nodes_post_member:"},{"line_number":46,"context_line":"  path: \u0027/v1/nodes\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"769734bc_ab1dd689","line":43,"range":{"start_line":43,"start_character":17,"end_line":43,"end_character":20},"in_reply_to":"c64cd162_8d8caa31","updated":"2021-01-21 20:15:04.000000000","message":"Getting a 20x response would require a lot of mocking in the controller task, especially if requests to the conductor are made. So this 503 is an indication that the request got past the policy then hit an error with an unmocked call.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ea5c8cbce91e8ec8186d82b71948914045fbd7c","unresolved":true,"context_lines":[{"line_number":300,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/boot_device/supported\u0027"},{"line_number":301,"context_line":"  method: get"},{"line_number":302,"context_line":"  headers: *observer_headers"},{"line_number":303,"context_line":"  assert_status: 503"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"nodes_management_inject_nmi_put_admin:"},{"line_number":306,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/inject_nmi\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"dc0957d4_ff0983b1","line":303,"range":{"start_line":303,"start_character":17,"end_line":303,"end_character":20},"updated":"2021-01-21 02:46:52.000000000","message":"Similar comment here as above. Is it safe to assume 503s are what we want because that\u0027s proving the request made it through enforcement code?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":false,"context_lines":[{"line_number":300,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/boot_device/supported\u0027"},{"line_number":301,"context_line":"  method: get"},{"line_number":302,"context_line":"  headers: *observer_headers"},{"line_number":303,"context_line":"  assert_status: 503"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"nodes_management_inject_nmi_put_admin:"},{"line_number":306,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/inject_nmi\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"c0475dff_00ff9eca","line":303,"range":{"start_line":303,"start_character":17,"end_line":303,"end_character":20},"in_reply_to":"dc0957d4_ff0983b1","updated":"2021-01-29 23:17:45.000000000","message":"Fairly safe. I\u0027ve run each of these tests individually as well.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ea5c8cbce91e8ec8186d82b71948914045fbd7c","unresolved":true,"context_lines":[{"line_number":489,"context_line":"  path: \u0027/v1/nodes/{node_ident}/vendor_passthru?method\u003dtest\u0027"},{"line_number":490,"context_line":"  method: get"},{"line_number":491,"context_line":"  headers: *observer_headers"},{"line_number":492,"context_line":"  assert_status: 403"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"nodes_vendor_passthru_post_admin:"},{"line_number":495,"context_line":"  path: \u0027/v1/nodes/{node_ident}/vendor_passthru?method\u003dtest\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"91ab83bc_74bbc7e5","line":492,"range":{"start_line":492,"start_character":17,"end_line":492,"end_character":20},"updated":"2021-01-21 02:46:52.000000000","message":"Observers aren\u0027t allowed to view this information?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"53ed181c12cd59cbc3fd9f7eb9b6785e3dcb8263","unresolved":true,"context_lines":[{"line_number":489,"context_line":"  path: \u0027/v1/nodes/{node_ident}/vendor_passthru?method\u003dtest\u0027"},{"line_number":490,"context_line":"  method: get"},{"line_number":491,"context_line":"  headers: *observer_headers"},{"line_number":492,"context_line":"  assert_status: 403"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"nodes_vendor_passthru_post_admin:"},{"line_number":495,"context_line":"  path: \u0027/v1/nodes/{node_ident}/vendor_passthru?method\u003dtest\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"aa3e5561_4fad88e1","line":492,"range":{"start_line":492,"start_character":17,"end_line":492,"end_character":20},"in_reply_to":"91ab83bc_74bbc7e5","updated":"2021-01-21 20:15:04.000000000","message":"Its a GET, but it results in ironic doing a GET to some arbitrary endpoint, which will do who-knows-what. Its probably appropriate that observers can\u0027t do this.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d48cd37bd49c3f6658a08baa8c687a252cbe11c2","unresolved":false,"context_lines":[{"line_number":489,"context_line":"  path: \u0027/v1/nodes/{node_ident}/vendor_passthru?method\u003dtest\u0027"},{"line_number":490,"context_line":"  method: get"},{"line_number":491,"context_line":"  headers: *observer_headers"},{"line_number":492,"context_line":"  assert_status: 403"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"nodes_vendor_passthru_post_admin:"},{"line_number":495,"context_line":"  path: \u0027/v1/nodes/{node_ident}/vendor_passthru?method\u003dtest\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"e3163e76_444fe97b","line":492,"range":{"start_line":492,"start_character":17,"end_line":492,"end_character":20},"in_reply_to":"aa3e5561_4fad88e1","updated":"2021-01-21 21:15:57.000000000","message":"Ack","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e571f30a466fb97bdba7d2c2e36ad51cb99b0e07","unresolved":true,"context_lines":[{"line_number":755,"context_line":"  method: post"},{"line_number":756,"context_line":"  headers: *admin_headers"},{"line_number":757,"context_line":"  body: \u0026portgroup_body"},{"line_number":758,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":759,"context_line":"  assert_status: 204"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"portgroups_post_admin:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"4c7a0f5c_1611ca98","line":758,"range":{"start_line":758,"start_character":15,"end_line":758,"end_character":51},"updated":"2021-01-21 01:50:36.000000000","message":"This could be *node_ident?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":true,"context_lines":[{"line_number":755,"context_line":"  method: post"},{"line_number":756,"context_line":"  headers: *admin_headers"},{"line_number":757,"context_line":"  body: \u0026portgroup_body"},{"line_number":758,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":759,"context_line":"  assert_status: 204"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"portgroups_post_admin:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"6d189289_4a5ea332","line":758,"range":{"start_line":758,"start_character":15,"end_line":758,"end_character":51},"in_reply_to":"4c7a0f5c_1611ca98","updated":"2021-01-29 23:17:45.000000000","message":"*node_ident doesn\u0027t get expanded inside of another anchor and thus it doesn\u0027t get expanded by yaml, and would need to be identified and swapped in the test code. I\u0027m not sure it really makes sense since it is just doing schema validation.\n\n  API ACL Testing Path post /v1/portgroups\nPOST: /v1/portgroups {\u0027node_uuid\u0027: \u0027{node_ident}\u0027}\nkw\n{\u0027headers\u0027: {\u0027X-OpenStack-Ironic-API-Version\u0027: \u00271.68\u0027, \u0027X-Auth-Token\u0027: \u0027baremetal-member-token\u0027, \u0027X-Project-ID\u0027: \u002766140b35c7524c6da836ca834e3fd3f9\u0027, \u0027X-Roles\u0027: \u0027member\u0027, \u0027X-Project-Name\u0027: \u0027baremetal\u0027}, \u0027status\u0027: None, \u0027extra_environ\u0027: {}, \u0027expect_errors\u0027: True, \u0027content_type\u0027: \u0027application/json\u0027, \u0027params\u0027: \u0027{\"node_uuid\": \"{node_ident}\"}\u0027, \u0027upload_files\u0027: None}\nGOT:Response: 400 Bad Request\nContent-Type: application/json\nOpenstack-Request-Id: req-5a9336fe-79ee-4805-a09a-c12f6556bffc\nX-Openstack-Ironic-Api-Maximum-Version: 1.68\nX-Openstack-Ironic-Api-Minimum-Version: 1.1\nX-Openstack-Ironic-Api-Version: 1.68\n{\"error_message\": \"{\\\"faultcode\\\": \\\"Client\\\", \\\"faultstring\\\": \\\"Expected UUID for node_uuid: {node_ident}\\\", \\\"debuginfo\\\": null}\"}","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e571f30a466fb97bdba7d2c2e36ad51cb99b0e07","unresolved":true,"context_lines":[{"line_number":919,"context_line":"  headers: *admin_headers"},{"line_number":920,"context_line":"  assert_status: 400"},{"line_number":921,"context_line":"  body: \u0026port_body"},{"line_number":922,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":923,"context_line":"    address: 00:01:02:03:04:05"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"ports_post_member:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"2a203ecc_0fe40aba","line":922,"range":{"start_line":922,"start_character":14,"end_line":922,"end_character":51},"updated":"2021-01-21 01:50:36.000000000","message":"This could be *node_ident?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":true,"context_lines":[{"line_number":919,"context_line":"  headers: *admin_headers"},{"line_number":920,"context_line":"  assert_status: 400"},{"line_number":921,"context_line":"  body: \u0026port_body"},{"line_number":922,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":923,"context_line":"    address: 00:01:02:03:04:05"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"ports_post_member:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"663dfe63_b22f081d","line":922,"range":{"start_line":922,"start_character":14,"end_line":922,"end_character":51},"in_reply_to":"2a203ecc_0fe40aba","updated":"2021-01-29 23:17:45.000000000","message":"See prior comment on anchor references with-in defining new anchors. :)","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e571f30a466fb97bdba7d2c2e36ad51cb99b0e07","unresolved":true,"context_lines":[{"line_number":1146,"context_line":"  headers: *admin_headers"},{"line_number":1147,"context_line":"  assert_status: 400"},{"line_number":1148,"context_line":"  body: \u0026volume_connector_body"},{"line_number":1149,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":1150,"context_line":"    type: ip"},{"line_number":1151,"context_line":"    connector_id: 192.168.1.100"},{"line_number":1152,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"66ba2e25_847f755a","line":1149,"range":{"start_line":1149,"start_character":15,"end_line":1149,"end_character":51},"updated":"2021-01-21 01:50:36.000000000","message":"This could be *node_ident?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":true,"context_lines":[{"line_number":1146,"context_line":"  headers: *admin_headers"},{"line_number":1147,"context_line":"  assert_status: 400"},{"line_number":1148,"context_line":"  body: \u0026volume_connector_body"},{"line_number":1149,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":1150,"context_line":"    type: ip"},{"line_number":1151,"context_line":"    connector_id: 192.168.1.100"},{"line_number":1152,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"513573ab_16e6eb67","line":1149,"range":{"start_line":1149,"start_character":15,"end_line":1149,"end_character":51},"in_reply_to":"66ba2e25_847f755a","updated":"2021-01-29 23:17:45.000000000","message":"Unfortunately, no. :(  See prior comment on this topic.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e571f30a466fb97bdba7d2c2e36ad51cb99b0e07","unresolved":true,"context_lines":[{"line_number":1253,"context_line":"  headers: *admin_headers"},{"line_number":1254,"context_line":"  assert_status: 400"},{"line_number":1255,"context_line":"  body: \u0026volume_target_body"},{"line_number":1256,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":1257,"context_line":"    volume_type: iscsi"},{"line_number":1258,"context_line":"    boot_index: 0"},{"line_number":1259,"context_line":"    volume_id: \u0027test-id\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"6998889c_1b55b352","line":1256,"range":{"start_line":1256,"start_character":15,"end_line":1256,"end_character":51},"updated":"2021-01-21 01:50:36.000000000","message":"This could be *node_ident?","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"76b7207b5fae064f1e4444b191d671d495babfba","unresolved":true,"context_lines":[{"line_number":1253,"context_line":"  headers: *admin_headers"},{"line_number":1254,"context_line":"  assert_status: 400"},{"line_number":1255,"context_line":"  body: \u0026volume_target_body"},{"line_number":1256,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":1257,"context_line":"    volume_type: iscsi"},{"line_number":1258,"context_line":"    boot_index: 0"},{"line_number":1259,"context_line":"    volume_id: \u0027test-id\u0027"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"bca983ea_5c5de61a","line":1256,"range":{"start_line":1256,"start_character":15,"end_line":1256,"end_character":51},"in_reply_to":"6998889c_1b55b352","updated":"2021-01-29 23:17:45.000000000","message":"Prior comment.","commit_id":"28c711475929c85ba3f5ab1bdb202b8fbee4f53a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5438768f552a1e6f8dffcea01140adba1ee87783","unresolved":true,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# NOTE(TheJulia): This file is intended for legacy project RBAC testing"},{"line_number":3,"context_line":"# and is entirely project scoped in nature, but "},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"values:"},{"line_number":6,"context_line":"  skip_reason: \"These are fake reference values for YAML templating\""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"5dd476f2_60784ffa","line":3,"updated":"2021-02-09 19:05:43.000000000","message":"Either put prose in up here explaining 503/etc.\n\nLikely put into the docs, link, and hyper-summarized.","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"ac8ca7c13639bfb308067dd5193a89304967bb8f","unresolved":true,"context_lines":[{"line_number":105,"context_line":"nodes_get_other_admin:"},{"line_number":106,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":107,"context_line":"  method: get"},{"line_number":108,"context_line":"  skip_reason: \u0027Not implemented yet\u0027"},{"line_number":109,"context_line":"  headers: *other_admin_headers"},{"line_number":110,"context_line":"  assert_list_length:"},{"line_number":111,"context_line":"    nodes: 2"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"1ff3e336_dc9269ed","line":108,"updated":"2021-02-03 20:23:48.000000000","message":"This looks implemented. Maybe this skip should be removed. Or its skipped because the test isn\u0027t passing","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e9eab340a99eee9fa3a8cf91b223724187c60c10","unresolved":false,"context_lines":[{"line_number":105,"context_line":"nodes_get_other_admin:"},{"line_number":106,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":107,"context_line":"  method: get"},{"line_number":108,"context_line":"  skip_reason: \u0027Not implemented yet\u0027"},{"line_number":109,"context_line":"  headers: *other_admin_headers"},{"line_number":110,"context_line":"  assert_list_length:"},{"line_number":111,"context_line":"    nodes: 2"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"41e6eea1_e573dfb3","line":108,"in_reply_to":"1ff3e336_dc9269ed","updated":"2021-02-11 18:07:48.000000000","message":"I guess I missed it, it seems to pass.","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f9f6281923f9d83278d29cd5ee474f5a881ee053","unresolved":true,"context_lines":[{"line_number":762,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":763,"context_line":"  assert_status: 204"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"portgroups_post_admin:"},{"line_number":766,"context_line":"  path: \u0027/v1/portgroups\u0027"},{"line_number":767,"context_line":"  method: post"},{"line_number":768,"context_line":"  headers: *member_headers"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"8b3edd1f_85cc1741","line":765,"range":{"start_line":765,"start_character":0,"end_line":765,"end_character":21},"updated":"2021-02-03 21:10:46.000000000","message":"I see this duplicated name is fix in the portgroup change, it should really be fixed here :)","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e9eab340a99eee9fa3a8cf91b223724187c60c10","unresolved":false,"context_lines":[{"line_number":762,"context_line":"    node_uuid: 68a552fb-dcd2-43bf-9302-e4c93287be16"},{"line_number":763,"context_line":"  assert_status: 204"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"portgroups_post_admin:"},{"line_number":766,"context_line":"  path: \u0027/v1/portgroups\u0027"},{"line_number":767,"context_line":"  method: post"},{"line_number":768,"context_line":"  headers: *member_headers"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9f14d155_257a94ec","line":765,"range":{"start_line":765,"start_character":0,"end_line":765,"end_character":21},"in_reply_to":"8b3edd1f_85cc1741","updated":"2021-02-11 18:07:48.000000000","message":"Done","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"89d79a61bf857b866c4befad554fd6495c39cc5f","unresolved":true,"context_lines":[{"line_number":782,"context_line":"  headers: *admin_headers"},{"line_number":783,"context_line":"  assert_status: 200"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"portgroups_detail_get_admin:"},{"line_number":786,"context_line":"  path: \u0027/v1/portgroups/detail\u0027"},{"line_number":787,"context_line":"  method: get"},{"line_number":788,"context_line":"  headers: *member_headers"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"6526c968_c0c5b491","line":785,"range":{"start_line":785,"start_character":22,"end_line":785,"end_character":27},"updated":"2021-02-03 21:00:20.000000000","message":"I see this duplicated name is fix in the portgroup change, it should really be fixed here :)","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e9eab340a99eee9fa3a8cf91b223724187c60c10","unresolved":false,"context_lines":[{"line_number":782,"context_line":"  headers: *admin_headers"},{"line_number":783,"context_line":"  assert_status: 200"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"portgroups_detail_get_admin:"},{"line_number":786,"context_line":"  path: \u0027/v1/portgroups/detail\u0027"},{"line_number":787,"context_line":"  method: get"},{"line_number":788,"context_line":"  headers: *member_headers"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"87ff401c_b04faf1e","line":785,"range":{"start_line":785,"start_character":22,"end_line":785,"end_character":27},"in_reply_to":"6526c968_c0c5b491","updated":"2021-02-11 18:07:48.000000000","message":"Done","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"c0da195ace24d75c6119cfa5c6f45f15be61187a","unresolved":true,"context_lines":[{"line_number":1916,"context_line":"  body: *chassis_body"},{"line_number":1917,"context_line":"  assert_status: 403"},{"line_number":1918,"context_line":""},{"line_number":1919,"context_line":"chassis_post_member:"},{"line_number":1920,"context_line":"  path: \u0027/v1/chassis\u0027"},{"line_number":1921,"context_line":"  method: post"},{"line_number":1922,"context_line":"  headers: *observer_headers"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"75ab9ca7_79b1c942","line":1919,"range":{"start_line":1919,"start_character":0,"end_line":1919,"end_character":19},"updated":"2021-02-03 21:15:27.000000000","message":"chassis_post_observer","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e9eab340a99eee9fa3a8cf91b223724187c60c10","unresolved":false,"context_lines":[{"line_number":1916,"context_line":"  body: *chassis_body"},{"line_number":1917,"context_line":"  assert_status: 403"},{"line_number":1918,"context_line":""},{"line_number":1919,"context_line":"chassis_post_member:"},{"line_number":1920,"context_line":"  path: \u0027/v1/chassis\u0027"},{"line_number":1921,"context_line":"  method: post"},{"line_number":1922,"context_line":"  headers: *observer_headers"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"d2fd5875_08a27c8f","line":1919,"range":{"start_line":1919,"start_character":0,"end_line":1919,"end_character":19},"in_reply_to":"75ab9ca7_79b1c942","updated":"2021-02-11 18:07:48.000000000","message":"Done","commit_id":"2419268afbe1c3af6bc664ee0284ef80734fb137"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b0a02ce3c99af369e20054f1cbc7ab58e094cf7e","unresolved":true,"context_lines":[{"line_number":732,"context_line":"nodes_management_indicators_component_get_allow:"},{"line_number":733,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/indicators/{component}\u0027"},{"line_number":734,"context_line":"  method: get"},{"line_number":735,"context_line":"  skip_reason: API appears to be broken and should be patched outside of this work."},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"nodes_management_indicators_component_ind_ident_get_allow:"},{"line_number":738,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/indicators/{component}/{ind_ident}\u0027"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"6a0f8747_9737af9e","line":735,"updated":"2021-02-11 22:45:35.000000000","message":"This significantly piques my curiosity. Might be worth linking it to a story issue, or putting a small summary of the problem in a comment?","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e113c70b1e1c9ff7cd02ad5d75e814e6f383d09f","unresolved":true,"context_lines":[{"line_number":732,"context_line":"nodes_management_indicators_component_get_allow:"},{"line_number":733,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/indicators/{component}\u0027"},{"line_number":734,"context_line":"  method: get"},{"line_number":735,"context_line":"  skip_reason: API appears to be broken and should be patched outside of this work."},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"nodes_management_indicators_component_ind_ident_get_allow:"},{"line_number":738,"context_line":"  path: \u0027/v1/nodes/{node_ident}/management/indicators/{component}/{ind_ident}\u0027"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"db995468_4a46456b","line":735,"in_reply_to":"6a0f8747_9737af9e","updated":"2021-02-12 14:52:37.000000000","message":"I talked with Stevebaker about it and he was going to look at it. Kind of surprised there is not already a fix for it afaik.","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b0a02ce3c99af369e20054f1cbc7ab58e094cf7e","unresolved":true,"context_lines":[{"line_number":1545,"context_line":"  assert_status: 403"},{"line_number":1546,"context_line":""},{"line_number":1547,"context_line":"drivers_vendor_passthru_put_observer:"},{"line_number":1548,"context_line":"  path: \u0027/v1/drivers/{driver_name}/vendor_passthru?method\u003dtest\u0027"},{"line_number":1549,"context_line":"  method: put"},{"line_number":1550,"context_line":"  headers: *observer_headers"},{"line_number":1551,"context_line":"  assert_status: 403"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"5d2043dd_4b81f0cc","line":1548,"updated":"2021-02-11 22:45:35.000000000","message":"Just an observation/question: it\u0027s not possible to do different policies for different vendor_passthru methods, is it?","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e113c70b1e1c9ff7cd02ad5d75e814e6f383d09f","unresolved":true,"context_lines":[{"line_number":1545,"context_line":"  assert_status: 403"},{"line_number":1546,"context_line":""},{"line_number":1547,"context_line":"drivers_vendor_passthru_put_observer:"},{"line_number":1548,"context_line":"  path: \u0027/v1/drivers/{driver_name}/vendor_passthru?method\u003dtest\u0027"},{"line_number":1549,"context_line":"  method: put"},{"line_number":1550,"context_line":"  headers: *observer_headers"},{"line_number":1551,"context_line":"  assert_status: 403"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"5c77713f_5be111ba","line":1548,"in_reply_to":"5d2043dd_4b81f0cc","updated":"2021-02-12 14:52:37.000000000","message":"It is not, as far as I\u0027m aware. The method might be able to do context checking itself if you have special code, but it is not required to and that would be the conductor running the policy check at that point.","commit_id":"f95001b750ecf55c7a987a3442decaa38a6e2b53"}]}
