)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3c8bd725f0671e5a74519cd62bc627d6be02be5f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0a5f4512_c575d65a","updated":"2022-01-31 07:34:18.000000000","message":"Temporarily removing the Depends-On https://review.opendev.org/c/openstack/manila/+/825110 to check if the unit tests pass. Still missing the check_update_share_server_network_allocations() and update_share_server_network_allocations() methods and their unit tests.","commit_id":"8ad0806d4d68e046fd9a0c1a7d7f3c64af6c57b7"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"64e17e38aae14be322971717ac71a99ebc587091","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6b5f4d2a_8fde0a70","updated":"2022-02-08 23:20:18.000000000","message":"recheck\n\nopenstack-tox-cover failed in the CI [1] but passed locally [2], so retriggering it.\n\n[1] https://zuul.opendev.org/t/openstack/build/f83bd56c5eda482b994ce7d2a467a46f\n[2] https://transfer.sh/get/0aGttI/tox_cover.log","commit_id":"8ce6f6d2fb75c61530bbe7d70af46ea2f3a1df3e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"44165125_8b28af54","updated":"2022-02-23 21:50:58.000000000","message":"Thank you for working on this change, Eduardo\nPlease see comments inline","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"00f5ea15_35399d82","updated":"2022-02-25 06:21:17.000000000","message":"Thanks for the changes; concur with many of carloss\u0027 comments so far. Please take a look at more comments inline.. ","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7e92c962_12bfd350","updated":"2022-02-25 15:14:56.000000000","message":"Thanks for your reviews, Carlos and Goutham! Please see my replies inline. :)","commit_id":"85cbd81ef1d3526882d56cf0bb0793e5f8f746c5"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"a520665cdb3d752f4720e158e8e4a67879791e2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7f55e666_13e9318c","updated":"2022-02-25 20:22:20.000000000","message":"recheck","commit_id":"7842e0ffc36c8fce2c94556e0042b73f2c855cfd"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"184e0a2bcf7c32ee45bf25f45d7e77b85038c8ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"caf20469_7b30f9f6","updated":"2022-02-25 19:46:48.000000000","message":"recheck\n\nRetriggering because the openstack-tox-lower-constraints job seems a bit unstable right now. It failed on an unit test unrelated to this change.","commit_id":"7842e0ffc36c8fce2c94556e0042b73f2c855cfd"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f2347ec089c90526fbae8fbc0f3ba0bc5c643bb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"4e17266d_2fc49bb4","updated":"2022-02-26 00:54:15.000000000","message":"Thanks for the changes, Eduardo\nDidn\u0027t find anything major in this second pass...\nWaiting on CI output","commit_id":"d9e82fe6731ce5a80f3717f127b0dac65e70ec6f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"e8297aaba9f88676296e893eddbd124f29b720b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"203f3b07_4b03adb2","updated":"2022-02-26 06:16:08.000000000","message":"recheck\n\nRetriggering Zuul because the openstack-tox-cover job failed [1], even though it succeeded for me locally. [2]\n\n[1] https://zuul.opendev.org/t/openstack/build/cc54573c012049e8bb4b8483ea8708a9\n[2] https://transfer.sh/get/h7nCiu/openstack-tox-cover.log","commit_id":"d9e82fe6731ce5a80f3717f127b0dac65e70ec6f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"893cb8c388827318d727b9541e855a5dee5a204f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"38c69800_9dc202e6","updated":"2022-02-26 00:08:55.000000000","message":"recheck\n\nopenstack-tox-cover has hit the same unrelated failure.","commit_id":"d9e82fe6731ce5a80f3717f127b0dac65e70ec6f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4a564b7a1c71c1612436e9b8569baa5aaf19ab30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"0ec8b43e_0584b223","updated":"2022-02-28 18:54:49.000000000","message":"Looking good, thanks for working on the comments, Eduardo","commit_id":"9bcb3ccfd81256c86a20f43d77efff0ae2f6ea74"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4ee8d7010ead4997537f523908825d67038cace4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"e5cfab59_c8988b55","updated":"2022-03-03 20:46:44.000000000","message":"Thanks for fixing the issues pointed\nAdded few more comments mostly wrt release notes","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"efcb21c5101bdb37b6ccea94bbc11d9cf00019e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"0d85366f_3715075b","updated":"2022-03-03 21:30:54.000000000","message":"I don\u0027t see anything blocking atm. \nAdded just a few questions and a possible fix for that metadata added to ovs interfaces, which will make the code cleaner.\n\nThanks folks","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"83836f41e85e8f341f67b57d4f94bf95f6e7dc17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"fa7af390_da3d5c6f","updated":"2022-03-04 12:45:32.000000000","message":"LGTM, plus container job is happy. Thanks for working on the change Eduardo and Fernando","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6a964afa1808fb191418bd1570591a3a5a1bc1a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"bca40aa8_9a012449","updated":"2022-03-04 12:42:13.000000000","message":"Thank you for your replies. \nPlease provide a follow-up change so we can make this code cleaner for future improvements. \nThanks for your efforts on this feature/refactoring.\n\n+2: Container job is green and passing on new multiple subnets tests here:\nhttps://b8e3005a9c234018e42e-40ade3a18cf00a73146bbcccb0567727.ssl.cf1.rackcdn.com/826959/17/check/manila-tempest-plugin-container/6ce399e/testr_results.html","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"80c08e3cd0309722f38ad900e0e6d0a0b0ed3b16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"d429320f_9dac4994","updated":"2022-03-04 12:05:18.000000000","message":"Thanks for your reviews, Carlos and Douglas! And thanks Fernando for addressing Carlos\u0027 comments regarding the release notes.\n\nDouglas, I replied to your comments with my thoughts, but since the Open vSwitch external-id code is not a blocker, as you pointed out, how does a follow-up change to address your comments separately sound to you? I\u0027d happily provide it for next week, but I believe we\u0027ve already met the feature freeze deadline. What do you think?","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"790bf685375d4c0224b2ca571f1cafda2949784c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"15aabd30_27d1173f","updated":"2022-03-04 07:06:36.000000000","message":"recheck","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"c55ea5577e1adb41d0b5692d8b2b904576066071","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"1738ed98_e890f699","updated":"2022-03-04 04:42:21.000000000","message":"recheck","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ca8e2eff061195f0315e4555d0884ac8c454734d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"2502f63a_dfcbb599","updated":"2022-03-04 14:13:40.000000000","message":"recheck","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"df21fe0424c60da00e1b89f109e6585a82ff69dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"bf66ad01_683c4f8c","updated":"2022-03-04 00:28:37.000000000","message":"recheck","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e55659f6fcb92b2a6b6a23e2da8fc91d5dd4bcaa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"e5c03755_0d8f16f0","updated":"2022-03-04 07:06:30.000000000","message":"run-NetApp CI","commit_id":"2dc60a0b4ea94dd3933ea04a8032be993a397b05"}],"doc/source/admin/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":244,"context_line":"More information: :ref:`capabilities_and_extra_specs`"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+----------------------------------------+"},{"line_number":247,"context_line":"|              Driver name               | DHSS\u003dTrue | DHSS\u003dFalse | dedupe | compression | thin_provisioning | thick_provisioning | qos | create share from snapshot | revert to snapshot | mountable snapshot | ipv4_support | ipv6_support | multiple subnets per availability zone |"},{"line_number":248,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":249,"context_line":"|               ZFSonLinux               |     \\-    |      M     |   M    |      M      |         M         |          \\-        | \\-  |              M             |          \\-        |          \\-        |       P      |      \\-      |                   \\-                   |"},{"line_number":250,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+----------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"90d5ab5d_74acf073","line":247,"range":{"start_line":247,"start_character":260,"end_line":247,"end_character":277},"updated":"2022-02-25 06:21:17.000000000","message":"AZ \n\nwould be okay here, so you can clarify the actual capability as suggested below","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":244,"context_line":"More information: :ref:`capabilities_and_extra_specs`"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+----------------------------------------+"},{"line_number":247,"context_line":"|              Driver name               | DHSS\u003dTrue | DHSS\u003dFalse | dedupe | compression | thin_provisioning | thick_provisioning | qos | create share from snapshot | revert to snapshot | mountable snapshot | ipv4_support | ipv6_support | multiple subnets per availability zone |"},{"line_number":248,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":249,"context_line":"|               ZFSonLinux               |     \\-    |      M     |   M    |      M      |         M         |          \\-        | \\-  |              M             |          \\-        |          \\-        |       P      |      \\-      |                   \\-                   |"},{"line_number":250,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+----------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"2cfa8b96_55d6c29c","line":247,"range":{"start_line":247,"start_character":260,"end_line":247,"end_character":277},"in_reply_to":"90d5ab5d_74acf073","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"a780d05e_f98787f4","line":318,"updated":"2022-02-25 06:21:17.000000000","message":"* `multiple subnets per AZ` is reported as ``multiple_subnets_per_availability_zone``","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"b3fdc14e_78a6e951","line":318,"in_reply_to":"a780d05e_f98787f4","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"}],"manila/share/drivers/container/container_helper.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        self.init_execute_mixin()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def create_container(self, name\u003dNone):"},{"line_number":38,"context_line":"        name \u003d name or \u0027\u0027.join([\u0027manila_cifs_docker_container\u0027,"},{"line_number":39,"context_line":"                                str(uuid.uuid1()).replace(\u0027-\u0027, \u0027_\u0027)])"},{"line_number":40,"context_line":"        image_name \u003d self.configuration.container_image_name"},{"line_number":41,"context_line":"        LOG.debug(\u0027Starting container from image %s.\u0027, image_name)"},{"line_number":42,"context_line":"        # (aovchinnikov): --privileged is required for both samba and"},{"line_number":43,"context_line":"        # nfs-ganesha to actually allow access to shared folders."},{"line_number":44,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff86ab81_7db7ec3e","line":41,"range":{"start_line":38,"start_character":8,"end_line":41,"end_character":66},"updated":"2022-02-23 21:50:58.000000000","message":"is this \" -\u003e \u0027 refactor really necessary?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.init_execute_mixin()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def create_container(self, name\u003dNone):"},{"line_number":38,"context_line":"        name \u003d name or \u0027\u0027.join([\u0027manila_cifs_docker_container\u0027,"},{"line_number":39,"context_line":"                                str(uuid.uuid1()).replace(\u0027-\u0027, \u0027_\u0027)])"},{"line_number":40,"context_line":"        image_name \u003d self.configuration.container_image_name"},{"line_number":41,"context_line":"        LOG.debug(\u0027Starting container from image %s.\u0027, image_name)"},{"line_number":42,"context_line":"        # (aovchinnikov): --privileged is required for both samba and"},{"line_number":43,"context_line":"        # nfs-ganesha to actually allow access to shared folders."},{"line_number":44,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":10,"id":"86eba6c6_23144e54","line":41,"range":{"start_line":38,"start_character":8,"end_line":41,"end_character":66},"in_reply_to":"ff86ab81_7db7ec3e","updated":"2022-02-25 15:14:56.000000000","message":"I was rewriting a lot of stuff during development and forgot to revert those back to double quotes. My bad :P","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":61,"context_line":"        # share providers contain vulnerabilities then the driver does not"},{"line_number":62,"context_line":"        # provide any more possibilities for an exploitation than other"},{"line_number":63,"context_line":"        # first-party drivers."},{"line_number":64,"context_line":"        path \u003d \u0027{0}:/shares\u0027.format("},{"line_number":65,"context_line":"            self.configuration.container_volume_mount_path)"},{"line_number":66,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027create\u0027, \u0027--name\u003d%s\u0027 % name,"},{"line_number":67,"context_line":"               \u0027--privileged\u0027, \u0027-v\u0027, \u0027/dev:/dev\u0027, \u0027-v\u0027, path, image_name]"}],"source_content_type":"text/x-python","patch_set":10,"id":"064ee30a_06dfc310","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":36},"updated":"2022-02-23 21:50:58.000000000","message":"same","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # share providers contain vulnerabilities then the driver does not"},{"line_number":62,"context_line":"        # provide any more possibilities for an exploitation than other"},{"line_number":63,"context_line":"        # first-party drivers."},{"line_number":64,"context_line":"        path \u003d \u0027{0}:/shares\u0027.format("},{"line_number":65,"context_line":"            self.configuration.container_volume_mount_path)"},{"line_number":66,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027create\u0027, \u0027--name\u003d%s\u0027 % name,"},{"line_number":67,"context_line":"               \u0027--privileged\u0027, \u0027-v\u0027, \u0027/dev:/dev\u0027, \u0027-v\u0027, path, image_name]"}],"source_content_type":"text/x-python","patch_set":10,"id":"4b2a19f6_a0be468a","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":36},"in_reply_to":"064ee30a_06dfc310","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        # first-party drivers."},{"line_number":64,"context_line":"        path \u003d \u0027{0}:/shares\u0027.format("},{"line_number":65,"context_line":"            self.configuration.container_volume_mount_path)"},{"line_number":66,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027create\u0027, \u0027--name\u003d%s\u0027 % name,"},{"line_number":67,"context_line":"               \u0027--privileged\u0027, \u0027-v\u0027, \u0027/dev:/dev\u0027, \u0027-v\u0027, path, image_name]"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            result \u003d self._inner_execute(cmd)"},{"line_number":70,"context_line":"        except (exception.ProcessExecutionError, OSError):"}],"source_content_type":"text/x-python","patch_set":10,"id":"a9f5ddb8_60f63b7e","line":67,"range":{"start_line":66,"start_character":7,"end_line":67,"end_character":73},"updated":"2022-02-23 21:50:58.000000000","message":"any specific reason to switch from docker run to docker create? why we wouldn\u0027t want the container to be running immediately?\n\nhttps://linuxhandbook.com/docker-run-vs-start-vs-create/","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f2347ec089c90526fbae8fbc0f3ba0bc5c643bb8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        # first-party drivers."},{"line_number":64,"context_line":"        path \u003d \u0027{0}:/shares\u0027.format("},{"line_number":65,"context_line":"            self.configuration.container_volume_mount_path)"},{"line_number":66,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027create\u0027, \u0027--name\u003d%s\u0027 % name,"},{"line_number":67,"context_line":"               \u0027--privileged\u0027, \u0027-v\u0027, \u0027/dev:/dev\u0027, \u0027-v\u0027, path, image_name]"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            result \u003d self._inner_execute(cmd)"},{"line_number":70,"context_line":"        except (exception.ProcessExecutionError, OSError):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3c270a47_85b92bb6","line":67,"range":{"start_line":66,"start_character":7,"end_line":67,"end_character":73},"in_reply_to":"2f2debd7_73c6ad79","updated":"2022-02-26 00:54:15.000000000","message":"Ack, thanks... Was just some curiosity due to my limited knowledge on docker :)","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        # first-party drivers."},{"line_number":64,"context_line":"        path \u003d \u0027{0}:/shares\u0027.format("},{"line_number":65,"context_line":"            self.configuration.container_volume_mount_path)"},{"line_number":66,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027create\u0027, \u0027--name\u003d%s\u0027 % name,"},{"line_number":67,"context_line":"               \u0027--privileged\u0027, \u0027-v\u0027, \u0027/dev:/dev\u0027, \u0027-v\u0027, path, image_name]"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            result \u003d self._inner_execute(cmd)"},{"line_number":70,"context_line":"        except (exception.ProcessExecutionError, OSError):"}],"source_content_type":"text/x-python","patch_set":10,"id":"e2c3baf1_d2bf0e35","line":67,"range":{"start_line":66,"start_character":7,"end_line":67,"end_character":73},"in_reply_to":"a9f5ddb8_60f63b7e","updated":"2022-02-25 06:21:17.000000000","message":"Guess the logic is so that you can create the container and disconnect the default network; but, have you attempted using \n\n\"--network none\" in the docker run command instead?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        # first-party drivers."},{"line_number":64,"context_line":"        path \u003d \u0027{0}:/shares\u0027.format("},{"line_number":65,"context_line":"            self.configuration.container_volume_mount_path)"},{"line_number":66,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027create\u0027, \u0027--name\u003d%s\u0027 % name,"},{"line_number":67,"context_line":"               \u0027--privileged\u0027, \u0027-v\u0027, \u0027/dev:/dev\u0027, \u0027-v\u0027, path, image_name]"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            result \u003d self._inner_execute(cmd)"},{"line_number":70,"context_line":"        except (exception.ProcessExecutionError, OSError):"}],"source_content_type":"text/x-python","patch_set":10,"id":"2f2debd7_73c6ad79","line":67,"range":{"start_line":66,"start_character":7,"end_line":67,"end_character":73},"in_reply_to":"e2c3baf1_d2bf0e35","updated":"2022-02-25 15:14:56.000000000","message":"That\u0027s exactly right, Goutham! Yes, I tried using the --network none option. The problem is that this doesn\u0027t mean that no network will be attached to the container; actually, what happens is that Docker attaches the none Docker network [1] to the container (the default Docker networks have confusing names). If you inspect the container, you\u0027ll see none listed there as a network, and the veth pair is created just as when using the bridge Docker network. The only real difference is that the none Docker network is completely isolated (can\u0027t be pinged from the host nor from other containers).\n\nI\u0027ve decided to disconnect all Docker networks from the just created container, so that listing Docker networks attached to it and its veth pairs is always predictable, and we don\u0027t need to filter out the bridge or none Docker networks in methods further below (i.e., get_container_networks and get_container_veths).\n\nWith that in mind, I think it doesn\u0027t really matter if we disconnect the bridge or the none Docker networks, so I just left bridge there and disconnected it right after.\n\n[1] https://docs.docker.com/network/none/","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":238,"context_line":"                 \u0027container %s!\u0027, network_name, container_name)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def get_container_networks(self, container_name):"},{"line_number":241,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027inspect\u0027, \u0027-f\u0027,"},{"line_number":242,"context_line":"               \u0027\\\u0027{{json .NetworkSettings.Networks}}\\\u0027\u0027, container_name]"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            result \u003d self._inner_execute(cmd)"}],"source_content_type":"text/x-python","patch_set":10,"id":"d45af939_1c5dce19","line":242,"range":{"start_line":241,"start_character":15,"end_line":242,"end_character":55},"updated":"2022-02-23 21:50:58.000000000","message":"if you use \"\" as strings here, you won\u0027t need to escape the json .Network...","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                 \u0027container %s!\u0027, network_name, container_name)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def get_container_networks(self, container_name):"},{"line_number":241,"context_line":"        cmd \u003d [\u0027docker\u0027, \u0027container\u0027, \u0027inspect\u0027, \u0027-f\u0027,"},{"line_number":242,"context_line":"               \u0027\\\u0027{{json .NetworkSettings.Networks}}\\\u0027\u0027, container_name]"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            result \u003d self._inner_execute(cmd)"}],"source_content_type":"text/x-python","patch_set":10,"id":"cc53e316_7953b6d1","line":242,"range":{"start_line":241,"start_character":15,"end_line":242,"end_character":55},"in_reply_to":"d45af939_1c5dce19","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":166,"context_line":"                self._inner_execute(cmd)"},{"line_number":167,"context_line":"            except (exception.ProcessExecutionError, OSError):"},{"line_number":168,"context_line":"                try:"},{"line_number":169,"context_line":"                    self._inner_execute([\"docker\", \"rename\", new_name, name])"},{"line_number":170,"context_line":"                except (exception.ProcessExecutionError, OSError):"},{"line_number":171,"context_line":"                    msg \u003d _(\"Could not rename back container %s.\") % name"},{"line_number":172,"context_line":"                    LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9249130a_81a4c166","line":169,"range":{"start_line":169,"start_character":20,"end_line":169,"end_character":77},"updated":"2022-02-25 06:21:17.000000000","message":"What about any interfaces that have the new container name?\n\ni.e, assume we have have three interfaces, and the first two are renamed fine, but attempting to rename the third one raises an exception -- you\u0027ll just revert the container name, but leave the other two interfaces with the new name...","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":true,"context_lines":[{"line_number":166,"context_line":"                self._inner_execute(cmd)"},{"line_number":167,"context_line":"            except (exception.ProcessExecutionError, OSError):"},{"line_number":168,"context_line":"                try:"},{"line_number":169,"context_line":"                    self._inner_execute([\"docker\", \"rename\", new_name, name])"},{"line_number":170,"context_line":"                except (exception.ProcessExecutionError, OSError):"},{"line_number":171,"context_line":"                    msg \u003d _(\"Could not rename back container %s.\") % name"},{"line_number":172,"context_line":"                    LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f8da9b1_8ab08e48","line":169,"range":{"start_line":169,"start_character":20,"end_line":169,"end_character":77},"in_reply_to":"9249130a_81a4c166","updated":"2022-02-25 15:14:56.000000000","message":"I believe this was the Container driver behavior before this change, was it not? Inspecting the code from the master branch, the steps are the same:\n\n1. Try renaming the external-ids:manila-container of the interface through Open vSwitch\n2. If that doesn\u0027t work, rename back the container\n\nIt never attempts to rename back the interface. The only difference in this change is that now we loop through a list of interfaces, renaming them, instead of only one.\n\nIMHO, I believe this should be addressed in a separate change, since this change simply kept the original behavior. What are your thoughts on this?","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":234,"context_line":"                msg\u003d\u0027Could not disconnect the Docker network %s from \u0027"},{"line_number":235,"context_line":"                    \u0027container %s.\u0027 % (network_name, container_name))"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        LOG.info(\u0027Docker network %s has been successfully disconnected from \u0027"},{"line_number":238,"context_line":"                 \u0027container %s!\u0027, network_name, container_name)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def get_container_networks(self, container_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"964b4610_afc882be","line":237,"range":{"start_line":237,"start_character":12,"end_line":237,"end_character":16},"updated":"2022-02-25 06:21:17.000000000","message":"debug.. this step is being called during either container creation or teardown_server... so logging the success of each step at info level isn\u0027t necessary: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#examples-of-good-and-bad-uses-of-info","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                msg\u003d\u0027Could not disconnect the Docker network %s from \u0027"},{"line_number":235,"context_line":"                    \u0027container %s.\u0027 % (network_name, container_name))"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        LOG.info(\u0027Docker network %s has been successfully disconnected from \u0027"},{"line_number":238,"context_line":"                 \u0027container %s!\u0027, network_name, container_name)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def get_container_networks(self, container_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9b9dd81e_50285199","line":237,"range":{"start_line":237,"start_character":12,"end_line":237,"end_character":16},"in_reply_to":"964b4610_afc882be","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        # NOTE(ecsantos): The stdout from _inner_execute comes with extra"},{"line_number":252,"context_line":"        # single quotes."},{"line_number":253,"context_line":"        networks \u003d list(jsonutils.loads(result[0].replace(\u0027\\\u0027\u0027, \u0027\u0027)))"},{"line_number":254,"context_line":"        return networks"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def get_container_veths(self, container_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"0df40cd1_0cde3b8c","line":253,"range":{"start_line":253,"start_character":49,"end_line":253,"end_character":67},"updated":"2022-02-25 06:21:17.000000000","message":"don\u0027t you just want to strip, rather than replace? In case there\u0027s a chance of a stray apostrophe somewhere else in the output.\n\n result[0].strip(\"\u0027\")","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        # NOTE(ecsantos): The stdout from _inner_execute comes with extra"},{"line_number":252,"context_line":"        # single quotes."},{"line_number":253,"context_line":"        networks \u003d list(jsonutils.loads(result[0].replace(\u0027\\\u0027\u0027, \u0027\u0027)))"},{"line_number":254,"context_line":"        return networks"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def get_container_veths(self, container_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7fb5c669_a8fca2f0","line":253,"range":{"start_line":253,"start_character":49,"end_line":253,"end_character":67},"in_reply_to":"0df40cd1_0cde3b8c","updated":"2022-02-25 15:14:56.000000000","message":"That\u0027s right, strip is cleaner and more future-proof, nice catch! :)","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"efcb21c5101bdb37b6ccea94bbc11d9cf00019e3","unresolved":true,"context_lines":[{"line_number":138,"context_line":"        interfaces \u003d []"},{"line_number":139,"context_line":"        links \u003d self.execute(name, [\"ip\", \"-o\", \"link\", \"show\"])"},{"line_number":140,"context_line":"        links \u003d links[0].rstrip().split(\"\\n\")"},{"line_number":141,"context_line":"        links \u003d [link for link in links if link.split()[1].startswith(\"eth\")]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        for link in links:"},{"line_number":144,"context_line":"            interface \u003d re.search(\" (.+?)@\", link).group(1)"},{"line_number":145,"context_line":"            interfaces.append(interface)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return interfaces"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def rename_container(self, name, new_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"a7fdeddd_fdc8657c","line":146,"range":{"start_line":141,"start_character":0,"end_line":146,"end_character":0},"updated":"2022-03-03 21:30:54.000000000","message":"nit: this could be a single for loop and a single regex with capturing group. But this is fine too.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"80c08e3cd0309722f38ad900e0e6d0a0b0ed3b16","unresolved":true,"context_lines":[{"line_number":138,"context_line":"        interfaces \u003d []"},{"line_number":139,"context_line":"        links \u003d self.execute(name, [\"ip\", \"-o\", \"link\", \"show\"])"},{"line_number":140,"context_line":"        links \u003d links[0].rstrip().split(\"\\n\")"},{"line_number":141,"context_line":"        links \u003d [link for link in links if link.split()[1].startswith(\"eth\")]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        for link in links:"},{"line_number":144,"context_line":"            interface \u003d re.search(\" (.+?)@\", link).group(1)"},{"line_number":145,"context_line":"            interfaces.append(interface)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return interfaces"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def rename_container(self, name, new_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"0a5ce442_27698ff6","line":146,"range":{"start_line":141,"start_character":0,"end_line":146,"end_character":0},"in_reply_to":"a7fdeddd_fdc8657c","updated":"2022-03-04 12:05:18.000000000","message":"Regex is really not my strong suit! ;o\n\nI\u0027ll take a look at this, but would you mind providing me some examples of what you mean?","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"efcb21c5101bdb37b6ccea94bbc11d9cf00019e3","unresolved":true,"context_lines":[{"line_number":150,"context_line":"        veth_names \u003d self.get_container_veths(name)"},{"line_number":151,"context_line":"        if not veth_names:"},{"line_number":152,"context_line":"            raise exception.ManilaException("},{"line_number":153,"context_line":"                _(\"Could not find OVS information related to \""},{"line_number":154,"context_line":"                  \"container %s.\") % name)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            self._inner_execute([\"docker\", \"rename\", name, new_name])"}],"source_content_type":"text/x-python","patch_set":18,"id":"0e39aa80_dc28e5ff","line":154,"range":{"start_line":153,"start_character":18,"end_line":154,"end_character":32},"updated":"2022-03-03 21:30:54.000000000","message":"You are not getting this info from OVS anymore","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"80c08e3cd0309722f38ad900e0e6d0a0b0ed3b16","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        veth_names \u003d self.get_container_veths(name)"},{"line_number":151,"context_line":"        if not veth_names:"},{"line_number":152,"context_line":"            raise exception.ManilaException("},{"line_number":153,"context_line":"                _(\"Could not find OVS information related to \""},{"line_number":154,"context_line":"                  \"container %s.\") % name)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            self._inner_execute([\"docker\", \"rename\", name, new_name])"}],"source_content_type":"text/x-python","patch_set":18,"id":"163a4d17_e7569afa","line":154,"range":{"start_line":153,"start_character":18,"end_line":154,"end_character":32},"in_reply_to":"0e39aa80_dc28e5ff","updated":"2022-03-04 12:05:18.000000000","message":"Ack","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"efcb21c5101bdb37b6ccea94bbc11d9cf00019e3","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            raise exception.ShareBackendException("},{"line_number":160,"context_line":"                msg\u003d\"Could not rename container %s.\" % name)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        for veth_name in veth_names:"},{"line_number":163,"context_line":"            cmd \u003d [\"ovs-vsctl\", \"set\", \"interface\", veth_name,"},{"line_number":164,"context_line":"                   \"external-ids:manila-container\u003d%s\" % new_name]"},{"line_number":165,"context_line":"            try:"},{"line_number":166,"context_line":"                self._inner_execute(cmd)"},{"line_number":167,"context_line":"            except (exception.ProcessExecutionError, OSError):"},{"line_number":168,"context_line":"                try:"},{"line_number":169,"context_line":"                    self._inner_execute([\"docker\", \"rename\", new_name, name])"},{"line_number":170,"context_line":"                except (exception.ProcessExecutionError, OSError):"},{"line_number":171,"context_line":"                    msg \u003d _(\"Could not rename back container %s.\") % name"},{"line_number":172,"context_line":"                    LOG.exception(msg)"},{"line_number":173,"context_line":"                raise exception.ShareBackendException("},{"line_number":174,"context_line":"                    msg\u003d\"Could not update OVS information %s.\" % name)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        LOG.info(\"Container %s has been successfully renamed.\", name)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def container_exists(self, name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"db5c31d6_10a734c9","line":175,"range":{"start_line":162,"start_character":7,"end_line":175,"end_character":0},"updated":"2022-03-03 21:30:54.000000000","message":"If I understood correct, in this refactoring you don\u0027t need anymore this metadata (manila-container\u003dX) in ovs interfaces. It seems that you delete the code that was using that info to get veth from container (find_container_veth). So you can remove this here and at https://review.opendev.org/c/openstack/manila/+/826462/18/manila/share/drivers/container/driver.py#259\nWDYT?","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"80c08e3cd0309722f38ad900e0e6d0a0b0ed3b16","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            raise exception.ShareBackendException("},{"line_number":160,"context_line":"                msg\u003d\"Could not rename container %s.\" % name)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        for veth_name in veth_names:"},{"line_number":163,"context_line":"            cmd \u003d [\"ovs-vsctl\", \"set\", \"interface\", veth_name,"},{"line_number":164,"context_line":"                   \"external-ids:manila-container\u003d%s\" % new_name]"},{"line_number":165,"context_line":"            try:"},{"line_number":166,"context_line":"                self._inner_execute(cmd)"},{"line_number":167,"context_line":"            except (exception.ProcessExecutionError, OSError):"},{"line_number":168,"context_line":"                try:"},{"line_number":169,"context_line":"                    self._inner_execute([\"docker\", \"rename\", new_name, name])"},{"line_number":170,"context_line":"                except (exception.ProcessExecutionError, OSError):"},{"line_number":171,"context_line":"                    msg \u003d _(\"Could not rename back container %s.\") % name"},{"line_number":172,"context_line":"                    LOG.exception(msg)"},{"line_number":173,"context_line":"                raise exception.ShareBackendException("},{"line_number":174,"context_line":"                    msg\u003d\"Could not update OVS information %s.\" % name)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        LOG.info(\"Container %s has been successfully renamed.\", name)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def container_exists(self, name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"e7f7234b_8401991e","line":175,"range":{"start_line":162,"start_character":7,"end_line":175,"end_character":0},"in_reply_to":"db5c31d6_10a734c9","updated":"2022-03-04 12:05:18.000000000","message":"That\u0027s correct! This OVS external-id was only being consumed by find_container_veth and rename_container, which is not the case anymore. Good catch. ;)","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"}],"manila/share/drivers/container/driver.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":100,"context_line":"            self.configuration.container_storage_helper)("},{"line_number":101,"context_line":"                configuration\u003dself.configuration)"},{"line_number":102,"context_line":"        self._helpers \u003d {}"},{"line_number":103,"context_line":"        self.network_allocation_update_support \u003d True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _get_helper(self, share):"},{"line_number":106,"context_line":"        if share[\"share_proto\"].upper() \u003d\u003d \"CIFS\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"cf0229d3_31d0fe35","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":53},"updated":"2022-02-23 21:50:58.000000000","message":"I see this being set here but not being used anywhere else on this file. Any reason to set it?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f2347ec089c90526fbae8fbc0f3ba0bc5c643bb8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            self.configuration.container_storage_helper)("},{"line_number":101,"context_line":"                configuration\u003dself.configuration)"},{"line_number":102,"context_line":"        self._helpers \u003d {}"},{"line_number":103,"context_line":"        self.network_allocation_update_support \u003d True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _get_helper(self, share):"},{"line_number":106,"context_line":"        if share[\"share_proto\"].upper() \u003d\u003d \"CIFS\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"e6229bdf_b5bb5f2c","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":53},"in_reply_to":"3dbb7ed3_febeafc1","updated":"2022-02-26 00:54:15.000000000","message":"yes, that is right... thanks guys :)","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":true,"context_lines":[{"line_number":100,"context_line":"            self.configuration.container_storage_helper)("},{"line_number":101,"context_line":"                configuration\u003dself.configuration)"},{"line_number":102,"context_line":"        self._helpers \u003d {}"},{"line_number":103,"context_line":"        self.network_allocation_update_support \u003d True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _get_helper(self, share):"},{"line_number":106,"context_line":"        if share[\"share_proto\"].upper() \u003d\u003d \"CIFS\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"3dbb7ed3_febeafc1","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":53},"in_reply_to":"8a9fcfa5_19e41d96","updated":"2022-02-25 15:14:56.000000000","message":"I\u0027m under the same impression as Goutham. I never looked into the scheduler\u0027s code, so I\u0027m not sure to be honest, I basically just copied this line from the Dummy driver multiple subnets implementation [1] because I thought it\u0027d be needed by something higher up in the abstraction stack, such as the manager or the scheduler. No objections if we decide to remove this.\n\n[1] https://review.opendev.org/c/openstack/manila/+/825110/26/manila/tests/share/drivers/dummy.py#145","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":100,"context_line":"            self.configuration.container_storage_helper)("},{"line_number":101,"context_line":"                configuration\u003dself.configuration)"},{"line_number":102,"context_line":"        self._helpers \u003d {}"},{"line_number":103,"context_line":"        self.network_allocation_update_support \u003d True"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _get_helper(self, share):"},{"line_number":106,"context_line":"        if share[\"share_proto\"].upper() \u003d\u003d \"CIFS\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"8a9fcfa5_19e41d96","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":53},"in_reply_to":"cf0229d3_31d0fe35","updated":"2022-02-25 06:21:17.000000000","message":"I think this ought to be reported to the scheduler through _update_share_stats below","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":264,"context_line":"                  \"%(network)s and subnet %(subnet)s by address %(ip)s.\","},{"line_number":265,"context_line":"                  msg_helper)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @utils.synchronized(\u0027container_driver_teardown_lock\u0027, external\u003dTrue)"},{"line_number":268,"context_line":"    def _teardown_server(self, *args, **kwargs):"},{"line_number":269,"context_line":"        server_id \u003d self._get_container_name(kwargs[\u0027server_details\u0027][\u0027id\u0027])"},{"line_number":270,"context_line":"        veths \u003d self.container.get_container_veths(server_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"daa5df6b_ace4a465","line":267,"range":{"start_line":267,"start_character":24,"end_line":267,"end_character":56},"updated":"2022-02-23 21:50:58.000000000","message":"I think there\u0027s no need to modify these... It can be misleading in the future when someone wants to see the history of modifications in this file. Could you please change this and the other occurrences you switched from \" to \u0027?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                  \"%(network)s and subnet %(subnet)s by address %(ip)s.\","},{"line_number":265,"context_line":"                  msg_helper)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @utils.synchronized(\u0027container_driver_teardown_lock\u0027, external\u003dTrue)"},{"line_number":268,"context_line":"    def _teardown_server(self, *args, **kwargs):"},{"line_number":269,"context_line":"        server_id \u003d self._get_container_name(kwargs[\u0027server_details\u0027][\u0027id\u0027])"},{"line_number":270,"context_line":"        veths \u003d self.container.get_container_veths(server_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5949e440_ee159478","line":267,"range":{"start_line":267,"start_character":24,"end_line":267,"end_character":56},"in_reply_to":"daa5df6b_ace4a465","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":279,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":280,"context_line":"                LOG.warning(\u0027Failed to delete port %s: port vanished.\u0027, veth)"},{"line_number":281,"context_line":"                LOG.error(e)"},{"line_number":282,"context_line":"            self.container.disconnect_network(network, server_id)"},{"line_number":283,"context_line":"            self.container.remove_network(network)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        self.container.stop_container(server_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"8c781e5f_0c5f875f","line":282,"range":{"start_line":282,"start_character":12,"end_line":282,"end_character":65},"updated":"2022-02-23 21:50:58.000000000","message":"let\u0027s think of a scenario here:\n1. I\u0027m an admin that is using the cloud for some time\n2. I already have 20 share servers deployed total\n3. I upgrade my cloud to support this version\n4. I want to delete all shares within a share server I had before this upgrade and furthermore, the share server itself\n5. I request the share server to be deleted\n6. It reaches this part of the code...\n\nWhen those shares/share servers were created, we didn\u0027t have this sorta concepts in manila (i.e. creating the docker networks and so on), so this operation to delete the share server would completely fail right? And the administrators wouldn\u0027t be able to recover from it using manila, considering that manila will always try to delete the docker network and so on using this code.\nActually, I think it wouldn\u0027t even reach this point in the code, it would already fail on line 271.\nSo I think there should be a way to identify if the share servers were deployed before this change. You could possibly use the new capability in the share server to do so, and if it\u0027s true, then you\u0027d search for docker networks. Otherwise if you do search, the driver will possibly break.\nWdyt? There\u0027s a chance that I\u0027m missing something too :p","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":279,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":280,"context_line":"                LOG.warning(\u0027Failed to delete port %s: port vanished.\u0027, veth)"},{"line_number":281,"context_line":"                LOG.error(e)"},{"line_number":282,"context_line":"            self.container.disconnect_network(network, server_id)"},{"line_number":283,"context_line":"            self.container.remove_network(network)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        self.container.stop_container(server_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"98a372bc_8fc91550","line":282,"range":{"start_line":282,"start_character":12,"end_line":282,"end_character":65},"in_reply_to":"8c781e5f_0c5f875f","updated":"2022-02-25 15:14:56.000000000","message":"This is a very important use case that I didn\u0027t consider enough (shame on me), thanks! :)\n\nYou\u0027re right about this change breaking the driver after an upgrade, but you got the wrong line:\n\n- get_container_veths will work (before this change, the containers had only one veth attached to them, but that\u0027s enough for us)\n- get_container_networks will work, it\u0027ll return a list with one item, a string containing \"bridge\", the name of the default Docker network used before this change\n- disconnect_network will work, it\u0027ll disconnect the bridge Docker network from the container (no problem here)\n\nThe issue lies in remove_network. It\u0027s not possible to remove the bridge Docker network, even if you\u0027re root and there are no containers using it.\n\nI added a conditional to check if we\u0027re dealing with the bridge Docker network, so now it won\u0027t try to delete it anymore.","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":402,"context_line":"        location \u003d self._create_export_and_mount_storage("},{"line_number":403,"context_line":"            share, server_id, new_share_name)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        result \u003d {\u0027size\u0027: size, \u0027export_locations\u0027: location}"},{"line_number":406,"context_line":"        LOG.info(\"Successfully managed share %(share)s, returning %(data)s\","},{"line_number":407,"context_line":"                 {\u0027share\u0027: share.id, \u0027data\u0027: result})"},{"line_number":408,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":10,"id":"83998776_2f1c25f3","line":405,"range":{"start_line":405,"start_character":52,"end_line":405,"end_character":60},"updated":"2022-02-23 21:50:58.000000000","message":"any specific reason to change this behavior with managing share servers?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f2347ec089c90526fbae8fbc0f3ba0bc5c643bb8","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        location \u003d self._create_export_and_mount_storage("},{"line_number":403,"context_line":"            share, server_id, new_share_name)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        result \u003d {\u0027size\u0027: size, \u0027export_locations\u0027: location}"},{"line_number":406,"context_line":"        LOG.info(\"Successfully managed share %(share)s, returning %(data)s\","},{"line_number":407,"context_line":"                 {\u0027share\u0027: share.id, \u0027data\u0027: result})"},{"line_number":408,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":10,"id":"a5eb289a_7ff860e6","line":405,"range":{"start_line":405,"start_character":52,"end_line":405,"end_character":60},"in_reply_to":"5c4ed08a_f972c119","updated":"2022-02-26 00:54:15.000000000","message":"Ack","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":true,"context_lines":[{"line_number":402,"context_line":"        location \u003d self._create_export_and_mount_storage("},{"line_number":403,"context_line":"            share, server_id, new_share_name)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        result \u003d {\u0027size\u0027: size, \u0027export_locations\u0027: location}"},{"line_number":406,"context_line":"        LOG.info(\"Successfully managed share %(share)s, returning %(data)s\","},{"line_number":407,"context_line":"                 {\u0027share\u0027: share.id, \u0027data\u0027: result})"},{"line_number":408,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":10,"id":"5c4ed08a_f972c119","line":405,"range":{"start_line":405,"start_character":52,"end_line":405,"end_character":60},"in_reply_to":"83998776_2f1c25f3","updated":"2022-02-25 15:14:56.000000000","message":"Yes! As far as I understand, the database expects this method to return a set, having backwards compatibility with strings. [1]\n\nPreviously, the return was a string [2], but I changed the create_share method from the protocol helper to return a list of strings [3] (now it\u0027ll actually return a list of dictionaries [4], after Goutham\u0027s suggestion on line #702 of the driver).\n\nIf I were to leave the square brackets around the location attribute here, the database would get a nested list, for which it would not be too happy :)\n\n[1] https://opendev.org/openstack/manila/src/branch/master/manila/db/sqlalchemy/api.py#L3729-L3750\n[2] https://opendev.org/openstack/manila/src/branch/master/manila/share/drivers/container/protocol_helper.py#L54\n[3] https://review.opendev.org/c/openstack/manila/+/826462/11/manila/share/drivers/container/protocol_helper.py#55-58\n[4] https://review.opendev.org/c/openstack/manila/+/826462/12/manila/share/drivers/container/protocol_helper.py#55-66","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"54f12284a320b045a42abad9ed108113ade34417","unresolved":true,"context_lines":[{"line_number":699,"context_line":"                    # TODO(ecsantos): The Container driver currently only"},{"line_number":700,"context_line":"                    # supports CIFS. If NFS support is implemented in the"},{"line_number":701,"context_line":"                    # future, the path should be adjusted accordingly."},{"line_number":702,"context_line":"                    \u0027path\u0027: \u0027//%(ip_address)s/%(share_id)s\u0027 %"},{"line_number":703,"context_line":"                    {"},{"line_number":704,"context_line":"                        \u0027ip_address\u0027: address,"},{"line_number":705,"context_line":"                        \u0027share_id\u0027: share_instance[\u0027share_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"d55d86bb_4eea3cd3","line":702,"range":{"start_line":702,"start_character":29,"end_line":702,"end_character":31},"updated":"2022-02-23 21:50:58.000000000","message":"iirc CIFS uses \\\\, right?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":699,"context_line":"                    # TODO(ecsantos): The Container driver currently only"},{"line_number":700,"context_line":"                    # supports CIFS. If NFS support is implemented in the"},{"line_number":701,"context_line":"                    # future, the path should be adjusted accordingly."},{"line_number":702,"context_line":"                    \u0027path\u0027: \u0027//%(ip_address)s/%(share_id)s\u0027 %"},{"line_number":703,"context_line":"                    {"},{"line_number":704,"context_line":"                        \u0027ip_address\u0027: address,"},{"line_number":705,"context_line":"                        \u0027share_id\u0027: share_instance[\u0027share_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"b121e237_54f14d32","line":702,"range":{"start_line":702,"start_character":29,"end_line":702,"end_character":31},"in_reply_to":"9e1e57c8_79522959","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"e3648b248947cc74a04e11643bcdd20ac50a92ac","unresolved":true,"context_lines":[{"line_number":699,"context_line":"                    # TODO(ecsantos): The Container driver currently only"},{"line_number":700,"context_line":"                    # supports CIFS. If NFS support is implemented in the"},{"line_number":701,"context_line":"                    # future, the path should be adjusted accordingly."},{"line_number":702,"context_line":"                    \u0027path\u0027: \u0027//%(ip_address)s/%(share_id)s\u0027 %"},{"line_number":703,"context_line":"                    {"},{"line_number":704,"context_line":"                        \u0027ip_address\u0027: address,"},{"line_number":705,"context_line":"                        \u0027share_id\u0027: share_instance[\u0027share_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"60c353d8_3c007a58","line":702,"range":{"start_line":702,"start_character":29,"end_line":702,"end_character":31},"in_reply_to":"b121e237_54f14d32","updated":"2022-02-25 17:07:13.000000000","message":"Because of its wide adoption on Windows, SMB addresses got notorious for their use of backslashes, but there are plenty of examples online showing that, in Linux, the usual way to mount/umount SMB shares is using forward slashes. [1]\n\nSince Tempest didn\u0027t like the backslashes [2], I\u0027ll be reverting them to forward slashes. Is that okay?\n\n[1] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_file_systems/mounting-an-smb-share-on-red-hat-enterprise-linux_managing-file-systems#proc_manually-mounting-an-smb-share_assembly_mounting-an-smb-share-on-red-hat-enterprise-linux\n[2] https://zuul.opendev.org/t/openstack/build/59544a0deb214f8e82c1936f085cefc2","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":699,"context_line":"                    # TODO(ecsantos): The Container driver currently only"},{"line_number":700,"context_line":"                    # supports CIFS. If NFS support is implemented in the"},{"line_number":701,"context_line":"                    # future, the path should be adjusted accordingly."},{"line_number":702,"context_line":"                    \u0027path\u0027: \u0027//%(ip_address)s/%(share_id)s\u0027 %"},{"line_number":703,"context_line":"                    {"},{"line_number":704,"context_line":"                        \u0027ip_address\u0027: address,"},{"line_number":705,"context_line":"                        \u0027share_id\u0027: share_instance[\u0027share_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"9e1e57c8_79522959","line":702,"range":{"start_line":702,"start_character":29,"end_line":702,"end_character":31},"in_reply_to":"d55d86bb_4eea3cd3","updated":"2022-02-25 06:21:17.000000000","message":"+1\n\nAlso, isn\u0027t this info should come from the protocol helper... see the \"create_share\" method here\n\nAlso, create_share is compiling export locations as a list of strings; here, you\u0027re compiling export dicts -- which is the right thing to do, but, wouldn\u0027t it make sense to also update create_share to compile a list of export dicts as well?","commit_id":"0dca78abd981379c7f2c5fb911007067f798bf1f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":133,"context_line":"            \u0027driver_name\u0027: \u0027ContainerShareDriver\u0027,"},{"line_number":134,"context_line":"            \u0027pools\u0027: self.storage.get_share_server_pools(),"},{"line_number":135,"context_line":"            \u0027security_service_update_support\u0027: True,"},{"line_number":136,"context_line":"            \u0027share_server_multiple_subnet_support\u0027: True"},{"line_number":137,"context_line":"        }"},{"line_number":138,"context_line":"        super(ContainerShareDriver, self)._update_share_stats(data)"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"28c1fe04_6624be1b","line":136,"range":{"start_line":136,"start_character":55,"end_line":136,"end_character":56},"updated":"2022-02-25 06:21:17.000000000","message":"add a trailing comma to the last element: https://docs.openstack.org/hacking/latest/user/hacking.html#dictionaries-lists","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            \u0027driver_name\u0027: \u0027ContainerShareDriver\u0027,"},{"line_number":134,"context_line":"            \u0027pools\u0027: self.storage.get_share_server_pools(),"},{"line_number":135,"context_line":"            \u0027security_service_update_support\u0027: True,"},{"line_number":136,"context_line":"            \u0027share_server_multiple_subnet_support\u0027: True"},{"line_number":137,"context_line":"        }"},{"line_number":138,"context_line":"        super(ContainerShareDriver, self)._update_share_stats(data)"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"abab2f3d_04428cb3","line":136,"range":{"start_line":136,"start_character":55,"end_line":136,"end_character":56},"in_reply_to":"28c1fe04_6624be1b","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @utils.synchronized(\u0027container_driver_teardown_lock\u0027, external\u003dTrue)"},{"line_number":268,"context_line":"    def _teardown_server(self, *args, **kwargs):"},{"line_number":269,"context_line":"        server_id \u003d self._get_container_name(kwargs[\u0027server_details\u0027][\u0027id\u0027])"},{"line_number":270,"context_line":"        veths \u003d self.container.get_container_veths(server_id)"},{"line_number":271,"context_line":"        networks \u003d self.container.get_container_networks(server_id)"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"6c16fb00_d954f208","line":269,"range":{"start_line":269,"start_character":0,"end_line":269,"end_character":76},"updated":"2022-02-25 06:21:17.000000000","message":"This is failing a bunch of times when running the tests --- see the KeyError in the driver logs: https://zuul.opendev.org/t/openstack/build/22d234d01d6740b6abe3b6c8d3f1a9cd/log/controller/logs/screen-m-shr.txt#4480-4513\n\nThe job\u0027s passing because the tests don\u0027t really care about the deletion of share servers since its a deferred deletion...","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":true,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @utils.synchronized(\u0027container_driver_teardown_lock\u0027, external\u003dTrue)"},{"line_number":268,"context_line":"    def _teardown_server(self, *args, **kwargs):"},{"line_number":269,"context_line":"        server_id \u003d self._get_container_name(kwargs[\u0027server_details\u0027][\u0027id\u0027])"},{"line_number":270,"context_line":"        veths \u003d self.container.get_container_veths(server_id)"},{"line_number":271,"context_line":"        networks \u003d self.container.get_container_networks(server_id)"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ae71314e_db5c7641","line":269,"range":{"start_line":269,"start_character":0,"end_line":269,"end_character":76},"in_reply_to":"6c16fb00_d954f208","updated":"2022-02-25 15:14:56.000000000","message":"This error dates back to the Wallaby release cycle, as it can be seen here: https://zuul.opendev.org/t/openstack/build/5677bc7f9e21453eb14679475f0c6dc9/log/controller/logs/screen-m-shr.txt#13396-13429\n\nI didn\u0027t modify the _get_container_name method, and note that this line is the same as in the master branch.\n\nI\u0027d happily investigate this further, but I don\u0027t think this error was introduced in this change. Wouldn\u0027t you agree?","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"efcb21c5101bdb37b6ccea94bbc11d9cf00019e3","unresolved":true,"context_lines":[{"line_number":256,"context_line":"        e_mac \u003d set_if + [\u0027external-ids:attached-mac\u003d\"%s\"\u0027 % port_mac]"},{"line_number":257,"context_line":"        e_id \u003d set_if + [\u0027external-ids:iface-id\u003d\"%s\"\u0027 % port_id]"},{"line_number":258,"context_line":"        e_status \u003d set_if + [\u0027external-ids:iface-status\u003dactive\u0027]"},{"line_number":259,"context_line":"        e_mcid \u003d set_if + [\u0027external-ids:manila-container\u003d%s\u0027 % server_id]"},{"line_number":260,"context_line":"        self._execute(\"ovs-vsctl\", \"--\", \"add-port\","},{"line_number":261,"context_line":"                      self.configuration.container_ovs_bridge_name, host_veth,"},{"line_number":262,"context_line":"                      *(e_mac + e_id + e_status + e_mcid), run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1d1f1f19_c32eafb8","line":259,"updated":"2022-03-03 21:30:54.000000000","message":"IIUC you don\u0027t need to maintain this info anymore, since you don\u0027t search for container veths using this metadata. Can you double check that and remove it from ?here?","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"80c08e3cd0309722f38ad900e0e6d0a0b0ed3b16","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        e_mac \u003d set_if + [\u0027external-ids:attached-mac\u003d\"%s\"\u0027 % port_mac]"},{"line_number":257,"context_line":"        e_id \u003d set_if + [\u0027external-ids:iface-id\u003d\"%s\"\u0027 % port_id]"},{"line_number":258,"context_line":"        e_status \u003d set_if + [\u0027external-ids:iface-status\u003dactive\u0027]"},{"line_number":259,"context_line":"        e_mcid \u003d set_if + [\u0027external-ids:manila-container\u003d%s\u0027 % server_id]"},{"line_number":260,"context_line":"        self._execute(\"ovs-vsctl\", \"--\", \"add-port\","},{"line_number":261,"context_line":"                      self.configuration.container_ovs_bridge_name, host_veth,"},{"line_number":262,"context_line":"                      *(e_mac + e_id + e_status + e_mcid), run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6a0c93_78702deb","line":259,"in_reply_to":"1d1f1f19_c32eafb8","updated":"2022-03-04 12:05:18.000000000","message":"That\u0027s right, same as the comment in line #175 of the driver.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"efcb21c5101bdb37b6ccea94bbc11d9cf00019e3","unresolved":true,"context_lines":[{"line_number":310,"context_line":"                new_interfaces.append(\"eth\" + str(ifnum))"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        for new_interface, subnet in zip(new_interfaces, network_info):"},{"line_number":313,"context_line":"            network_name \u003d \"manila-docker-network-\" + uuidutils.generate_uuid()"},{"line_number":314,"context_line":"            self.container.create_network(network_name)"},{"line_number":315,"context_line":"            self.container.connect_network(network_name, server_id)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"            bridge \u003d self.container.get_network_bridge(network_name)"},{"line_number":318,"context_line":"            veth \u003d self.container.get_veth_from_bridge(bridge)"},{"line_number":319,"context_line":"            self._connect_to_network(server_id, subnet, veth, bridge,"},{"line_number":320,"context_line":"                                     new_interface)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    @utils.synchronized(\"veth-lock\", external\u003dTrue)"},{"line_number":323,"context_line":"    def _setup_server(self, network_info, metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"94e66b9b_a8d60931","line":320,"range":{"start_line":313,"start_character":0,"end_line":320,"end_character":51},"updated":"2022-03-03 21:30:54.000000000","message":"question: do you need to always create a new docker network? Or it just make easier to get veth information from bridges? Maybe would be good to clarify that with some comments for future devs that may want to change this code.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6a964afa1808fb191418bd1570591a3a5a1bc1a0","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                new_interfaces.append(\"eth\" + str(ifnum))"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        for new_interface, subnet in zip(new_interfaces, network_info):"},{"line_number":313,"context_line":"            network_name \u003d \"manila-docker-network-\" + uuidutils.generate_uuid()"},{"line_number":314,"context_line":"            self.container.create_network(network_name)"},{"line_number":315,"context_line":"            self.container.connect_network(network_name, server_id)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"            bridge \u003d self.container.get_network_bridge(network_name)"},{"line_number":318,"context_line":"            veth \u003d self.container.get_veth_from_bridge(bridge)"},{"line_number":319,"context_line":"            self._connect_to_network(server_id, subnet, veth, bridge,"},{"line_number":320,"context_line":"                                     new_interface)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    @utils.synchronized(\"veth-lock\", external\u003dTrue)"},{"line_number":323,"context_line":"    def _setup_server(self, network_info, metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"74829ac7_b04e4f75","line":320,"range":{"start_line":313,"start_character":0,"end_line":320,"end_character":51},"in_reply_to":"85dc1976_5ad27e02","updated":"2022-03-04 12:42:13.000000000","message":"Thanks Eduardo","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"80c08e3cd0309722f38ad900e0e6d0a0b0ed3b16","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                new_interfaces.append(\"eth\" + str(ifnum))"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        for new_interface, subnet in zip(new_interfaces, network_info):"},{"line_number":313,"context_line":"            network_name \u003d \"manila-docker-network-\" + uuidutils.generate_uuid()"},{"line_number":314,"context_line":"            self.container.create_network(network_name)"},{"line_number":315,"context_line":"            self.container.connect_network(network_name, server_id)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"            bridge \u003d self.container.get_network_bridge(network_name)"},{"line_number":318,"context_line":"            veth \u003d self.container.get_veth_from_bridge(bridge)"},{"line_number":319,"context_line":"            self._connect_to_network(server_id, subnet, veth, bridge,"},{"line_number":320,"context_line":"                                     new_interface)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    @utils.synchronized(\"veth-lock\", external\u003dTrue)"},{"line_number":323,"context_line":"    def _setup_server(self, network_info, metadata\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"85dc1976_5ad27e02","line":320,"range":{"start_line":313,"start_character":0,"end_line":320,"end_character":51},"in_reply_to":"94e66b9b_a8d60931","updated":"2022-03-04 12:05:18.000000000","message":"Yes, for both questions. In Docker, if we want to add a new interface to the container, we need to connect a new Docker network to it, so that a new bridge and a new veth pair are created and plugged into the container. This also makes it easier to retrieve bridge and veth information from the containers, because we know that for every subnet present in a given share server, there\u0027ll be one Docker network, one bridge, and one veth pair, so getting and manipulating this data is very straightforward. But I agree, that\u0027s not obvious at a first glance, so I can add a comment explaining the procedure in a follow-up change.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4ee8d7010ead4997537f523908825d67038cace4","unresolved":true,"context_lines":[{"line_number":698,"context_line":"            for address in addresses:"},{"line_number":699,"context_line":"                export_location \u003d {"},{"line_number":700,"context_line":"                    \"is_admin_only\": False,"},{"line_number":701,"context_line":"                    # TODO(ecsantos): The Container driver currently only"},{"line_number":702,"context_line":"                    # supports CIFS. If NFS support is implemented in the"},{"line_number":703,"context_line":"                    # future, the path should be adjusted accordingly."},{"line_number":704,"context_line":"                    \"path\": \"//%(ip_address)s/%(share_id)s\" %"},{"line_number":705,"context_line":"                    {"},{"line_number":706,"context_line":"                        \"ip_address\": address,"}],"source_content_type":"text/x-python","patch_set":18,"id":"ac0b71da_8aa8b499","line":703,"range":{"start_line":701,"start_character":20,"end_line":703,"end_character":70},"updated":"2022-03-03 20:46:44.000000000","message":"please add this todo before the variable declaration","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ccf4430e5ff03afa25cd4e1ff3fb2535586223da","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            for address in addresses:"},{"line_number":699,"context_line":"                export_location \u003d {"},{"line_number":700,"context_line":"                    \"is_admin_only\": False,"},{"line_number":701,"context_line":"                    # TODO(ecsantos): The Container driver currently only"},{"line_number":702,"context_line":"                    # supports CIFS. If NFS support is implemented in the"},{"line_number":703,"context_line":"                    # future, the path should be adjusted accordingly."},{"line_number":704,"context_line":"                    \"path\": \"//%(ip_address)s/%(share_id)s\" %"},{"line_number":705,"context_line":"                    {"},{"line_number":706,"context_line":"                        \"ip_address\": address,"}],"source_content_type":"text/x-python","patch_set":18,"id":"4e7e5e75_fd58d6a8","line":703,"range":{"start_line":701,"start_character":20,"end_line":703,"end_character":70},"in_reply_to":"ac0b71da_8aa8b499","updated":"2022-03-03 21:20:35.000000000","message":"Done","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"}],"manila/tests/share/drivers/container/fakes.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":179,"context_line":"        \u0027network_allocations\u0027: [allocations],"},{"line_number":180,"context_line":"        \u0027neutron_net_id\u0027: \u0027fake_net\u0027,"},{"line_number":181,"context_line":"        \u0027neutron_subnet_id\u0027: \u0027fake_subnet\u0027,"},{"line_number":182,"context_line":"        \u0027security_services\u0027: [security_services]"},{"line_number":183,"context_line":"    }"},{"line_number":184,"context_line":"    network.update(kwargs)"},{"line_number":185,"context_line":"    return [db_fakes.FakeModel(network)]"}],"source_content_type":"text/x-python","patch_set":11,"id":"fc0774ec_2bb9590f","line":182,"range":{"start_line":182,"start_character":47,"end_line":182,"end_character":48},"updated":"2022-02-25 06:21:17.000000000","message":"trailing comma: https://docs.openstack.org/hacking/latest/user/hacking.html#dictionaries-lists","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        \u0027network_allocations\u0027: [allocations],"},{"line_number":180,"context_line":"        \u0027neutron_net_id\u0027: \u0027fake_net\u0027,"},{"line_number":181,"context_line":"        \u0027neutron_subnet_id\u0027: \u0027fake_subnet\u0027,"},{"line_number":182,"context_line":"        \u0027security_services\u0027: [security_services]"},{"line_number":183,"context_line":"    }"},{"line_number":184,"context_line":"    network.update(kwargs)"},{"line_number":185,"context_line":"    return [db_fakes.FakeModel(network)]"}],"source_content_type":"text/x-python","patch_set":11,"id":"99a29770_e0e17a4a","line":182,"range":{"start_line":182,"start_character":47,"end_line":182,"end_character":48},"in_reply_to":"fc0774ec_2bb9590f","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                \u0027network_allocations\u0027: ["},{"line_number":213,"context_line":"                    {"},{"line_number":214,"context_line":"                        \u0027id\u0027: \u0027fake_id_current\u0027,"},{"line_number":215,"context_line":"                        \u0027ip_address\u0027: \u0027192.168.144.100\u0027"},{"line_number":216,"context_line":"                    }"},{"line_number":217,"context_line":"                ]"},{"line_number":218,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":11,"id":"7c975d59_e30a08b8","line":215,"range":{"start_line":215,"start_character":54,"end_line":215,"end_character":55},"updated":"2022-02-25 06:21:17.000000000","message":"trailing comma: https://docs.openstack.org/hacking/latest/user/hacking.html#dictionaries-lists","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                \u0027network_allocations\u0027: ["},{"line_number":213,"context_line":"                    {"},{"line_number":214,"context_line":"                        \u0027id\u0027: \u0027fake_id_current\u0027,"},{"line_number":215,"context_line":"                        \u0027ip_address\u0027: \u0027192.168.144.100\u0027"},{"line_number":216,"context_line":"                    }"},{"line_number":217,"context_line":"                ]"},{"line_number":218,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":11,"id":"89f82036_4151bd6b","line":215,"range":{"start_line":215,"start_character":54,"end_line":215,"end_character":55},"in_reply_to":"7c975d59_e30a08b8","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7d0955f8a67b1efab0c00ea70fd507a3eb686f57","unresolved":true,"context_lines":[{"line_number":227,"context_line":"        \u0027network_allocations\u0027: ["},{"line_number":228,"context_line":"            {"},{"line_number":229,"context_line":"                \u0027id\u0027: \u0027fake_id_new\u0027,"},{"line_number":230,"context_line":"                \u0027ip_address\u0027: \u002710.0.0.100\u0027"},{"line_number":231,"context_line":"            }"},{"line_number":232,"context_line":"        ]"},{"line_number":233,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"4a892daa_4fb16a69","line":230,"range":{"start_line":230,"start_character":41,"end_line":230,"end_character":42},"updated":"2022-02-25 06:21:17.000000000","message":"trailing comma: https://docs.openstack.org/hacking/latest/user/hacking.html#dictionaries-lists","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"},{"author":{"_account_id":32411,"name":"Eduardo Santos","email":"eduardo.experimental@gmail.com","username":"ecsantos"},"change_message_id":"3ffb89ab9627768d1b485daa7224615fe4e3e7d3","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        \u0027network_allocations\u0027: ["},{"line_number":228,"context_line":"            {"},{"line_number":229,"context_line":"                \u0027id\u0027: \u0027fake_id_new\u0027,"},{"line_number":230,"context_line":"                \u0027ip_address\u0027: \u002710.0.0.100\u0027"},{"line_number":231,"context_line":"            }"},{"line_number":232,"context_line":"        ]"},{"line_number":233,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"6c3a1d9d_08bacb67","line":230,"range":{"start_line":230,"start_character":41,"end_line":230,"end_character":42},"in_reply_to":"4a892daa_4fb16a69","updated":"2022-02-25 15:14:56.000000000","message":"Done","commit_id":"3dc55b116d8d32769aced0b4b22a2966d6bc0597"}],"releasenotes/notes/container-multiple-subnets-per-az-702aad41d6f91b59.yaml":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4ee8d7010ead4997537f523908825d67038cace4","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The Container driver is now able to:"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - create shares using share networks that have multiple share network"},{"line_number":7,"context_line":"      subnets in the same availability zone"},{"line_number":8,"context_line":"    - create extra subnets within the same availability zone in share networks"},{"line_number":9,"context_line":"      that have shares exported on them"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"a0bf238b_025de79b","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":7},"updated":"2022-03-03 20:46:44.000000000","message":"Capital C\nAlso, please add a period at the end of this phrase","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ccf4430e5ff03afa25cd4e1ff3fb2535586223da","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The Container driver is now able to:"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - create shares using share networks that have multiple share network"},{"line_number":7,"context_line":"      subnets in the same availability zone"},{"line_number":8,"context_line":"    - create extra subnets within the same availability zone in share networks"},{"line_number":9,"context_line":"      that have shares exported on them"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"4e89c3a3_724baa56","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":7},"in_reply_to":"a0bf238b_025de79b","updated":"2022-03-03 21:20:35.000000000","message":"Done","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4ee8d7010ead4997537f523908825d67038cace4","unresolved":true,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - create shares using share networks that have multiple share network"},{"line_number":7,"context_line":"      subnets in the same availability zone"},{"line_number":8,"context_line":"    - create extra subnets within the same availability zone in share networks"},{"line_number":9,"context_line":"      that have shares exported on them"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    These new features only apply to the"},{"line_number":12,"context_line":"    ``driver_handles_share_servers \u003d True`` operation mode."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"0a5792c6_e2dad471","line":9,"range":{"start_line":8,"start_character":6,"end_line":9,"end_character":39},"updated":"2022-03-03 20:46:44.000000000","message":"Add more network interfaces into share servers that are already deployed based on the share network subnets within the share network.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ccf4430e5ff03afa25cd4e1ff3fb2535586223da","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - create shares using share networks that have multiple share network"},{"line_number":7,"context_line":"      subnets in the same availability zone"},{"line_number":8,"context_line":"    - create extra subnets within the same availability zone in share networks"},{"line_number":9,"context_line":"      that have shares exported on them"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    These new features only apply to the"},{"line_number":12,"context_line":"    ``driver_handles_share_servers \u003d True`` operation mode."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"baf60ba3_b1b86c91","line":9,"range":{"start_line":8,"start_character":6,"end_line":9,"end_character":39},"in_reply_to":"0a5792c6_e2dad471","updated":"2022-03-03 21:20:35.000000000","message":"Carlos suggestion makes sense to me. \nChanged to the suggested sentence.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4ee8d7010ead4997537f523908825d67038cace4","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    - create extra subnets within the same availability zone in share networks"},{"line_number":9,"context_line":"      that have shares exported on them"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    These new features only apply to the"},{"line_number":12,"context_line":"    ``driver_handles_share_servers \u003d True`` operation mode."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"6e55ef40_a2c32f59","line":12,"range":{"start_line":11,"start_character":4,"end_line":12,"end_character":59},"updated":"2022-03-03 20:46:44.000000000","message":"I think there\u0027s no need to mention this.\nThere\u0027s no container driver for DHSS\u003dFalse","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ccf4430e5ff03afa25cd4e1ff3fb2535586223da","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    - create extra subnets within the same availability zone in share networks"},{"line_number":9,"context_line":"      that have shares exported on them"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    These new features only apply to the"},{"line_number":12,"context_line":"    ``driver_handles_share_servers \u003d True`` operation mode."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"9d0bb360_ffeb7b8b","line":12,"range":{"start_line":11,"start_character":4,"end_line":12,"end_character":59},"in_reply_to":"6e55ef40_a2c32f59","updated":"2022-03-03 21:20:35.000000000","message":"Agree. Done.","commit_id":"561a12d4544e8a629c6b018d931b0b911d611de1"}]}
