)]}'
{"glance/api/v2/metadef_properties.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c6cf98d976ae64a5052fde2859396d1aed14e83","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":18,"id":"4b3a8c9c_f949161b","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"updated":"2021-08-19 19:25:52.000000000","message":"How come we can\u0027t do?\n\n  enforcer\u003dself.policy).get_metadef_property()]","commit_id":"fa0977f9e3cdb78b04be99cf19a67eb486be2a0c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8052500ee79b12cc07bc4d5985ce68cbefbd24a0","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":18,"id":"cbc514cd_dd79ec45","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"4b3a8c9c_f949161b","updated":"2021-08-19 19:35:23.000000000","message":".check will return true or false  where as .get_metadef_property() will raise exception and stop the execution.","commit_id":"fa0977f9e3cdb78b04be99cf19a67eb486be2a0c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ac6a1a4e6fd2c7346a858a2995b286cbbce407c2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba8730be_3e5f6a12","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"cbc514cd_dd79ec45","updated":"2021-08-19 19:44:54.000000000","message":"Aha - thanks for the clarification. That makes sense.","commit_id":"fa0977f9e3cdb78b04be99cf19a67eb486be2a0c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9799790462f09f82fd4f9c0ffa7a2de311834491","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"4ba32851_bc17cab1","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"updated":"2021-08-24 14:48:31.000000000","message":"Does this need to be called on each property? It looks like the default is open (\"\") and I don\u0027t see anything that would be property specific.\n\nOr is this really so that operators can supply a custom policy to filter metadef properties based on attributes?","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6c54455d7919023a88f209afa8c2070ec6f42d0f","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"4e694f0d_c8e925a6","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"4ba32851_bc17cab1","updated":"2021-08-24 14:59:56.000000000","message":"For later part mostly!","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2c50ce1a79b6a5653cb02d13a1b041444128559c","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"87e23d62_ce2b7537","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"4e694f0d_c8e925a6","updated":"2021-08-24 15:39:16.000000000","message":"But we\u0027re not passing the property itself into the check, so how would you write a policy to do that?","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0c12eaf81d0dcc20c668c5e066838b0e42cc5d6d","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a409c90_6bd6155c","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"87e23d62_ce2b7537","updated":"2021-08-24 15:41:38.000000000","message":"At the moment everything is coupled with namespace only and we are passing namespace object here, so in future I can write a custom policy based on namespace visibility.","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"31fecd3cd00cc86aed22cb3bc5a6850197cb3b16","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"e00a91ee_d9a20130","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"9a409c90_6bd6155c","updated":"2021-08-24 15:43:43.000000000","message":"So the namespace is the same for each property, right?","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"769ff97a1710b729601582c3c19a64950d08f6d1","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"d4388b2c_4380627d","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"bfdd5fc6_8947af7d","updated":"2021-08-24 15:55:39.000000000","message":"I guess I need an example of how someone would override the policy so that it would be different for two properties of the same namespace. Is that possible? Based on the defaults and what I understand about namespace properties (which isn\u0027t much) this feels like a extra processing?","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e7f7430b87f984805339370d10fdcc387c3f0c5b","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"3345a4b2_22e898cb","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"d4388b2c_4380627d","updated":"2021-08-24 15:59:08.000000000","message":"Yeah, consistency is good, but this isn\u0027t the same as the other things because we\u0027re not iterating on the child objects, we\u0027re iterating for the parent. If there\u0027s a strong desire to be able to write those policies in the future, then maybe a FIXME here would be good to draw that line in the sand. However, we can\u0027t write those until you pass the child object in, so more work is needed here anyway. That\u0027d be the time to add the iteration I think, and for now just check it once. I think that in all likelihood, that won\u0027t ever happen (or not for a while), so just checking once here will save resources. I\u0027m also not sure that encoding all that stuff in a policy rule is really the right place to do this. I can imagine that getting pretty long and hairy.","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"57d63b19b9e7a8b9ea8a4aa0e66e1a5b05a1eca2","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"1f09fc6c_9c7f64a7","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"d4388b2c_4380627d","updated":"2021-08-24 15:57:25.000000000","message":"Yes, this is extra processing and I am proposing a patch shortly to revert this change.\nThank you for noticing it.","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"742cbc7b159175193dc7a34549ef16ead64d93d8","unresolved":true,"context_lines":[{"line_number":91,"context_line":"            propt_list \u003d ["},{"line_number":92,"context_line":"                prop for prop in db_properties if api_policy.MetadefAPIPolicy("},{"line_number":93,"context_line":"                    req.context, md_resource\u003dprop.namespace,"},{"line_number":94,"context_line":"                    enforcer\u003dself.policy).check(\u0027get_metadef_property\u0027)]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            property_list \u003d Namespace.to_model_properties(propt_list)"},{"line_number":97,"context_line":"            namespace_properties \u003d PropertyTypes()"}],"source_content_type":"text/x-python","patch_set":19,"id":"bfdd5fc6_8947af7d","line":94,"range":{"start_line":94,"start_character":42,"end_line":94,"end_character":71},"in_reply_to":"e00a91ee_d9a20130","updated":"2021-08-24 15:49:39.000000000","message":"right,\n\nAlso I think this is for consistency purpose as well, we are doing it for images, namespaces that after checking get_images policy we perform get_image check on each and every image returned, but obviously that does not make sense here as the namespace will be same for each property in the list.","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9666fc345f2685ea8953d5326d127f3c8c96699a","unresolved":true,"context_lines":[{"line_number":87,"context_line":"            prop_repo \u003d self.gateway.get_metadef_property_repo("},{"line_number":88,"context_line":"                req.context, authorization_layer\u003dFalse)"},{"line_number":89,"context_line":"            db_properties \u003d prop_repo.list(filters\u003dfilters)"},{"line_number":90,"context_line":"            property_list \u003d Namespace.to_model_properties(db_properties)"},{"line_number":91,"context_line":"            namespace_properties \u003d PropertyTypes()"},{"line_number":92,"context_line":"            namespace_properties.properties \u003d property_list"},{"line_number":93,"context_line":"        except exception.Forbidden as e:"}],"source_content_type":"text/x-python","patch_set":21,"id":"0c8ff2b5_2da0ac82","line":90,"updated":"2021-08-25 21:21:00.000000000","message":"I might have missed something, but this should still do a single-shot check on get_metadef_property right? I think lance and I were not arguing against checking it, just arguing against checking it N times when the result cannot be different.","commit_id":"25965ee7e9650af58f1d1ef29cbfe508b1f34134"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35d4a5d324cdd25bd7ebfd1da02a257a85172960","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            if filters and filters[\u0027resource_type\u0027]:"},{"line_number":123,"context_line":"                # Verify that you can fetch resource type details"},{"line_number":124,"context_line":"                api_pol.get_metadef_resource_type()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"                rs_repo \u003d self.gateway.get_metadef_resource_type_repo("},{"line_number":127,"context_line":"                    req.context, authorization_layer\u003dFalse)"},{"line_number":128,"context_line":"                db_resource_type \u003d rs_repo.get(filters[\u0027resource_type\u0027],"}],"source_content_type":"text/x-python","patch_set":21,"id":"7726d501_b0db21e0","line":125,"updated":"2021-08-25 13:33:10.000000000","message":"Looks like this was added in a recent patch set, but wasn\u0027t there prior?","commit_id":"25965ee7e9650af58f1d1ef29cbfe508b1f34134"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f4dda5b997d99543ec678caa17fca12928632f97","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            if filters and filters[\u0027resource_type\u0027]:"},{"line_number":123,"context_line":"                # Verify that you can fetch resource type details"},{"line_number":124,"context_line":"                api_pol.get_metadef_resource_type()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"                rs_repo \u003d self.gateway.get_metadef_resource_type_repo("},{"line_number":127,"context_line":"                    req.context, authorization_layer\u003dFalse)"},{"line_number":128,"context_line":"                db_resource_type \u003d rs_repo.get(filters[\u0027resource_type\u0027],"}],"source_content_type":"text/x-python","patch_set":21,"id":"4a196c19_65e123ac","line":125,"in_reply_to":"7726d501_b0db21e0","updated":"2021-08-25 15:12:59.000000000","message":"Correct, Earlier I thought there is no need to inject the policy check as we are fetching details on the basis of namespace, but I think to maintain legacy behavior we should enforce this policy as well.","commit_id":"25965ee7e9650af58f1d1ef29cbfe508b1f34134"}],"glance/tests/functional/v2/test_metadef_property_api_policy.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1fd99a7c9c889e61e9558ca1a4f83c44228b800e","unresolved":true,"context_lines":[{"line_number":44,"context_line":"class TestMetadefPropertiesPolicy(functional.SynchronousAPIBase):"},{"line_number":45,"context_line":"    def setUp(self):"},{"line_number":46,"context_line":"        super(TestMetadefPropertiesPolicy, self).setUp()"},{"line_number":47,"context_line":"        self.policy \u003d policy.Enforcer()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def load_data(self, create_properties\u003dFalse):"},{"line_number":50,"context_line":"        path \u003d \u0027/v2/metadefs/namespaces\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"a66d48cc_37cdc12d","line":47,"range":{"start_line":47,"start_character":8,"end_line":47,"end_character":39},"updated":"2021-08-19 14:39:05.000000000","message":"self.policy \u003d policy.Enforcer(suppress_deprecation_warnings\u003dTrue)","commit_id":"4053b20f4d9a74b54dde5b822ead2833f7fffd46"}],"glance/tests/unit/v2/test_metadef_resources.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c6cf98d976ae64a5052fde2859396d1aed14e83","unresolved":true,"context_lines":[{"line_number":997,"context_line":"                          PROPERTY1)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def test_property_delete_non_existing(self):"},{"line_number":1000,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1001,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1002,"context_line":"                          self.property_controller.delete, request, NAMESPACE5,"},{"line_number":1003,"context_line":"                          PROPERTY2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"69b69d19_bf5cf177","line":1000,"range":{"start_line":1000,"start_character":59,"end_line":1000,"end_character":64},"updated":"2021-08-19 19:25:52.000000000","message":"nit: for completeness and potential future proofing we could expand this to include the role implications that keystone handles for you.\n\n  roles\u003d[\u0027admin\u0027, \u0027member\u0027, \u0027reader\u0027]","commit_id":"fa0977f9e3cdb78b04be99cf19a67eb486be2a0c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8052500ee79b12cc07bc4d5985ce68cbefbd24a0","unresolved":true,"context_lines":[{"line_number":997,"context_line":"                          PROPERTY1)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def test_property_delete_non_existing(self):"},{"line_number":1000,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1001,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1002,"context_line":"                          self.property_controller.delete, request, NAMESPACE5,"},{"line_number":1003,"context_line":"                          PROPERTY2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"a64d10fc_c81f4b5f","line":1000,"range":{"start_line":1000,"start_character":59,"end_line":1000,"end_character":64},"in_reply_to":"69b69d19_bf5cf177","updated":"2021-08-19 19:35:23.000000000","message":"Will do it if new PS is needed, otherwise we can do all it in one followup patch.\n(Mostly because we are hitting timeout requests in gate, so avoiding pushing new PS unless it is critical or must do fix.)","commit_id":"fa0977f9e3cdb78b04be99cf19a67eb486be2a0c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ac6a1a4e6fd2c7346a858a2995b286cbbce407c2","unresolved":false,"context_lines":[{"line_number":997,"context_line":"                          PROPERTY1)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def test_property_delete_non_existing(self):"},{"line_number":1000,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1001,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1002,"context_line":"                          self.property_controller.delete, request, NAMESPACE5,"},{"line_number":1003,"context_line":"                          PROPERTY2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"8f0fb244_9dcc8cc1","line":1000,"range":{"start_line":1000,"start_character":59,"end_line":1000,"end_character":64},"in_reply_to":"a64d10fc_c81f4b5f","updated":"2021-08-19 19:44:54.000000000","message":"Yep - that makes sense.","commit_id":"fa0977f9e3cdb78b04be99cf19a67eb486be2a0c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9799790462f09f82fd4f9c0ffa7a2de311834491","unresolved":true,"context_lines":[{"line_number":997,"context_line":"                          PROPERTY1)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def test_property_delete_non_existing(self):"},{"line_number":1000,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1001,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1002,"context_line":"                          self.property_controller.delete, request, NAMESPACE5,"},{"line_number":1003,"context_line":"                          PROPERTY2)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1dca578e_2d20ae62","line":1000,"updated":"2021-08-24 14:48:31.000000000","message":"nit: we could add in the role implication bits here for completeness:\n\n  roles\u003d[\u0027admin\u0027, \u0027member\u0027, \u0027reader\u0027]\n\nBut we can do that in a follow up, too.","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6c54455d7919023a88f209afa8c2070ec6f42d0f","unresolved":true,"context_lines":[{"line_number":997,"context_line":"                          PROPERTY1)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def test_property_delete_non_existing(self):"},{"line_number":1000,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1001,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1002,"context_line":"                          self.property_controller.delete, request, NAMESPACE5,"},{"line_number":1003,"context_line":"                          PROPERTY2)"}],"source_content_type":"text/x-python","patch_set":19,"id":"49aba1a0_f03eef56","line":1000,"in_reply_to":"1dca578e_2d20ae62","updated":"2021-08-24 14:59:56.000000000","message":"Yes, need to be done for all occurrences at once.","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"31fecd3cd00cc86aed22cb3bc5a6850197cb3b16","unresolved":false,"context_lines":[{"line_number":997,"context_line":"                          PROPERTY1)"},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"    def test_property_delete_non_existing(self):"},{"line_number":1000,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1001,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1002,"context_line":"                          self.property_controller.delete, request, NAMESPACE5,"},{"line_number":1003,"context_line":"                          PROPERTY2)"}],"source_content_type":"text/x-python","patch_set":19,"id":"168af6bd_3b1fdcec","line":1000,"in_reply_to":"49aba1a0_f03eef56","updated":"2021-08-24 15:43:43.000000000","message":"Ack","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9799790462f09f82fd4f9c0ffa7a2de311834491","unresolved":true,"context_lines":[{"line_number":1004,"context_line":"        self.assertNotificationsLog([])"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    def test_property_delete_non_existing_namespace(self):"},{"line_number":1007,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1008,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1009,"context_line":"                          self.property_controller.delete, request, NAMESPACE4,"},{"line_number":1010,"context_line":"                          PROPERTY1)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ee3413ac_366d37a7","line":1007,"updated":"2021-08-24 14:48:31.000000000","message":"Ditto","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"31fecd3cd00cc86aed22cb3bc5a6850197cb3b16","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        self.assertNotificationsLog([])"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    def test_property_delete_non_existing_namespace(self):"},{"line_number":1007,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1008,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound,"},{"line_number":1009,"context_line":"                          self.property_controller.delete, request, NAMESPACE4,"},{"line_number":1010,"context_line":"                          PROPERTY1)"}],"source_content_type":"text/x-python","patch_set":19,"id":"6276e4dd_ad1c50d3","line":1007,"in_reply_to":"ee3413ac_366d37a7","updated":"2021-08-24 15:43:43.000000000","message":"Ack","commit_id":"7589e48541bd8efc9e5281e3a24296a3b5e2f207"}]}
