)]}'
{"neutron/db/migration/alembic_migrations/versions/wallaby/contract/f24caa24e9b1_add_standard_attributes_to_address_group.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6fed9e50363805d4edfb79eb0b0a3bba408b5edc","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    op.create_unique_constraint("},{"line_number":79,"context_line":"        constraint_name\u003d\u0027uniq_%s0standard_attr_id\u0027 % TABLE,"},{"line_number":80,"context_line":"        table_name\u003dTABLE, columns\u003d[\u0027standard_attr_id\u0027])"},{"line_number":81,"context_line":"    op.drop_column(TABLE, \u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"47099abe_a036a4a8","line":81,"updated":"2020-12-03 08:54:03.000000000","message":"contract migrations are forbidden since many cycles so You will need to do it all in expand phase and without e.g. deletion of columns","commit_id":"cd88a155065cf397a990b79dedc2a949f113782e"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"7d23e1fa372c1b1ac135f40a96614315305819d6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    op.create_unique_constraint("},{"line_number":79,"context_line":"        constraint_name\u003d\u0027uniq_%s0standard_attr_id\u0027 % TABLE,"},{"line_number":80,"context_line":"        table_name\u003dTABLE, columns\u003d[\u0027standard_attr_id\u0027])"},{"line_number":81,"context_line":"    op.drop_column(TABLE, \u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7410b631_8b97bf43","line":81,"in_reply_to":"47099abe_a036a4a8","updated":"2020-12-03 23:53:15.000000000","message":"I have moved everything to expand phase in patch set4. But I still need to remove the description field from address group db model otherwise api calls won\u0027t return the description from standard_attributes. So I used expand_drop_exceptions() to drop the column. Please let me know if that is acceptable or any suggestion how should I handle this case?","commit_id":"cd88a155065cf397a990b79dedc2a949f113782e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"282d752f52cfb5e43ffcd38ebc30a43fff20b98a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    op.create_unique_constraint("},{"line_number":79,"context_line":"        constraint_name\u003d\u0027uniq_%s0standard_attr_id\u0027 % TABLE,"},{"line_number":80,"context_line":"        table_name\u003dTABLE, columns\u003d[\u0027standard_attr_id\u0027])"},{"line_number":81,"context_line":"    op.drop_column(TABLE, \u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9b8061b3_f116d9e6","line":81,"in_reply_to":"7410b631_8b97bf43","updated":"2020-12-07 15:30:49.000000000","message":"I tested that patch on devstack with 2 neutron servers - one with Your patch and one a bit older. That is perfetly valid upgrade scenario and we need to ensure that this will work fine. And with Your patch it\u0027s not working as server with older code returns error 500 on GET /v2.0/address-groups/\u003caddress_group_id\u003e request.\n\nI think You need to have keep \"description\" field in the \u0027address_groups\u0027 table for this release and add some todo to remove it during the next cycle.","commit_id":"cd88a155065cf397a990b79dedc2a949f113782e"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"d68f049f934bc455d5248aff07b2d1e584f2373c","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    op.create_unique_constraint("},{"line_number":79,"context_line":"        constraint_name\u003d\u0027uniq_%s0standard_attr_id\u0027 % TABLE,"},{"line_number":80,"context_line":"        table_name\u003dTABLE, columns\u003d[\u0027standard_attr_id\u0027])"},{"line_number":81,"context_line":"    op.drop_column(TABLE, \u0027description\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bec05a52_c1eacf81","line":81,"in_reply_to":"9b8061b3_f116d9e6","updated":"2020-12-07 16:36:04.000000000","message":"Thanks for testing it Slawek. So if we don\u0027t do the description column drop here, then address group\u0027s description will always be None in API return no matter if it is set or not. (I think the column in address_group table masks the description in standard_attrs). Given that, I\u0027d prefer to do the drop in this patch as an expand exception rather than carrying over that buggy API behavior till next cycle. Either we do the column drop here or in next cycle will need a neutron-server restart with the new db model and object, so why not do it earlier?","commit_id":"cd88a155065cf397a990b79dedc2a949f113782e"}],"neutron/db/migration/alembic_migrations/versions/wallaby/expand/330212395ce3_add_standard_attributes_to_address_group.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"13298cb4cee61d221627a786041a83481ddc3a3d","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        \u0027standard_attr_id\u0027,"},{"line_number":36,"context_line":"        sa.BigInteger().with_variant(sa.Integer(), \u0027sqlite\u0027),"},{"line_number":37,"context_line":"        nullable\u003dFalse))"},{"line_number":38,"context_line":"    op.create_unique_constraint(None, \u0027address_groups\u0027, [\u0027standard_attr_id\u0027])"},{"line_number":39,"context_line":"    op.create_foreign_key(None, \u0027address_groups\u0027, \u0027standardattributes\u0027,"},{"line_number":40,"context_line":"                          [\u0027standard_attr_id\u0027], [\u0027id\u0027], ondelete\u003d\u0027CASCADE\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"44a6e75c_f4ea6ca8","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":31},"updated":"2020-12-01 07:57:46.000000000","message":"is it needed, given it\u0027s foreign key?","commit_id":"61a3b33632ed6585da576451c50ce764c589c0f0"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"34f9f72b35c5ebbe3a8ef5bbfc8914d19391f043","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        \u0027standard_attr_id\u0027,"},{"line_number":36,"context_line":"        sa.BigInteger().with_variant(sa.Integer(), \u0027sqlite\u0027),"},{"line_number":37,"context_line":"        nullable\u003dFalse))"},{"line_number":38,"context_line":"    op.create_unique_constraint(None, \u0027address_groups\u0027, [\u0027standard_attr_id\u0027])"},{"line_number":39,"context_line":"    op.create_foreign_key(None, \u0027address_groups\u0027, \u0027standardattributes\u0027,"},{"line_number":40,"context_line":"                          [\u0027standard_attr_id\u0027], [\u0027id\u0027], ondelete\u003d\u0027CASCADE\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dc959b84_b4c7332e","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":31},"in_reply_to":"44a6e75c_f4ea6ca8","updated":"2020-12-02 20:03:06.000000000","message":"I see other examples that adding standard_attr_id to an existing model also have this unique constraint like https://github.com/openstack/neutron/commit/06e43dd95d39af5c77f60bf7c89fee762c1afa13\nhttps://github.com/openstack/neutron/commit/f3f90027b13a34a4c9e80e19e75ee7cdb977414d","commit_id":"61a3b33632ed6585da576451c50ce764c589c0f0"}],"neutron/objects/address_group.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0b555611a02abd5459e70b5449856a87cb6c5de7","unresolved":true,"context_lines":[{"line_number":22,"context_line":"@base.NeutronObjectRegistry.register"},{"line_number":23,"context_line":"class AddressGroup(base.NeutronDbObject):"},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":"    # Version 1.1: Added standard attributes"},{"line_number":27,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"26d36f8f_9212dbd4","line":25,"range":{"start_line":25,"start_character":4,"end_line":25,"end_character":19},"updated":"2021-01-08 09:59:56.000000000","message":"To be removed","commit_id":"6db15a004d37b4f93267147f36e3a1951d6b8475"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"f3d8e6d1b5633aee7db2bd2a4063c87a5f2157ea","unresolved":true,"context_lines":[{"line_number":22,"context_line":"@base.NeutronObjectRegistry.register"},{"line_number":23,"context_line":"class AddressGroup(base.NeutronDbObject):"},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":"    # Version 1.1: Added standard attributes"},{"line_number":27,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacd14ec_8b4cf01a","line":25,"range":{"start_line":25,"start_character":4,"end_line":25,"end_character":19},"in_reply_to":"26d36f8f_9212dbd4","updated":"2021-01-08 16:48:18.000000000","message":"You mean remove the version 1.0? May I know the reason?","commit_id":"6db15a004d37b4f93267147f36e3a1951d6b8475"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0b555611a02abd5459e70b5449856a87cb6c5de7","unresolved":true,"context_lines":[{"line_number":23,"context_line":"class AddressGroup(base.NeutronDbObject):"},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":"    # Version 1.1: Added standard attributes"},{"line_number":27,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    db_model \u003d models.AddressGroup"}],"source_content_type":"text/x-python","patch_set":6,"id":"e07e8a9a_643afa30","line":26,"updated":"2021-01-08 09:59:56.000000000","message":"and \"description\" removed","commit_id":"6db15a004d37b4f93267147f36e3a1951d6b8475"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0b555611a02abd5459e70b5449856a87cb6c5de7","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            standard_fields \u003d [\u0027revision_number\u0027, \u0027created_at\u0027, \u0027updated_at\u0027]"},{"line_number":44,"context_line":"            for f in standard_fields:"},{"line_number":45,"context_line":"                primitive.pop(f, None)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"@base.NeutronObjectRegistry.register"},{"line_number":49,"context_line":"class AddressAssociation(base.NeutronDbObject):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f2b51eb_b864b5a4","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":0},"updated":"2021-01-08 09:59:56.000000000","message":"You should also add at least an empty \"description\" field here","commit_id":"6db15a004d37b4f93267147f36e3a1951d6b8475"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"f3d8e6d1b5633aee7db2bd2a4063c87a5f2157ea","unresolved":true,"context_lines":[{"line_number":43,"context_line":"            standard_fields \u003d [\u0027revision_number\u0027, \u0027created_at\u0027, \u0027updated_at\u0027]"},{"line_number":44,"context_line":"            for f in standard_fields:"},{"line_number":45,"context_line":"                primitive.pop(f, None)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"@base.NeutronObjectRegistry.register"},{"line_number":49,"context_line":"class AddressAssociation(base.NeutronDbObject):"}],"source_content_type":"text/x-python","patch_set":6,"id":"f7e38c3c_ceabf2d3","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":0},"in_reply_to":"1f2b51eb_b864b5a4","updated":"2021-01-08 16:48:18.000000000","message":"I don\u0027t see other objects that use standard_attrs has a description filed in its own object definition though.","commit_id":"6db15a004d37b4f93267147f36e3a1951d6b8475"}]}
