)]}'
{"doc/source/admin/config-rbac.rst":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8dcee8c5ed4c2c44f98b94570e75706fad87f6b4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* Regular port creation permissions on networks (since Liberty)."},{"line_number":18,"context_line":"* Binding QoS policies permissions to networks or ports (since Mitaka)."},{"line_number":19,"context_line":"* Attaching router gateways to networks (since Mitaka)."},{"line_number":20,"context_line":"* Binding security groups to ports (since Sierra)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Sharing an object with specific projects"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9fdfeff1_b0905644","line":20,"range":{"start_line":20,"start_character":42,"end_line":20,"end_character":48},"updated":"2019-02-21 11:49:17.000000000","message":"what is Sierra? Did You mean Stein?","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"7dea630acd12ce04fbb2d0a95556554adb64714e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* Regular port creation permissions on networks (since Liberty)."},{"line_number":18,"context_line":"* Binding QoS policies permissions to networks or ports (since Mitaka)."},{"line_number":19,"context_line":"* Attaching router gateways to networks (since Mitaka)."},{"line_number":20,"context_line":"* Binding security groups to ports (since Sierra)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Sharing an object with specific projects"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9fdfeff1_8fcaac4c","line":20,"range":{"start_line":20,"start_character":42,"end_line":20,"end_character":48},"in_reply_to":"9fdfeff1_b0905644","updated":"2019-02-22 18:45:52.000000000","message":"Done","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"357a4bd6949c129b96b168037b973158a4f232f5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"* Regular port creation permissions on networks (since Liberty)."},{"line_number":18,"context_line":"* Binding QoS policies permissions to networks or ports (since Mitaka)."},{"line_number":19,"context_line":"* Attaching router gateways to networks (since Mitaka)."},{"line_number":20,"context_line":"* Binding security groups to ports (since Sierra)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Sharing an object with specific projects"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9fdfeff1_dc01673b","line":20,"range":{"start_line":20,"start_character":42,"end_line":20,"end_character":48},"in_reply_to":"9fdfeff1_b0905644","updated":"2019-02-21 18:25:31.000000000","message":"Yes, oops. Apple on the brain, I guess.","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"}],"neutron/conf/policies/security_group.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8dcee8c5ed4c2c44f98b94570e75706fad87f6b4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    ),"},{"line_number":38,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":39,"context_line":"        \u0027get_security_group\u0027,"},{"line_number":40,"context_line":"        base.RULE_ANY,"},{"line_number":41,"context_line":"        \u0027Get a security group\u0027,"},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_70b3ceea","line":40,"updated":"2019-02-21 11:49:17.000000000","message":"why this change in default policy is required?","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"357a4bd6949c129b96b168037b973158a4f232f5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    ),"},{"line_number":38,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":39,"context_line":"        \u0027get_security_group\u0027,"},{"line_number":40,"context_line":"        base.RULE_ANY,"},{"line_number":41,"context_line":"        \u0027Get a security group\u0027,"},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_bcf6e35c","line":40,"in_reply_to":"9fdfeff1_70b3ceea","updated":"2019-02-21 18:25:31.000000000","message":"It now matches the other RBAC objects. The neutron/objects interface already enforces permissions.","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"}],"neutron/db/migration/alembic_migrations/versions/stein/expand/9bfad3f1e780_support_shared_security_groups.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"0f50885cb08dcafc1e08dbe293762d4d1267ec96","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":44,"context_line":"        sa.UniqueConstraint(\u0027target_tenant\u0027, \u0027object_id\u0027, \u0027action\u0027),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027"},{"line_number":46,"context_line":"    )"},{"line_number":47,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":48,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_c7abe672","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":29},"updated":"2019-02-07 08:19:48.000000000","message":"this is not needed","commit_id":"5b728b2cedecd04926b662207bf6e0c9cbc741ac"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"dc4b900cc6340bc9541f494f1c489284a9db3c3c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":44,"context_line":"        sa.UniqueConstraint(\u0027target_tenant\u0027, \u0027object_id\u0027, \u0027action\u0027),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027"},{"line_number":46,"context_line":"    )"},{"line_number":47,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":48,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_04b8ff27","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":29},"in_reply_to":"9fdfeff1_c7abe672","updated":"2019-02-07 18:35:51.000000000","message":"Done","commit_id":"5b728b2cedecd04926b662207bf6e0c9cbc741ac"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"cf55eff84c3a55fa1b885ea72f2134a07ff04cde","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        sa.ForeignKeyConstraint([\u0027object_id\u0027], [\u0027securitygroups.id\u0027],"},{"line_number":42,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":44,"context_line":"        sa.UniqueConstraint(\u0027target_tenant\u0027, \u0027object_id\u0027, \u0027action\u0027)"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":47,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_45e4530d","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":67},"updated":"2019-02-14 08:31:38.000000000","message":"it would be nice to set name of uniqueconstaint here, as it is generated differently on different backends.","commit_id":"f6f5bd98d0928fb35a3f2353a02ccf6d017da32e"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"2433359b41a52551516d5521c99abb96c773f481","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        sa.ForeignKeyConstraint([\u0027object_id\u0027], [\u0027securitygroups.id\u0027],"},{"line_number":42,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":44,"context_line":"        sa.UniqueConstraint(\u0027target_tenant\u0027, \u0027object_id\u0027, \u0027action\u0027)"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":47,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_610b597c","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":67},"in_reply_to":"9fdfeff1_45e4530d","updated":"2019-02-17 03:26:59.000000000","message":"Done, is that correct?","commit_id":"f6f5bd98d0928fb35a3f2353a02ccf6d017da32e"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"35d6104832ebfe2207c484f3c0b3c35daf0af0da","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        sa.ForeignKeyConstraint([\u0027object_id\u0027], [\u0027securitygroups.id\u0027],"},{"line_number":42,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":44,"context_line":"        sa.UniqueConstraint(\u0027target_tenant\u0027, \u0027object_id\u0027, \u0027action\u0027)"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":47,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_cbc25f34","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":67},"in_reply_to":"9fdfeff1_480c35eb","updated":"2019-02-17 17:48:38.000000000","message":"Wonderful .examples, thank you!","commit_id":"f6f5bd98d0928fb35a3f2353a02ccf6d017da32e"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6141c23d5df7477c2689df4ed7460ec74e7aa555","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        sa.ForeignKeyConstraint([\u0027object_id\u0027], [\u0027securitygroups.id\u0027],"},{"line_number":42,"context_line":"                                ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":44,"context_line":"        sa.UniqueConstraint(\u0027target_tenant\u0027, \u0027object_id\u0027, \u0027action\u0027)"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":47,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_480c35eb","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":67},"in_reply_to":"9fdfeff1_610b597c","updated":"2019-02-17 12:54:02.000000000","message":"Not exactly, here are some examples:\nhttps://github.com/openstack/neutron/blob/master/neutron/db/migration/alembic_migrations/versions/rocky/expand/867d39095bf4_port_forwarding.py#L55-L58","commit_id":"f6f5bd98d0928fb35a3f2353a02ccf6d017da32e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8dcee8c5ed4c2c44f98b94570e75706fad87f6b4","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    # ### commands auto generated by Alembic - please adjust! ###"},{"line_number":35,"context_line":"    op.create_table(\u0027securitygrouprbacs\u0027,"},{"line_number":36,"context_line":"        sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_d0c39a37","line":34,"updated":"2019-02-21 11:49:17.000000000","message":"this comment can be probably removed, no?","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"7dea630acd12ce04fbb2d0a95556554adb64714e","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    # ### commands auto generated by Alembic - please adjust! ###"},{"line_number":35,"context_line":"    op.create_table(\u0027securitygrouprbacs\u0027,"},{"line_number":36,"context_line":"        sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_6fbf48aa","line":34,"in_reply_to":"9fdfeff1_7c963bf2","updated":"2019-02-22 18:45:52.000000000","message":"Done","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"357a4bd6949c129b96b168037b973158a4f232f5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    # ### commands auto generated by Alembic - please adjust! ###"},{"line_number":35,"context_line":"    op.create_table(\u0027securitygrouprbacs\u0027,"},{"line_number":36,"context_line":"        sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_7c963bf2","line":34,"in_reply_to":"9fdfeff1_d0c39a37","updated":"2019-02-21 18:25:31.000000000","message":"ok","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8dcee8c5ed4c2c44f98b94570e75706fad87f6b4","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    )"},{"line_number":48,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":49,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"},{"line_number":50,"context_line":"    # ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_dc2c11ae","line":50,"updated":"2019-02-21 11:49:17.000000000","message":"and this one too","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"7dea630acd12ce04fbb2d0a95556554adb64714e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    )"},{"line_number":48,"context_line":"    op.create_index(op.f(\u0027ix_securitygrouprbacs_project_id\u0027),"},{"line_number":49,"context_line":"                    \u0027securitygrouprbacs\u0027, [\u0027project_id\u0027], unique\u003dFalse)"},{"line_number":50,"context_line":"    # ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":13,"id":"9fdfeff1_0fdc7c16","line":50,"in_reply_to":"9fdfeff1_dc2c11ae","updated":"2019-02-22 18:45:52.000000000","message":"Done","commit_id":"2d60be279eac93a082acdb21a04253005e08f861"}]}
