)]}'
{"doc/source/admin/config-rbac.rst":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4287204cb7e284309d5a2116c1f72b9f08717fce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1fa4df85_3c9c0069","updated":"2020-03-03 14:38:39.000000000","message":"I suppose there should be some word about address-scopes in this doc.\nI think it can be a follow-up patch that perhaps describes address-scope and subnetpool rbac here together andreferences both rfe number in the commit msg.","commit_id":"aa56f7792ba340fdf3d3517a653e8dff1c030554"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ccfa359650d5c8a19ffea4158fbaebb679e00f25","unresolved":false,"context_lines":[{"line_number":282,"context_line":"with an arbitrary number of projects."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"Sharing an address scope with specific projects"},{"line_number":286,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"Create an address scope to share:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1fa4df85_57223703","line":285,"updated":"2020-03-16 14:20:18.000000000","message":"Thanks, I forget this doc update since my last comment","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ffc00c93d10b8fa84572c643fd8239bd4278892b","unresolved":false,"context_lines":[{"line_number":297,"context_line":"   | ip_version        | 4                                    |"},{"line_number":298,"context_line":"   | location          | ...                                  |"},{"line_number":299,"context_line":"   | name              | my_address_scope                     |"},{"line_number":300,"context_line":"   | project_id        | 34304bc4f233470fa4a2448d153b6324     |"},{"line_number":301,"context_line":"   | shared            | False                                |"},{"line_number":302,"context_line":"   +-------------------+--------------------------------------+"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1fa4df85_899406ea","line":300,"range":{"start_line":300,"start_character":25,"end_line":300,"end_character":57},"updated":"2020-03-17 12:18:48.000000000","message":"nit: it\u0027s perhaps just my hate of numbers makes me say this:\nto make the reader\u0027s situation simpler instead of uuids you can change this to \u003cmy_project_id\u003e or similar","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6b4b4edb935c50ff65810c0b091dfe5ef5abe63e","unresolved":false,"context_lines":[{"line_number":297,"context_line":"   | ip_version        | 4                                    |"},{"line_number":298,"context_line":"   | location          | ...                                  |"},{"line_number":299,"context_line":"   | name              | my_address_scope                     |"},{"line_number":300,"context_line":"   | project_id        | 34304bc4f233470fa4a2448d153b6324     |"},{"line_number":301,"context_line":"   | shared            | False                                |"},{"line_number":302,"context_line":"   +-------------------+--------------------------------------+"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1fa4df85_949e3705","line":300,"range":{"start_line":300,"start_character":25,"end_line":300,"end_character":57},"in_reply_to":"1fa4df85_899406ea","updated":"2020-03-19 09:25:19.000000000","message":"I think it\u0027s fine here as it\u0027s example of CLI output","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ffc00c93d10b8fa84572c643fd8239bd4278892b","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Create the RBAC policy entry using the :command:`openstack network rbac create`"},{"line_number":306,"context_line":"command (in this example, the ID of the project we want to share with is"},{"line_number":307,"context_line":"``32016615de5d43bb88de99e7f2e26a1e``):"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":".. code-block:: console"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1fa4df85_69a18a46","line":307,"range":{"start_line":307,"start_character":2,"end_line":307,"end_character":34},"updated":"2020-03-17 12:18:48.000000000","message":"nit: in this case is \u003cproject_id_to_share_with\u003e or similar","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6b4b4edb935c50ff65810c0b091dfe5ef5abe63e","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Create the RBAC policy entry using the :command:`openstack network rbac create`"},{"line_number":306,"context_line":"command (in this example, the ID of the project we want to share with is"},{"line_number":307,"context_line":"``32016615de5d43bb88de99e7f2e26a1e``):"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":".. code-block:: console"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1fa4df85_149247f7","line":307,"range":{"start_line":307,"start_character":2,"end_line":307,"end_character":34},"in_reply_to":"1fa4df85_69a18a46","updated":"2020-03-19 09:25:19.000000000","message":"IMO it\u0027s fine as long as it\u0027s the same id as really in CLI output below","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"}],"neutron/db/address_scope_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6b4b4edb935c50ff65810c0b091dfe5ef5abe63e","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    __native_bulk_support \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _make_address_scope_dict(self, address_scope, fields\u003dNone):"},{"line_number":38,"context_line":"        res \u003d address_scope.to_dict()"},{"line_number":39,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_b4ba536b","line":37,"range":{"start_line":37,"start_character":33,"end_line":37,"end_character":37},"updated":"2020-03-19 09:25:19.000000000","message":"why this change?","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"fa7aa9851a18cc91da7ea35288abf0239e192a8e","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    __native_bulk_support \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _make_address_scope_dict(self, address_scope, fields\u003dNone):"},{"line_number":38,"context_line":"        res \u003d address_scope.to_dict()"},{"line_number":39,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_28183f1c","line":37,"range":{"start_line":37,"start_character":33,"end_line":37,"end_character":37},"in_reply_to":"1fa4df85_b4ba536b","updated":"2020-03-19 14:52:21.000000000","message":"Done","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"}],"neutron/db/migration/alembic_migrations/versions/ussuri/expand/46fb0c07e8cd_add_rbac_support_for_address_scope.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4287204cb7e284309d5a2116c1f72b9f08717fce","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            name\u003d\u0027uniq_address_scopes_rbacs0\u0027"},{"line_number":47,"context_line":"                            \u0027target_tenant0object_id0action\u0027)"},{"line_number":48,"context_line":"    )"},{"line_number":49,"context_line":"    op.bulk_insert(address_scope_rbacs,"},{"line_number":50,"context_line":"                   get_rbac_policies_for_shared_address_scopes())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    op.create_index(op.f(\u0027ix_address_scopes_rbacs_project_id\u0027),"},{"line_number":53,"context_line":"                    \u0027addressscoperbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_726b81b6","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":65},"updated":"2020-03-03 14:38:39.000000000","message":"I can\u0027t say I fully understand what happens here, so more a question: for other rbac stuff (network \u0026 qos) this bulk_insert stuff is in a contract script, why is in expand here?","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d5a21b5b9af1568b3eedb2c4a711d7e8372380e2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            name\u003d\u0027uniq_address_scopes_rbacs0\u0027"},{"line_number":47,"context_line":"                            \u0027target_tenant0object_id0action\u0027)"},{"line_number":48,"context_line":"    )"},{"line_number":49,"context_line":"    op.bulk_insert(address_scope_rbacs,"},{"line_number":50,"context_line":"                   get_rbac_policies_for_shared_address_scopes())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    op.create_index(op.f(\u0027ix_address_scopes_rbacs_project_id\u0027),"},{"line_number":53,"context_line":"                    \u0027addressscoperbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_4a3961f0","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":65},"in_reply_to":"1fa4df85_2aad0531","updated":"2020-03-12 08:57:26.000000000","message":"Hm, I thought contract migrations are forbidden from certain release - for rolling upgrade, so you should not drop anything. \nSome of core members should verify my statement.","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"ef85b163f3155f8f51d7b39b9c5e3c3084cb7fd6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            name\u003d\u0027uniq_address_scopes_rbacs0\u0027"},{"line_number":47,"context_line":"                            \u0027target_tenant0object_id0action\u0027)"},{"line_number":48,"context_line":"    )"},{"line_number":49,"context_line":"    op.bulk_insert(address_scope_rbacs,"},{"line_number":50,"context_line":"                   get_rbac_policies_for_shared_address_scopes())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    op.create_index(op.f(\u0027ix_address_scopes_rbacs_project_id\u0027),"},{"line_number":53,"context_line":"                    \u0027addressscoperbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_ad2fcaa5","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":65},"in_reply_to":"1fa4df85_4a3961f0","updated":"2020-03-12 14:55:17.000000000","message":"\u003e Hm, I thought contract migrations are forbidden from certain\n \u003e release - for rolling upgrade, so you should not drop anything.\n \u003e Some of core members should verify my statement.\n\nYou are correct https://review.opendev.org/#/c/400239/\nSo migrations should be in \"expand\" and shouldn\u0027t drop anything to be able to apply \"online\".","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"007a018bfa47f7ecc6ce3dee415aedb47e97a288","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            name\u003d\u0027uniq_address_scopes_rbacs0\u0027"},{"line_number":47,"context_line":"                            \u0027target_tenant0object_id0action\u0027)"},{"line_number":48,"context_line":"    )"},{"line_number":49,"context_line":"    op.bulk_insert(address_scope_rbacs,"},{"line_number":50,"context_line":"                   get_rbac_policies_for_shared_address_scopes())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    op.create_index(op.f(\u0027ix_address_scopes_rbacs_project_id\u0027),"},{"line_number":53,"context_line":"                    \u0027addressscoperbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_7ecadea1","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":65},"in_reply_to":"1fa4df85_4a3961f0","updated":"2020-03-12 10:09:08.000000000","message":"Contract migration is required anyway because we need somehow to migrate data from shared column to new RBAC\u0027s table","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"2c98fe817d5e416a35a2c5c593f277be575bf798","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            name\u003d\u0027uniq_address_scopes_rbacs0\u0027"},{"line_number":47,"context_line":"                            \u0027target_tenant0object_id0action\u0027)"},{"line_number":48,"context_line":"    )"},{"line_number":49,"context_line":"    op.bulk_insert(address_scope_rbacs,"},{"line_number":50,"context_line":"                   get_rbac_policies_for_shared_address_scopes())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    op.create_index(op.f(\u0027ix_address_scopes_rbacs_project_id\u0027),"},{"line_number":53,"context_line":"                    \u0027addressscoperbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_8f49fdb7","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":65},"in_reply_to":"1fa4df85_726b81b6","updated":"2020-03-11 19:47:00.000000000","message":"Done","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c700bc8948cfc53317e574447407530f27e4074e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                            name\u003d\u0027uniq_address_scopes_rbacs0\u0027"},{"line_number":47,"context_line":"                            \u0027target_tenant0object_id0action\u0027)"},{"line_number":48,"context_line":"    )"},{"line_number":49,"context_line":"    op.bulk_insert(address_scope_rbacs,"},{"line_number":50,"context_line":"                   get_rbac_policies_for_shared_address_scopes())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    op.create_index(op.f(\u0027ix_address_scopes_rbacs_project_id\u0027),"},{"line_number":53,"context_line":"                    \u0027addressscoperbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_2aad0531","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":65},"in_reply_to":"1fa4df85_8f49fdb7","updated":"2020-03-12 08:43:21.000000000","message":"Thanks, but You misunderstood me,if you check the migration scripts for network rbac:\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/db/migration/alembic_migrations/versions/liberty/contract/4ffceebfada_rbac_network.py\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/db/migration/alembic_migrations/versions/liberty/expand/8675309a5c4f_rbac_network.py\n\nthere\u0027s one expand and one contract script, and that\u0027s the same for QoS rbac.\n\nAfter some digging, I think I found the related comment for it:\nhttps://review.opendev.org/#/c/250081/2/neutron/db/migration/alembic_migrations/versions/mitaka/expand/15e43b934f81_rbac_qos_policy.py@64\n\nSo if I interpret it right:\n- keep upgrade in expand script\n- keep insert (i.e.: bulk_insert) in contract script.","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"}],"neutron/db/migration/alembic_migrations/versions/ussuri/expand/e4e236b0e1ff_add_rbac_support_for_address_scope.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d59faa945548288a08032b65a2bd1ca62f7c0635","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                       \u0027project_id\u0027: row[1], \u0027target_tenant\u0027: \u0027*\u0027,"},{"line_number":79,"context_line":"                       \u0027action\u0027: \u0027access_as_shared\u0027})"},{"line_number":80,"context_line":"    # this commit appears to be necessary to allow further operations"},{"line_number":81,"context_line":"    session.commit()"},{"line_number":82,"context_line":"    return values"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_c6342de1","line":81,"updated":"2020-03-17 10:36:15.000000000","message":"nit: I\u0027d find it more logical to have lines 71 and 81 in upgrade() and passing session in to get_rbac_...(), but that\u0027s maybe just me.","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"bd59d58a8772a98f8673b72dd445bb59880c9008","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                       \u0027project_id\u0027: row[1], \u0027target_tenant\u0027: \u0027*\u0027,"},{"line_number":79,"context_line":"                       \u0027action\u0027: \u0027access_as_shared\u0027})"},{"line_number":80,"context_line":"    # this commit appears to be necessary to allow further operations"},{"line_number":81,"context_line":"    session.commit()"},{"line_number":82,"context_line":"    return values"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_afe99eb7","line":81,"in_reply_to":"1fa4df85_c6342de1","updated":"2020-03-19 09:55:23.000000000","message":"The session object is used only in get_rbac_policies_for_shared_address_scopes() and is not unit-tested, so IMO dependency injection via function argument is not required here.","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6b4b4edb935c50ff65810c0b091dfe5ef5abe63e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                       \u0027project_id\u0027: row[1], \u0027target_tenant\u0027: \u0027*\u0027,"},{"line_number":79,"context_line":"                       \u0027action\u0027: \u0027access_as_shared\u0027})"},{"line_number":80,"context_line":"    # this commit appears to be necessary to allow further operations"},{"line_number":81,"context_line":"    session.commit()"},{"line_number":82,"context_line":"    return values"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_74713bde","line":81,"in_reply_to":"1fa4df85_c6342de1","updated":"2020-03-19 09:25:19.000000000","message":"for me it\u0027s fine in both ways :)","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"}],"neutron/db/models/address_scope.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6b4b4edb935c50ff65810c0b091dfe5ef5abe63e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    name \u003d sa.Column(sa.String(db_const.NAME_FIELD_SIZE), nullable\u003dFalse)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    # TODO(imalinovskiy): drop this field when contract migrations will be"},{"line_number":29,"context_line":"    # allowed again"},{"line_number":30,"context_line":"    # NOTE(imalinovskiy): this field cannot be removed from model due to"},{"line_number":31,"context_line":"    # functional test test_models_sync, trailing underscore is required to"},{"line_number":32,"context_line":"    # prevent conflicts with RBAC code"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_d44b4f84","line":29,"updated":"2020-03-19 09:25:19.000000000","message":"I\u0027m not sure if this todo can be done anytime :)","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"}],"neutron/objects/address_scope.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4287204cb7e284309d5a2116c1f72b9f08717fce","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":65,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":66,"context_line":"        \u0027name\u0027: obj_fields.StringField(),"},{"line_number":67,"context_line":"        \u0027shared\u0027: obj_fields.BooleanField(default\u003dFalse),"},{"line_number":68,"context_line":"        \u0027ip_version\u0027: common_types.IPVersionEnumField(),"},{"line_number":69,"context_line":"    }"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_52e1a529","line":67,"range":{"start_line":67,"start_character":42,"end_line":67,"end_character":55},"updated":"2020-03-03 14:38:39.000000000","message":"+1\nIn the original address-scope api-def it is default to False","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"}],"neutron/objects/rbac_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6b4b4edb935c50ff65810c0b091dfe5ef5abe63e","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        if \u0027shared\u0027 in self.obj_get_changes():"},{"line_number":251,"context_line":"            return"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        if db_obj:"},{"line_number":254,"context_line":"            # NOTE(korzen) db_obj is passed when object is loaded from DB"},{"line_number":255,"context_line":"            rbac_entries \u003d db_obj.get(\u0027rbac_entries\u0027) or {}"},{"line_number":256,"context_line":"            shared \u003d self.is_network_shared(self.obj_context, rbac_entries)"},{"line_number":257,"context_line":"        else:"},{"line_number":258,"context_line":"            # NOTE(korzen) this case is used when object was"},{"line_number":259,"context_line":"            # instantiated and without DB interaction (get_object(s), update,"},{"line_number":260,"context_line":"            # create), it should be rare case to load \u0027shared\u0027 by that method"},{"line_number":261,"context_line":"            shared \u003d self.get_shared_with_tenant("},{"line_number":262,"context_line":"                self.obj_context.elevated(),"},{"line_number":263,"context_line":"                self.rbac_db_cls,"},{"line_number":264,"context_line":"                self.id,"},{"line_number":265,"context_line":"                self.project_id"},{"line_number":266,"context_line":"            )"},{"line_number":267,"context_line":"        setattr(self, \u0027shared\u0027, shared)"},{"line_number":268,"context_line":"        self.obj_reset_changes([\u0027shared\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"def _update_post(self, obj_changes):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_2f17ee47","line":268,"range":{"start_line":253,"start_character":0,"end_line":268,"end_character":42},"updated":"2020-03-19 09:25:19.000000000","message":"this seems for me that is the same as method in neutron.objects.subnet module. And both classes inherits from same base class, so maybe You can move this to the base class and do here something like:\n\n    def _load_shared(self, db_obj\u003dNone):\n        if \u0027shared\u0027 in self.obj_get_changes():\n            return\n        super(RbacNeutronDbObjectMixin, self)._load_shared(db_obj)","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"718913b1009ccaa2bc616abd8c323bf6f4481057","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        if \u0027shared\u0027 in self.obj_get_changes():"},{"line_number":251,"context_line":"            return"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        if db_obj:"},{"line_number":254,"context_line":"            # NOTE(korzen) db_obj is passed when object is loaded from DB"},{"line_number":255,"context_line":"            rbac_entries \u003d db_obj.get(\u0027rbac_entries\u0027) or {}"},{"line_number":256,"context_line":"            shared \u003d self.is_network_shared(self.obj_context, rbac_entries)"},{"line_number":257,"context_line":"        else:"},{"line_number":258,"context_line":"            # NOTE(korzen) this case is used when object was"},{"line_number":259,"context_line":"            # instantiated and without DB interaction (get_object(s), update,"},{"line_number":260,"context_line":"            # create), it should be rare case to load \u0027shared\u0027 by that method"},{"line_number":261,"context_line":"            shared \u003d self.get_shared_with_tenant("},{"line_number":262,"context_line":"                self.obj_context.elevated(),"},{"line_number":263,"context_line":"                self.rbac_db_cls,"},{"line_number":264,"context_line":"                self.id,"},{"line_number":265,"context_line":"                self.project_id"},{"line_number":266,"context_line":"            )"},{"line_number":267,"context_line":"        setattr(self, \u0027shared\u0027, shared)"},{"line_number":268,"context_line":"        self.obj_reset_changes([\u0027shared\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"def _update_post(self, obj_changes):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4df85_733e30b9","line":268,"range":{"start_line":253,"start_character":0,"end_line":268,"end_character":42},"in_reply_to":"1fa4df85_2f17ee47","updated":"2020-03-19 10:13:19.000000000","message":"Subnet class uses NeutronDbObject as parent class, so it\u0027s not possible to use this method for Subnet.\n\nAlso, Subnet object uses rbac entries from Network object and code looks the same but is not equal.  \n\nLast but not least, lines 249-251 may cause side effects for Subnet object.","commit_id":"3336185c2e8a92d6ad3b5908757525a3c6c2031f"}],"releasenotes/notes/add-address-scope-rbac-a903ff28f6457606.yaml":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4287204cb7e284309d5a2116c1f72b9f08717fce","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Address pool is now supported via the network RBAC mechanism."},{"line_number":5,"context_line":"    Please refer to the admin guide for further details."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1fa4df85_5f43eeaf","line":4,"range":{"start_line":4,"start_character":12,"end_line":4,"end_character":16},"updated":"2020-03-03 14:38:39.000000000","message":"nit: ``address-scope`` ?","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"2c98fe817d5e416a35a2c5c593f277be575bf798","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Address pool is now supported via the network RBAC mechanism."},{"line_number":5,"context_line":"    Please refer to the admin guide for further details."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1fa4df85_4fcd452f","line":4,"range":{"start_line":4,"start_character":12,"end_line":4,"end_character":16},"in_reply_to":"1fa4df85_5f43eeaf","updated":"2020-03-11 19:47:00.000000000","message":"Done","commit_id":"10ed06976358ffee42044316aad43925e3ab2fbd"}]}
