)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9dbb7484074d8c08fb0315ea837223d24c9e96f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d8be4c7a_30c8e3c1","updated":"2021-11-15 17:14:01.000000000","message":"given this has already merged i cant -1 it but i dont think this design is correct.\nit will require external client to make 2 queries whenever this extention is present which will increase load on the neutron api and slow down any request that needs the security groups like a server show.","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"a3f9e808903f8b803ad81c5c88710858b474ae03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"10159460_f4a8f7be","updated":"2021-10-27 00:29:16.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"cbe86c66b754d8c1f78867fc510e314a9638460b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1050007b_02e13e71","updated":"2021-11-01 15:52:04.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"b41ecb758f9870c0f73fbe52c6ebb7d4d488579f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"21964747_5d0fec56","updated":"2021-10-25 14:10:47.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"31e8a60240cc374346e9f115787227f8675d366e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"24964bcc_56b9f48e","updated":"2021-10-13 05:56:52.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"b1f83083e3385e59c557e7e4b4fc5ef3e0e31f90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"333f2c9c_f15e8f92","updated":"2021-10-27 16:11:37.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"14b904582f59652ab8556163a9bb60dd05a31465","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3b64f5f0_06564617","updated":"2021-10-27 21:00:51.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"37c0e7f6c42045510c9af888b20a3f5826f52b1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"412861b1_85a530c0","updated":"2021-10-23 00:24:37.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"5b39d0feb2b5431b21ee760cec6b5037aa1279e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"48b765a9_540b7ed0","updated":"2021-10-29 15:30:55.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"6852f0940b72d99ae2334d2775b0accb8451c5f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4bc33fb8_ce2b72b0","updated":"2021-10-13 15:58:07.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"38b3143420b89303b4a0fe8a1c630dc2e2ca9b54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4d6c0ddd_abc40179","updated":"2021-11-01 20:45:45.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"9e7d076184dcf5ccee01f9a31a3f2bab2612c535","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5064a217_d9d55de0","updated":"2021-10-31 20:43:02.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"b3ca602e8919d18567785efe2641fc5f769b691a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5c2981cf_c862ca6f","updated":"2021-10-21 01:55:24.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"129f286bd68cf874e384d28e9a684f387f56129d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"61f995e4_6b04b585","updated":"2021-10-24 16:11:14.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"5e3086e39fc9852012d7e8ff39d0f9582da604c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"65df05ce_12dc0ffc","updated":"2021-10-28 18:15:20.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"1087850901250a6e69a6997e4efbdbc1965611d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6a854800_d511a087","updated":"2021-10-20 21:45:18.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"3c3e31b5c163958eccdcc23321e9e7e4407a8006","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"78a0f6c1_af7cedf5","updated":"2021-10-28 15:15:01.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"1b83622730edb4f9de08d8f08f217ca1631be7f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"80ce892a_b5ade5c9","updated":"2021-10-13 19:17:45.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"3dcd60b8cf0e2a8f91e78c0bf32591c238194c95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"893cf63d_ce680d39","updated":"2021-10-23 20:33:07.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"cd4c1f9590a290ead970226117af770bab750155","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"93ef9191_c772e7d7","updated":"2021-10-26 16:20:09.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"281012b85715b28132f143604679e313672b8e89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9b9766cb_48d247c5","updated":"2021-10-26 08:02:26.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"99cc5a6d8e9edd1e7088c9119dbc3eefca738a54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ad8c3bc0_5819148a","updated":"2021-10-26 04:54:46.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"e462dfb258fb8c9ad1de1dc1dddbf986e5131e58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c49460cd_a6a8786d","updated":"2021-10-22 15:28:57.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"a77159ba5fb19035d7c785035b78e6afa75755a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c9ba115e_f046df65","updated":"2021-10-14 17:45:44.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"891f3ed46748ef3ec03bac5213491beb5a97e74b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d26114d3_40deb094","updated":"2021-10-28 22:26:12.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"5089e0fae724f2bbc8f7c34fc4453d3700aa359b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d761e5c5_009a4b71","updated":"2021-10-29 02:02:10.000000000","message":"recheck","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e802a7bc94e5e8c86873aa42f91f0a6a4614506d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7287991a_96ede6bb","updated":"2021-10-21 09:13:40.000000000","message":"recheck\npip dependency issue","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"2a0b32c9ea33c53e492547e43a904c533dc94c8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6bf18ebe_b548635b","in_reply_to":"d8be4c7a_30c8e3c1","updated":"2021-11-15 20:21:36.000000000","message":"2 queries (1:tenant_id\u003dxxx\u0026shared\u003dFalse 2:shared\u003dTrue) are only needed when the client wants to get the security groups owned and shared for a given tenant. This patch does not change the behavior of calling v2.0/security-groups without any filters which still returns all the SGs that are accessible to the caller, including owned, shared, and other tenants\u0027(if the caller is an admin).","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"}],"neutron/extensions/security_groups_shared_filtering_lib.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9dbb7484074d8c08fb0315ea837223d24c9e96f4","unresolved":true,"context_lines":[{"line_number":39,"context_line":"        constants.SHARED: {"},{"line_number":40,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":41,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":42,"context_line":"            \u0027convert_to\u0027: converters.convert_to_boolean,"},{"line_number":43,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":44,"context_line":"            \u0027is_filter\u0027: True,"},{"line_number":45,"context_line":"            \u0027required_by_policy\u0027: True,"}],"source_content_type":"text/x-python","patch_set":7,"id":"04dffb68_89f3fd6e","line":42,"range":{"start_line":42,"start_character":24,"end_line":42,"end_character":55},"updated":"2021-11-15 17:14:01.000000000","message":"i kind of think this is a design defect\n\nwe shoudl support getting all security group you can use in a singel query\n\nso rahter then just the shared or not shared ones we should be able to say\nreturn all security groups that are valide for me to see by passing shared\u003dboth or some other sential.\nso this should be an enum filed not a boolean.","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"2a0b32c9ea33c53e492547e43a904c533dc94c8d","unresolved":true,"context_lines":[{"line_number":39,"context_line":"        constants.SHARED: {"},{"line_number":40,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":41,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":42,"context_line":"            \u0027convert_to\u0027: converters.convert_to_boolean,"},{"line_number":43,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":44,"context_line":"            \u0027is_filter\u0027: True,"},{"line_number":45,"context_line":"            \u0027required_by_policy\u0027: True,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a1ff885_2d0f2669","line":42,"range":{"start_line":42,"start_character":24,"end_line":42,"end_character":55},"in_reply_to":"04dffb68_89f3fd6e","updated":"2021-11-15 20:21:36.000000000","message":"The patch follows the existing API behavior of other Neutron RBAC resources like networks, subnet_pools, etc. \"return all security groups that are valid for me\" can always and still be done by 1 API call to list without passing any filters (will return other projects\u0027 SGs if the caller is an admin). Instead of creating a new API to \"return all SGs that are owned OR shared to a given tenant\" (this kind of API behavior does not exist in Neutron), I chose to use the existing \"shared\" field and make it to be a filter in addition to the tenant_id.","commit_id":"4bd1c82213e063f2e6a39e36d828bd800fd81ac6"}],"neutron/extensions/securitygroup.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"430b2f9b9a46e247e2fd5f67734c3d59ad5ecd44","unresolved":true,"context_lines":[{"line_number":236,"context_line":"        const.SHARED: {"},{"line_number":237,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":238,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":239,"context_line":"            \u0027default\u0027: False,"},{"line_number":240,"context_line":"            \u0027convert_to\u0027: converters.convert_to_boolean,"},{"line_number":241,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":242,"context_line":"            \u0027is_filter\u0027: True,"}],"source_content_type":"text/x-python","patch_set":4,"id":"6b616320_cc752c09","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":29},"updated":"2021-10-05 15:15:05.000000000","message":"Is it needed for a read-only field?\nThis field is used to determine the default value when creating a new SG, so I wonder it is unnecessary.","commit_id":"89a85273aaec680985931fe80a75ec5bb02adb8f"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"4c67ff755868d983aacaef42f88679fcad18d9dd","unresolved":true,"context_lines":[{"line_number":236,"context_line":"        const.SHARED: {"},{"line_number":237,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":238,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":239,"context_line":"            \u0027default\u0027: False,"},{"line_number":240,"context_line":"            \u0027convert_to\u0027: converters.convert_to_boolean,"},{"line_number":241,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":242,"context_line":"            \u0027is_filter\u0027: True,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b3dfd8d_861d138f","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":29},"in_reply_to":"6b616320_cc752c09","updated":"2021-10-05 22:19:56.000000000","message":"I have removed the default value.","commit_id":"89a85273aaec680985931fe80a75ec5bb02adb8f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"430b2f9b9a46e247e2fd5f67734c3d59ad5ecd44","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            \u0027is_filter\u0027: True,"},{"line_number":243,"context_line":"            \u0027required_by_policy\u0027: True,"},{"line_number":244,"context_line":"            \u0027enforce_policy\u0027: True"},{"line_number":245,"context_line":"        },"},{"line_number":246,"context_line":"        SECURITYGROUPRULES: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":247,"context_line":"                             \u0027is_visible\u0027: True},"},{"line_number":248,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":4,"id":"78e68f48_4a0c105f","line":245,"updated":"2021-10-05 15:15:05.000000000","message":"Could you add this attribute \"shared\" as a separate (shim) API extension?\nThe feature should be discoverable from API users.\n\nYou also proposed a horizon patch. Horizon needs to detect the availability of \"shared\" attribute so a separate API extension is required.","commit_id":"89a85273aaec680985931fe80a75ec5bb02adb8f"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"4c67ff755868d983aacaef42f88679fcad18d9dd","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            \u0027is_filter\u0027: True,"},{"line_number":243,"context_line":"            \u0027required_by_policy\u0027: True,"},{"line_number":244,"context_line":"            \u0027enforce_policy\u0027: True"},{"line_number":245,"context_line":"        },"},{"line_number":246,"context_line":"        SECURITYGROUPRULES: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":247,"context_line":"                             \u0027is_visible\u0027: True},"},{"line_number":248,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":4,"id":"4156b191_937b7a0a","line":245,"in_reply_to":"78e68f48_4a0c105f","updated":"2021-10-05 22:19:56.000000000","message":"\u003e Could you add this attribute \"shared\" as a separate (shim) API extension?\n\u003e The feature should be discoverable from API users.\n\u003e \n\u003e You also proposed a horizon patch. Horizon needs to detect the availability of \"shared\" attribute so a separate API extension is required.\n\nI moved it to the new api extension: https://review.opendev.org/c/openstack/neutron-lib/+/812617","commit_id":"89a85273aaec680985931fe80a75ec5bb02adb8f"}],"neutron/objects/securitygroup.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"6a9dadbce86e8c28dceadb1741ed694286aca4a2","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":86,"context_line":"        super(SecurityGroup, self).from_db_object(db_obj)"},{"line_number":87,"context_line":"        self._load_shared(db_obj)"},{"line_number":88,"context_line":"        if self._load_synthetic_fields:"},{"line_number":89,"context_line":"            setattr(self, \u0027is_default\u0027,"},{"line_number":90,"context_line":"                    bool(db_obj.get(\u0027default_security_group\u0027)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"b6722e79_707e26b3","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":33},"updated":"2021-09-30 07:41:58.000000000","message":"isn\u0027t it done by super call above?","commit_id":"0bed0b0a383457c92cec8ed5421b19d878f62915"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"4c67ff755868d983aacaef42f88679fcad18d9dd","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":86,"context_line":"        super(SecurityGroup, self).from_db_object(db_obj)"},{"line_number":87,"context_line":"        self._load_shared(db_obj)"},{"line_number":88,"context_line":"        if self._load_synthetic_fields:"},{"line_number":89,"context_line":"            setattr(self, \u0027is_default\u0027,"},{"line_number":90,"context_line":"                    bool(db_obj.get(\u0027default_security_group\u0027)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"904379c5_da9f77c4","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":33},"in_reply_to":"415b584a_8ab20fb4","updated":"2021-10-05 22:19:56.000000000","message":"Please ignore patch 4 which is a wrong approach. The new fix is to remove the default value for the shared field in the object: https://review.opendev.org/c/openstack/neutron/+/811242/5/neutron/objects/securitygroup.py#54 So that \u0027shared\u0027 will not always be in the object\u0027s changed fields and _load_shared will update the field correctly.","commit_id":"0bed0b0a383457c92cec8ed5421b19d878f62915"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"b25a35373bdf69d6360d3eb3179fcd0bdb78f56e","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":86,"context_line":"        super(SecurityGroup, self).from_db_object(db_obj)"},{"line_number":87,"context_line":"        self._load_shared(db_obj)"},{"line_number":88,"context_line":"        if self._load_synthetic_fields:"},{"line_number":89,"context_line":"            setattr(self, \u0027is_default\u0027,"},{"line_number":90,"context_line":"                    bool(db_obj.get(\u0027default_security_group\u0027)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"c0e3eef8_3189b9b8","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":33},"in_reply_to":"b6722e79_707e26b3","updated":"2021-09-30 23:48:13.000000000","message":"I thought the same, but in my test I have to explicitly call this _load_shared() otherwise, the shared attr will always be False no matter either the SG is shared or not. Here is the MRO of the SecurityGroup object class, I guess the shared attr gets overrode in the call stack though it\u0027s not clear to me:\n\u003cclass \u0027neutron.objects.securitygroup.SecurityGroup\u0027\u003e,\n\u003cclass \u0027neutron.objects.rbac_db.RbacNeutronDbObjectMixin\u0027\u003e,\n\u003cclass \u0027neutron.db.rbac_db_mixin.RbacPluginMixin\u0027\u003e,\n\u003cclass \u0027neutron.objects.base.NeutronDbObject\u0027\u003e,\n\u003cclass \u0027neutron.objects.base.NeutronObject\u0027\u003e,\n\u003cclass \u0027oslo_versionedobjects.base.VersionedObject\u0027\u003e,\n\u003cclass \u0027oslo_versionedobjects.base.VersionedObjectDictCompat\u0027\u003e,\n\u003cclass \u0027oslo_versionedobjects.base.ComparableVersionedObject\u0027\u003e,\n\u003cclass \u0027object\u0027\u003e","commit_id":"0bed0b0a383457c92cec8ed5421b19d878f62915"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"fd46bd06c336e608cfa0d2dbfef469bbfe574f78","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":86,"context_line":"        super(SecurityGroup, self).from_db_object(db_obj)"},{"line_number":87,"context_line":"        self._load_shared(db_obj)"},{"line_number":88,"context_line":"        if self._load_synthetic_fields:"},{"line_number":89,"context_line":"            setattr(self, \u0027is_default\u0027,"},{"line_number":90,"context_line":"                    bool(db_obj.get(\u0027default_security_group\u0027)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"e171e4e0_c8f1200d","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":33},"in_reply_to":"c0e3eef8_3189b9b8","updated":"2021-10-01 07:09:48.000000000","message":"I see, but we but we better to not sweep this issue the rug","commit_id":"0bed0b0a383457c92cec8ed5421b19d878f62915"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"c81fa06a9942d98717205bd4b7e987861ce9e967","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":86,"context_line":"        super(SecurityGroup, self).from_db_object(db_obj)"},{"line_number":87,"context_line":"        self._load_shared(db_obj)"},{"line_number":88,"context_line":"        if self._load_synthetic_fields:"},{"line_number":89,"context_line":"            setattr(self, \u0027is_default\u0027,"},{"line_number":90,"context_line":"                    bool(db_obj.get(\u0027default_security_group\u0027)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"415b584a_8ab20fb4","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":33},"in_reply_to":"db59242e_ef3b5b40","updated":"2021-10-04 22:02:18.000000000","message":"Please see Patchset #4 for the changes. I changed the order of _load_shared() being called in the objects/rbac_db.py. The \u0027shared\u0027 is in the SG obj\u0027s changed fields along with \u0027stateful\u0027 and \u0027is_default\u0027, so _load_shared was early returned previously.","commit_id":"0bed0b0a383457c92cec8ed5421b19d878f62915"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"65ffcb1b0e0f2087236fe008d48dadecbaacc58a","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":86,"context_line":"        super(SecurityGroup, self).from_db_object(db_obj)"},{"line_number":87,"context_line":"        self._load_shared(db_obj)"},{"line_number":88,"context_line":"        if self._load_synthetic_fields:"},{"line_number":89,"context_line":"            setattr(self, \u0027is_default\u0027,"},{"line_number":90,"context_line":"                    bool(db_obj.get(\u0027default_security_group\u0027)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"db59242e_ef3b5b40","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":33},"in_reply_to":"e171e4e0_c8f1200d","updated":"2021-10-01 07:27:57.000000000","message":"*under the rug","commit_id":"0bed0b0a383457c92cec8ed5421b19d878f62915"}]}
