)]}'
{"doc/source/admin/config-rbac.rst":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b7ae5f51292d8d108272e0815c36b9602fc3157b","unresolved":false,"context_lines":[{"line_number":359,"context_line":"with an arbitrary number of projects."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Sharing a subnet pool with specific projects"},{"line_number":362,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Create an subnet pool to share:"},{"line_number":365,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df33271e_5e39f6ef","line":362,"range":{"start_line":362,"start_character":44,"end_line":362,"end_character":47},"updated":"2020-03-30 20:47:31.000000000","message":"nitty nit: please remove those chars, it should be aligned to line above","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"45cbb7f8a75240f115cdf4fec644da2f113d055c","unresolved":false,"context_lines":[{"line_number":359,"context_line":"with an arbitrary number of projects."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Sharing a subnet pool with specific projects"},{"line_number":362,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Create an subnet pool to share:"},{"line_number":365,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df33271e_4404207f","line":362,"range":{"start_line":362,"start_character":44,"end_line":362,"end_character":47},"in_reply_to":"df33271e_5e39f6ef","updated":"2020-04-03 13:43:34.000000000","message":"Done","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8c8828dce0aaf307aa9b2b9314be9303414e53da","unresolved":false,"context_lines":[{"line_number":361,"context_line":"Sharing a subnet pool with specific projects"},{"line_number":362,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Create an subnet pool to share:"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":".. code-block:: console"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df33271e_e5eae5d5","line":364,"range":{"start_line":364,"start_character":7,"end_line":364,"end_character":9},"updated":"2020-03-31 14:36:05.000000000","message":"nit: an -\u003e a","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"45cbb7f8a75240f115cdf4fec644da2f113d055c","unresolved":false,"context_lines":[{"line_number":361,"context_line":"Sharing a subnet pool with specific projects"},{"line_number":362,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Create an subnet pool to share:"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":".. code-block:: console"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df33271e_24091c95","line":364,"range":{"start_line":364,"start_character":7,"end_line":364,"end_character":9},"in_reply_to":"df33271e_e5eae5d5","updated":"2020-04-03 13:43:34.000000000","message":"Done","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"}],"neutron/db/db_base_plugin_common.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6a2837fce4fbb1f5fea95419263fab1f846b0ae0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"               \u0027max_prefixlen\u0027: max_prefixlen,"},{"line_number":208,"context_line":"               \u0027is_default\u0027: subnetpool[\u0027is_default\u0027],"},{"line_number":209,"context_line":"               \u0027shared\u0027: subnetpool[\u0027shared\u0027],"},{"line_number":210,"context_line":"               \u0027prefixes\u0027: [str(prefix.cidr)"},{"line_number":211,"context_line":"                            for prefix in subnetpool[\u0027prefixes\u0027]],"},{"line_number":212,"context_line":"               \u0027ip_version\u0027: subnetpool[\u0027ip_version\u0027],"},{"line_number":213,"context_line":"               \u0027default_quota\u0027: subnetpool[\u0027default_quota\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_8f98626a","line":210,"range":{"start_line":210,"start_character":28,"end_line":210,"end_character":32},"updated":"2020-03-19 10:06:20.000000000","message":"is this change needed?","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b9b0c774aaffeb86b23e75e634deac4f52adaed5","unresolved":false,"context_lines":[{"line_number":207,"context_line":"               \u0027max_prefixlen\u0027: max_prefixlen,"},{"line_number":208,"context_line":"               \u0027is_default\u0027: subnetpool[\u0027is_default\u0027],"},{"line_number":209,"context_line":"               \u0027shared\u0027: subnetpool[\u0027shared\u0027],"},{"line_number":210,"context_line":"               \u0027prefixes\u0027: [str(prefix.cidr)"},{"line_number":211,"context_line":"                            for prefix in subnetpool[\u0027prefixes\u0027]],"},{"line_number":212,"context_line":"               \u0027ip_version\u0027: subnetpool[\u0027ip_version\u0027],"},{"line_number":213,"context_line":"               \u0027default_quota\u0027: subnetpool[\u0027default_quota\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_8d0b8528","line":210,"range":{"start_line":210,"start_character":28,"end_line":210,"end_character":32},"in_reply_to":"1fa4df85_8f98626a","updated":"2020-03-19 14:40:46.000000000","message":"Yes, it is needed because subnetpool is NeutronObject now, not DB model as it was before.","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b7ae5f51292d8d108272e0815c36b9602fc3157b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"               \u0027default_quota\u0027: subnetpool[\u0027default_quota\u0027],"},{"line_number":214,"context_line":"               \u0027address_scope_id\u0027: subnetpool[\u0027address_scope_id\u0027]}"},{"line_number":215,"context_line":"        resource_extend.apply_funcs("},{"line_number":216,"context_line":"            subnetpool_def.COLLECTION_NAME, res, subnetpool.db_obj)"},{"line_number":217,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _make_port_dict(self, port, fields\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_0106ef1d","line":216,"updated":"2020-03-30 20:47:31.000000000","message":"I don\u0027t understand exactly why this change is needed","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"3f97a85c910593c58cc3a6fae3b5768f6441e608","unresolved":false,"context_lines":[{"line_number":213,"context_line":"               \u0027default_quota\u0027: subnetpool[\u0027default_quota\u0027],"},{"line_number":214,"context_line":"               \u0027address_scope_id\u0027: subnetpool[\u0027address_scope_id\u0027]}"},{"line_number":215,"context_line":"        resource_extend.apply_funcs("},{"line_number":216,"context_line":"            subnetpool_def.COLLECTION_NAME, res, subnetpool.db_obj)"},{"line_number":217,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _make_port_dict(self, port, fields\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_02542420","line":216,"in_reply_to":"df33271e_0106ef1d","updated":"2020-03-31 10:38:37.000000000","message":"SubnetPool object class has mixin RbacNeutronDbObjectMixin which provides functionality to load state of the calculated `shared` attribute (Actual code is here https://review.opendev.org/#/c/709122/13/neutron/objects/rbac_db.py)\n\nTo be able to use this common code we need to call _make_subnetpool_dict() method with subnetpool object as an argument instead of db_object as it was before. (Introduced here https://review.opendev.org/#/c/710755/9/neutron/db/db_base_plugin_v2.py)\n\nThis particular change is required to stringify prefix objects to maintain proper output from this function.\n\nAlso, we need to pass here subnetpool.db_obj to all hook functions because they expect db_object.","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5d43f6c6d925d997b13f7562104ce3d61472b80a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"               \u0027default_quota\u0027: subnetpool[\u0027default_quota\u0027],"},{"line_number":214,"context_line":"               \u0027address_scope_id\u0027: subnetpool[\u0027address_scope_id\u0027]}"},{"line_number":215,"context_line":"        resource_extend.apply_funcs("},{"line_number":216,"context_line":"            subnetpool_def.COLLECTION_NAME, res, subnetpool.db_obj)"},{"line_number":217,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _make_port_dict(self, port, fields\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_295b8c54","line":216,"in_reply_to":"df33271e_02542420","updated":"2020-04-06 09:56:43.000000000","message":"ok, sounds good for me. Thx for explanation.","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b7ae5f51292d8d108272e0815c36b9602fc3157b","unresolved":false,"context_lines":[{"line_number":1249,"context_line":"        subnetpool \u003d subnetpool_obj.SubnetPool(context, **pool_args)"},{"line_number":1250,"context_line":"        subnetpool.create()"},{"line_number":1251,"context_line":""},{"line_number":1252,"context_line":"        return self._make_subnetpool_dict(subnetpool)"},{"line_number":1253,"context_line":""},{"line_number":1254,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1255,"context_line":"    def update_subnetpool(self, context, id, subnetpool):"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_410c773a","line":1252,"updated":"2020-03-30 20:47:31.000000000","message":"and also why all changes like this one in this file are needed","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e206137a0581e12de70232811e5358b922ebaa15","unresolved":false,"context_lines":[{"line_number":1249,"context_line":"        subnetpool \u003d subnetpool_obj.SubnetPool(context, **pool_args)"},{"line_number":1250,"context_line":"        subnetpool.create()"},{"line_number":1251,"context_line":""},{"line_number":1252,"context_line":"        return self._make_subnetpool_dict(subnetpool.db_obj)"},{"line_number":1253,"context_line":""},{"line_number":1254,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1255,"context_line":"    def update_subnetpool(self, context, id, subnetpool):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_d44fd967","side":"PARENT","line":1252,"range":{"start_line":1252,"start_character":53,"end_line":1252,"end_character":59},"updated":"2020-04-08 13:41:31.000000000","message":"Why do you need this change? \"_make_subnetpool_dict\" does not change and in the call \"resource_extend.apply_funcs\" you are passing the db object.","commit_id":"eb6104c0ac61216234ea958f2fd322e70b8e4bec"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"79732b30850ff04b187b4e481f4361cd0a422cc1","unresolved":false,"context_lines":[{"line_number":1249,"context_line":"        subnetpool \u003d subnetpool_obj.SubnetPool(context, **pool_args)"},{"line_number":1250,"context_line":"        subnetpool.create()"},{"line_number":1251,"context_line":""},{"line_number":1252,"context_line":"        return self._make_subnetpool_dict(subnetpool.db_obj)"},{"line_number":1253,"context_line":""},{"line_number":1254,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1255,"context_line":"    def update_subnetpool(self, context, id, subnetpool):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_e38e9c25","side":"PARENT","line":1252,"range":{"start_line":1252,"start_character":53,"end_line":1252,"end_character":59},"in_reply_to":"df33271e_d44fd967","updated":"2020-04-08 14:55:36.000000000","message":"See explanation here https://review.opendev.org/#/c/710755/9/neutron/db/db_base_plugin_common.py","commit_id":"eb6104c0ac61216234ea958f2fd322e70b8e4bec"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d6c5b00f5828de7937ffba71439841c4ff918d0d","unresolved":false,"context_lines":[{"line_number":1249,"context_line":"        subnetpool \u003d subnetpool_obj.SubnetPool(context, **pool_args)"},{"line_number":1250,"context_line":"        subnetpool.create()"},{"line_number":1251,"context_line":""},{"line_number":1252,"context_line":"        return self._make_subnetpool_dict(subnetpool.db_obj)"},{"line_number":1253,"context_line":""},{"line_number":1254,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1255,"context_line":"    def update_subnetpool(self, context, id, subnetpool):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_348098bf","side":"PARENT","line":1252,"range":{"start_line":1252,"start_character":53,"end_line":1252,"end_character":59},"in_reply_to":"df33271e_e38e9c25","updated":"2020-04-09 16:49:29.000000000","message":"+1","commit_id":"eb6104c0ac61216234ea958f2fd322e70b8e4bec"}],"neutron/db/migration/alembic_migrations/versions/ussuri/expand/e88badaa9591_add_rbac_support_for_subnetpool.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e206137a0581e12de70232811e5358b922ebaa15","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        get_rbac_policies_for_shared_subnetpools()"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    op.create_index(op.f(\u0027ix_subnetpoolrbacs_project_id\u0027),"},{"line_number":60,"context_line":"                    \u0027subnetpoolrbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_rbac_policies_for_shared_subnetpools():"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_72fedd38","line":60,"range":{"start_line":59,"start_character":4,"end_line":60,"end_character":68},"updated":"2020-04-08 13:41:31.000000000","message":"Why don\u0027t you create this index in the table creation?\n\nop.create_table(\n  ...\n  sa.Index(op.f(\u0027ix_subnetpoolrbacs_project_id\u0027),\n           \u0027subnetpoolrbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)\n)","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d6c5b00f5828de7937ffba71439841c4ff918d0d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        get_rbac_policies_for_shared_subnetpools()"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    op.create_index(op.f(\u0027ix_subnetpoolrbacs_project_id\u0027),"},{"line_number":60,"context_line":"                    \u0027subnetpoolrbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_rbac_policies_for_shared_subnetpools():"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_b4730816","line":60,"range":{"start_line":59,"start_character":4,"end_line":60,"end_character":68},"in_reply_to":"df33271e_43cb0849","updated":"2020-04-09 16:49:29.000000000","message":"Makes sense to calculate just once the table indexes.","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"79732b30850ff04b187b4e481f4361cd0a422cc1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        get_rbac_policies_for_shared_subnetpools()"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    op.create_index(op.f(\u0027ix_subnetpoolrbacs_project_id\u0027),"},{"line_number":60,"context_line":"                    \u0027subnetpoolrbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_rbac_policies_for_shared_subnetpools():"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_43cb0849","line":60,"range":{"start_line":59,"start_character":4,"end_line":60,"end_character":68},"in_reply_to":"df33271e_72fedd38","updated":"2020-04-08 14:55:36.000000000","message":"This is needed to speed up bulk_insert above.","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"}],"neutron/extensions/rbac.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6a2837fce4fbb1f5fea95419263fab1f846b0ae0","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class RbacPolicyInitError(n_exc.PolicyInitError):"},{"line_number":43,"context_line":"    message \u003d _(\"Failed to create RBAC policy on object %(object_id)s\""},{"line_number":44,"context_line":"                \" because %(reason)s.\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def convert_valid_object_type(otype):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_efba36be","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":18},"updated":"2020-03-19 10:06:20.000000000","message":"nitty nit: our general convention is to put such space in at the end of the above line","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b9b0c774aaffeb86b23e75e634deac4f52adaed5","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class RbacPolicyInitError(n_exc.PolicyInitError):"},{"line_number":43,"context_line":"    message \u003d _(\"Failed to create RBAC policy on object %(object_id)s\""},{"line_number":44,"context_line":"                \" because %(reason)s.\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def convert_valid_object_type(otype):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_6813975d","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":18},"in_reply_to":"1fa4df85_efba36be","updated":"2020-03-19 14:40:46.000000000","message":"Done","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"}],"neutron/extensions/rbac_subnetpool.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8c8828dce0aaf307aa9b2b9314be9303414e53da","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Rbac_subnetpool(extensions.APIExtensionDescriptor):"},{"line_number":20,"context_line":"    \"\"\"Extension class supporting security groups RBAC.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    api_definition \u003d rbac_subnetpool"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_003377f7","line":20,"range":{"start_line":20,"start_character":34,"end_line":20,"end_character":42},"updated":"2020-03-31 14:36:05.000000000","message":"subnetpool :-)","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"45cbb7f8a75240f115cdf4fec644da2f113d055c","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Rbac_subnetpool(extensions.APIExtensionDescriptor):"},{"line_number":20,"context_line":"    \"\"\"Extension class supporting security groups RBAC.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    api_definition \u003d rbac_subnetpool"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_0447b8be","line":20,"range":{"start_line":20,"start_character":34,"end_line":20,"end_character":42},"in_reply_to":"df33271e_003377f7","updated":"2020-04-03 13:43:34.000000000","message":"Done","commit_id":"9826551721ac107cfd6b769d462a063c7d87f20e"}],"neutron/objects/rbac_db.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e206137a0581e12de70232811e5358b922ebaa15","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                    payload\u003dNone):"},{"line_number":162,"context_line":"        \"\"\"Callback to handle RBAC_POLICY, BEFORE_CREATE callback."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :raises: RbacPolicyInUse -- in case the update is forbidden."},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        pass"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_ad1644f0","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":68},"updated":"2020-04-08 13:41:31.000000000","message":"We don\u0027t raise this exception here.","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"77b96ef084a0725427a8c93a37f9c7546c399cbb","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                    payload\u003dNone):"},{"line_number":162,"context_line":"        \"\"\"Callback to handle RBAC_POLICY, BEFORE_CREATE callback."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :raises: RbacPolicyInUse -- in case the update is forbidden."},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        pass"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_f960e9a7","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":68},"in_reply_to":"df33271e_ad1644f0","updated":"2020-04-09 16:36:02.000000000","message":"Done","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"}],"neutron/objects/subnetpool.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6a2837fce4fbb1f5fea95419263fab1f846b0ae0","unresolved":false,"context_lines":[{"line_number":56,"context_line":"@base.NeutronObjectRegistry.register"},{"line_number":57,"context_line":"class SubnetPool(rbac_db.NeutronRbacObject):"},{"line_number":58,"context_line":"    # Version 1.0: Initial version"},{"line_number":59,"context_line":"    # Vrsion 1.1: Add RBAC support"},{"line_number":60,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    # required by RbacNeutronMetaclass"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_0fc5523c","line":59,"range":{"start_line":59,"start_character":6,"end_line":59,"end_character":12},"updated":"2020-03-19 10:06:20.000000000","message":"nit: s/Version","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b9b0c774aaffeb86b23e75e634deac4f52adaed5","unresolved":false,"context_lines":[{"line_number":56,"context_line":"@base.NeutronObjectRegistry.register"},{"line_number":57,"context_line":"class SubnetPool(rbac_db.NeutronRbacObject):"},{"line_number":58,"context_line":"    # Version 1.0: Initial version"},{"line_number":59,"context_line":"    # Vrsion 1.1: Add RBAC support"},{"line_number":60,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    # required by RbacNeutronMetaclass"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_683cf7c7","line":59,"range":{"start_line":59,"start_character":6,"end_line":59,"end_character":12},"in_reply_to":"1fa4df85_0fc5523c","updated":"2020-03-19 14:40:46.000000000","message":"Done","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6a2837fce4fbb1f5fea95419263fab1f846b0ae0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        if matching_policies \u003d\u003d 0:"},{"line_number":157,"context_line":"            raise ext_rbac.RbacPolicyInitError("},{"line_number":158,"context_line":"                object_id\u003dpolicy[\u0027object_id\u0027],"},{"line_number":159,"context_line":"                reason\u003d_(\u0027target project doesn\\\u0027t have access to \u0027"},{"line_number":160,"context_line":"                         \u0027associated address scope.\u0027))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_af02fe6d","line":159,"range":{"start_line":159,"start_character":46,"end_line":159,"end_character":47},"updated":"2020-03-19 10:06:20.000000000","message":"nitty nit: if You would put whole string in double quotes than this wouldn\u0027t be needed :)","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b9b0c774aaffeb86b23e75e634deac4f52adaed5","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        if matching_policies \u003d\u003d 0:"},{"line_number":157,"context_line":"            raise ext_rbac.RbacPolicyInitError("},{"line_number":158,"context_line":"                object_id\u003dpolicy[\u0027object_id\u0027],"},{"line_number":159,"context_line":"                reason\u003d_(\u0027target project doesn\\\u0027t have access to \u0027"},{"line_number":160,"context_line":"                         \u0027associated address scope.\u0027))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_2847df4e","line":159,"range":{"start_line":159,"start_character":46,"end_line":159,"end_character":47},"in_reply_to":"1fa4df85_af02fe6d","updated":"2020-03-19 14:40:46.000000000","message":"Done","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e206137a0581e12de70232811e5358b922ebaa15","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    db_model \u003d rbac_db_models.SubnetPoolRBAC"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def get_projects(cls, context, object_id\u003dNone, action\u003dNone,"},{"line_number":42,"context_line":"                     target_tenant\u003dNone):"},{"line_number":43,"context_line":"        clauses \u003d []"},{"line_number":44,"context_line":"        if object_id:"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_97d553e8","line":41,"updated":"2020-04-08 13:41:31.000000000","message":"This method is implemented in the abc class RBACBaseObject, but using a specific model (NetworkRBAC). Instead of this, the abc class should implement a generic \"get_projects\" function using the cls db_model from the child class.","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"77b96ef084a0725427a8c93a37f9c7546c399cbb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    db_model \u003d rbac_db_models.SubnetPoolRBAC"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def get_projects(cls, context, object_id\u003dNone, action\u003dNone,"},{"line_number":42,"context_line":"                     target_tenant\u003dNone):"},{"line_number":43,"context_line":"        clauses \u003d []"},{"line_number":44,"context_line":"        if object_id:"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_14ad949a","line":41,"in_reply_to":"df33271e_97d553e8","updated":"2020-04-09 16:36:02.000000000","message":"Done","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e206137a0581e12de70232811e5358b922ebaa15","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            # Nothing to validate"},{"line_number":138,"context_line":"            return"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        rbac_as_model \u003d rbac_db_models.AddressScopeRBAC"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        # Ensure that target project has access to AS"},{"line_number":143,"context_line":"        shared_to_target_project_or_to_all \u003d ("},{"line_number":144,"context_line":"            sa.and_("},{"line_number":145,"context_line":"                rbac_as_model.target_tenant.in_("},{"line_number":146,"context_line":"                    [\"*\", policy[\u0027target_tenant\u0027]]"},{"line_number":147,"context_line":"                ),"},{"line_number":148,"context_line":"                rbac_as_model.object_id \u003d\u003d db_obj[\"address_scope_id\"]"},{"line_number":149,"context_line":"            )"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        matching_policies \u003d model_query.query_with_hooks("},{"line_number":153,"context_line":"            context, rbac_db_models.AddressScopeRBAC"},{"line_number":154,"context_line":"        ).filter(shared_to_target_project_or_to_all).count()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        if matching_policies \u003d\u003d 0:"},{"line_number":157,"context_line":"            raise ext_rbac.RbacPolicyInitError("}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_4d8338cd","line":154,"range":{"start_line":140,"start_character":0,"end_line":154,"end_character":60},"updated":"2020-04-08 13:41:31.000000000","message":"This should be a method in the AddressScopeRBAC object class (neutron.objects.address_scope.AddressScopeRBAC)","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d6c5b00f5828de7937ffba71439841c4ff918d0d","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            # Nothing to validate"},{"line_number":138,"context_line":"            return"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        rbac_as_model \u003d rbac_db_models.AddressScopeRBAC"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        # Ensure that target project has access to AS"},{"line_number":143,"context_line":"        shared_to_target_project_or_to_all \u003d ("},{"line_number":144,"context_line":"            sa.and_("},{"line_number":145,"context_line":"                rbac_as_model.target_tenant.in_("},{"line_number":146,"context_line":"                    [\"*\", policy[\u0027target_tenant\u0027]]"},{"line_number":147,"context_line":"                ),"},{"line_number":148,"context_line":"                rbac_as_model.object_id \u003d\u003d db_obj[\"address_scope_id\"]"},{"line_number":149,"context_line":"            )"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        matching_policies \u003d model_query.query_with_hooks("},{"line_number":153,"context_line":"            context, rbac_db_models.AddressScopeRBAC"},{"line_number":154,"context_line":"        ).filter(shared_to_target_project_or_to_all).count()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        if matching_policies \u003d\u003d 0:"},{"line_number":157,"context_line":"            raise ext_rbac.RbacPolicyInitError("}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_f4f0f069","line":154,"range":{"start_line":140,"start_character":0,"end_line":154,"end_character":60},"in_reply_to":"df33271e_4d8338cd","updated":"2020-04-09 16:49:29.000000000","message":"We should not mix DB operations from different objects. But I think we can move this later.","commit_id":"0cdfc8be1a7351d6d9ea150086a552d1c5bb4544"}],"neutron/tests/contrib/hooks/api_all_extensions":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6a2837fce4fbb1f5fea95419263fab1f846b0ae0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",rbac-policies\""},{"line_number":48,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",rbac-address-scope\"\""},{"line_number":49,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",rbac-security-groups\"\""},{"line_number":50,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",rbac-subnetpool\"\""},{"line_number":51,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",router\""},{"line_number":52,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",router-admin-state-down-before-update\""},{"line_number":53,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",router_availability_zone\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"1fa4df85_cf617a3b","line":50,"updated":"2020-03-19 10:06:20.000000000","message":"this can be added here, but this file isn\u0027t used in zuul v3 jobs in fact. It has to be added in neutron-tempest-plugin repo in .zuul.yaml file directly","commit_id":"a00e49bea0a081f696dd43e8bb001895944f5bc7"}]}
