)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e53c3e921339b982d9a170f4e304ffc1fb43cf7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8f3c73fd_8bf386f0","updated":"2023-08-17 17:15:25.000000000","message":"Thanks for reporting the bug and providing the fix; could you please add a bugfix release note? https://docs.openstack.org/manila/latest/contributor/adding_release_notes.html#how-do-i-add-a-release-note","commit_id":"a4083388a7ec0c298aab727632954d039dce29c8"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"521c3924524dd00e91a6c674a5a1886f74ead2db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0e59644f_0d7d6ca0","in_reply_to":"8f3c73fd_8bf386f0","updated":"2023-08-17 17:51:14.000000000","message":"Added a release note","commit_id":"a4083388a7ec0c298aab727632954d039dce29c8"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"ee4d21cd441a9c03127e46ac825482fe2925df82","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"748f3759_5e3a947c","updated":"2023-08-18 07:20:23.000000000","message":"Thanks for working yourself on the bug you reported!\nI have some comments inline.","commit_id":"857dc66fa73e4cc9803a6fab786fba49f94db7a3"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"fc7829dc7ca9c4a05cc0111634097ad700f06e13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"60a91372_d2f60ce6","updated":"2023-09-21 18:28:18.000000000","message":"Thanks for the patch, Vadym. Just a comment inline.","commit_id":"f23df5109f53954f63c39d8c34ec84b51ced2f45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2bb73700e1a96d6bf6f155306f654ffe70581cba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"33ebb052_7ceb372d","updated":"2023-09-11 21:46:57.000000000","message":"recheck\n\n\nintermittent db test failure","commit_id":"f23df5109f53954f63c39d8c34ec84b51ced2f45"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"ebeb0579b3f5bb98c2de6238d33cacd9d0df054a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c2d19482_925a6632","updated":"2023-09-28 12:54:51.000000000","message":"LGTM, small suggestion that can be worked on as a follow-up\nThanks","commit_id":"42e66d9f38b63183e92af939fa7f0a94d97a482f"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"f8d02219d5ce7ef1c86bcad61de0ea7259401a90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b5cc2f7a_dea6e554","updated":"2023-09-25 17:48:08.000000000","message":"LGTM.","commit_id":"42e66d9f38b63183e92af939fa7f0a94d97a482f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7ee615125b7e6733800f4c2e9233b98e8a5aa8d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"599d6797_12632c3e","updated":"2023-09-27 00:11:16.000000000","message":"Thanks, LGTM","commit_id":"42e66d9f38b63183e92af939fa7f0a94d97a482f"}],"manila/api/v2/share_networks.py":[{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"fc7829dc7ca9c4a05cc0111634097ad700f06e13","unresolved":true,"context_lines":[{"line_number":133,"context_line":"            for share_server in subnet[\u0027share_servers\u0027]:"},{"line_number":134,"context_line":"                self.share_rpcapi.delete_share_server(context, share_server)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        for security_service in share_network[\u0027security_services\u0027]:"},{"line_number":137,"context_line":"            try:"},{"line_number":138,"context_line":"                db_api.share_network_remove_security_service("},{"line_number":139,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"189f8545_3bb47600","line":136,"updated":"2023-09-21 18:28:18.000000000","message":"The last CI results shows that this block is not covered by UT [1].\n\n[1] https://0af46641a0193018034c-60d68d0bfd7f8f0178e466da97b3a245.ssl.cf2.rackcdn.com/891778/4/check/openstack-tox-cover/05367ef/cover/d_18fb795c8d5970e6_share_networks_py.html#t139","commit_id":"f23df5109f53954f63c39d8c34ec84b51ced2f45"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"73f7a78823fc157fb4120f5f9b07f4851fd6d862","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            for share_server in subnet[\u0027share_servers\u0027]:"},{"line_number":134,"context_line":"                self.share_rpcapi.delete_share_server(context, share_server)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        for security_service in share_network[\u0027security_services\u0027]:"},{"line_number":137,"context_line":"            try:"},{"line_number":138,"context_line":"                db_api.share_network_remove_security_service("},{"line_number":139,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"c378aa48_f18fadb7","line":136,"in_reply_to":"189f8545_3bb47600","updated":"2023-09-23 22:24:35.000000000","message":"Added a unit test here. Not sure if we need to cover exception, because it is not used later anymore","commit_id":"f23df5109f53954f63c39d8c34ec84b51ced2f45"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"f8d02219d5ce7ef1c86bcad61de0ea7259401a90","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            for share_server in subnet[\u0027share_servers\u0027]:"},{"line_number":134,"context_line":"                self.share_rpcapi.delete_share_server(context, share_server)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        for security_service in share_network[\u0027security_services\u0027]:"},{"line_number":137,"context_line":"            try:"},{"line_number":138,"context_line":"                db_api.share_network_remove_security_service("},{"line_number":139,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"11eac448_edcb3b56","line":136,"in_reply_to":"c378aa48_f18fadb7","updated":"2023-09-25 17:48:08.000000000","message":"Thanks Vadym.","commit_id":"f23df5109f53954f63c39d8c34ec84b51ced2f45"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"ebeb0579b3f5bb98c2de6238d33cacd9d0df054a","unresolved":true,"context_lines":[{"line_number":133,"context_line":"            for share_server in subnet[\u0027share_servers\u0027]:"},{"line_number":134,"context_line":"                self.share_rpcapi.delete_share_server(context, share_server)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        for security_service in share_network[\u0027security_services\u0027]:"},{"line_number":137,"context_line":"            try:"},{"line_number":138,"context_line":"                db_api.share_network_remove_security_service("},{"line_number":139,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3231d5bd_1a64f597","line":136,"range":{"start_line":136,"start_character":32,"end_line":136,"end_character":66},"updated":"2023-09-28 12:54:51.000000000","message":"maybe it would be more safe to do share_network.get(\u0027security_services\u0027, [])","commit_id":"42e66d9f38b63183e92af939fa7f0a94d97a482f"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"ee4d21cd441a9c03127e46ac825482fe2925df82","unresolved":true,"context_lines":[{"line_number":5962,"context_line":"    sec_assoc_to_delete \u003d context.session.query("},{"line_number":5963,"context_line":"        models.ShareNetworkSecurityServiceAssociation).join("},{"line_number":5964,"context_line":"        models.ShareNetwork).join(models.SecurityService).filter("},{"line_number":5965,"context_line":"        or_(models.ShareNetwork.deleted_at \u003c\u003d deleted_age,"},{"line_number":5966,"context_line":"            models.SecurityService.deleted_at \u003c\u003d deleted_age)).all()"},{"line_number":5967,"context_line":""},{"line_number":5968,"context_line":"    for assoc in sec_assoc_to_delete:"}],"source_content_type":"text/x-python","patch_set":3,"id":"27b636c4_ad0b9b78","line":5965,"updated":"2023-08-18 07:20:23.000000000","message":"Thinking out loud: That would not touch everything that is newer than `deleted_age`. Makes sense in the purging context.\n\nI wonder if we could lift that restriction and make this a one-time operation.\nBecause after this code has been running for `age_in_days` the `sec_assoc_to_delete` will always be empty, adding an unnecessary db call to each run of purge_deleted_records().\nThat is why I think this would be better placed in a database migration.\nAnd instead of directly deleting, it could soft-delete the associations to have a chance to fix stuff.\n\nOn the other hand, that view may be too academic. I\u0027m also fine with going the more practical and easier way like proposed here, just wanted to add that perspective.","commit_id":"857dc66fa73e4cc9803a6fab786fba49f94db7a3"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"d6516ffacb8edb3e409624a549fbef07b122bc8d","unresolved":false,"context_lines":[{"line_number":5962,"context_line":"    sec_assoc_to_delete \u003d context.session.query("},{"line_number":5963,"context_line":"        models.ShareNetworkSecurityServiceAssociation).join("},{"line_number":5964,"context_line":"        models.ShareNetwork).join(models.SecurityService).filter("},{"line_number":5965,"context_line":"        or_(models.ShareNetwork.deleted_at \u003c\u003d deleted_age,"},{"line_number":5966,"context_line":"            models.SecurityService.deleted_at \u003c\u003d deleted_age)).all()"},{"line_number":5967,"context_line":""},{"line_number":5968,"context_line":"    for assoc in sec_assoc_to_delete:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7655d9f1_babffdc0","line":5965,"in_reply_to":"27b636c4_ad0b9b78","updated":"2023-09-06 14:03:39.000000000","message":"Additional question that code checks two fields, but only one of them may be affected. \n\nSome thoughts about delete procedure. Overhead for additional request is negligible, because this job usually runs once a week. Converting to soft_delete here just add a week delay before final deletion. Anyway, i assume that admin look through the data before applying of update","commit_id":"857dc66fa73e4cc9803a6fab786fba49f94db7a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7ee615125b7e6733800f4c2e9233b98e8a5aa8d4","unresolved":true,"context_lines":[{"line_number":5958,"context_line":"    deleted_age \u003d timeutils.utcnow() - datetime.timedelta(days\u003dage_in_days)"},{"line_number":5959,"context_line":""},{"line_number":5960,"context_line":"    # Deleting rows in share_network_security_service_association"},{"line_number":5961,"context_line":"    # related to deleted network or security service"},{"line_number":5962,"context_line":"    sec_assoc_to_delete \u003d context.session.query("},{"line_number":5963,"context_line":"        models.ShareNetworkSecurityServiceAssociation).join("},{"line_number":5964,"context_line":"        models.ShareNetwork).join(models.SecurityService).filter("}],"source_content_type":"text/x-python","patch_set":4,"id":"1f9ae1b4_d23cb324","line":5961,"updated":"2023-09-27 00:11:16.000000000","message":"I would mention the bug that needed this fix in this comment..","commit_id":"f23df5109f53954f63c39d8c34ec84b51ced2f45"}],"releasenotes/notes/bug-2029366-network-deleted-without-security-associaton-ae56473f6d32c47e.yaml":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"ee4d21cd441a9c03127e46ac825482fe2925df82","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    If user deletes shared network which has associated security service, it results in a non-deleted record in "},{"line_number":5,"context_line":"    share_network_security_service_association table relating to soft-deleted network. It has foreign key constraints "},{"line_number":6,"context_line":"    with table share_networks. These constraints prevent purge job to cleanup soft-deleted networks, leading to "},{"line_number":7,"context_line":"    database cluttering. Fixed it, so delete of share network also cleanups security associations related with it. "}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1c4b8bd5_0f9ec753","line":4,"updated":"2023-08-18 07:20:23.000000000","message":"I think this holds too much internal detail.\n\nLooking at similar release notes I suggest something like:\n```\n    Fixed cleanup of share network security service associations. See `Launchpad bug 2029366 \u003chttps://bugs.launchpad.net/manila/+bug/2029366\u003e`_\n    for more details.\r\n```","commit_id":"857dc66fa73e4cc9803a6fab786fba49f94db7a3"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"6086ce4922a560dc0426e0c1b037f67da6d7564e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    If user deletes shared network which has associated security service, it results in a non-deleted record in "},{"line_number":5,"context_line":"    share_network_security_service_association table relating to soft-deleted network. It has foreign key constraints "},{"line_number":6,"context_line":"    with table share_networks. These constraints prevent purge job to cleanup soft-deleted networks, leading to "},{"line_number":7,"context_line":"    database cluttering. Fixed it, so delete of share network also cleanups security associations related with it. "}],"source_content_type":"text/x-yaml","patch_set":3,"id":"b8c82f79_d44c819a","line":4,"in_reply_to":"1c4b8bd5_0f9ec753","updated":"2023-09-06 14:04:02.000000000","message":"Updated","commit_id":"857dc66fa73e4cc9803a6fab786fba49f94db7a3"}]}
