)]}'
{"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"86bec98cdf39ae36c295e8dc9000e1ba29186529","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                        \"they do not own.\")"},{"line_number":138,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        self_sharing \u003d (event \u003d\u003d events.BEFORE_CREATE and"},{"line_number":141,"context_line":"                        policy[\u0027target_tenant\u0027] \u003d\u003d net[\u0027tenant_id\u0027])"},{"line_number":142,"context_line":"        tenant_to_check \u003d None"},{"line_number":143,"context_line":"        if event \u003d\u003d events.BEFORE_UPDATE:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_eb93e6a1","line":140,"updated":"2016-01-19 09:55:00.000000000","message":"Nit/structure/suggestion: \n\nwhy not using shelf_sharing \u003d\u003d  (policy[\u0027target_tenant\u0027] \u003d\u003d net[\u0027tenant_id\u0027])  \n\nand then checking if shelf_sharing inside the BEFORE_UPDATE and a new  BEFORE_CREATE if branch ? \n\nif event\u003d\u003dBEFORE_CREATE:\n\nelif event\u003d\u003dBEFORE_UPDATE:\n\nelif event\u003d\u003d BEFORE_DELETE:\n\n\n\nit makes the specific event case handling more clear.\n\nIn that case you may want to define your own InvalidInput exception derivate so you don\u0027t need to define the msg twice.","commit_id":"b2db735519291c92cc9a346599c4551624795401"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c54d8731a4e72278b2cd176b133b1b0790e55d59","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"DNS_DOMAIN_DEFAULT \u003d \u0027openstacklocal.\u0027"},{"line_number":68,"context_line":"FQDN_MAX_LEN \u003d 255"},{"line_number":69,"context_line":"SELF_SHARING_NET_RBAC_ERROR \u003d _(\u0027Not valid to set the target tenant \u0027"},{"line_number":70,"context_line":"                                \u0027to the network owner\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_8e5adbf0","line":69,"updated":"2016-01-25 05:14:25.000000000","message":"I don\u0027t think it is good to add a const that is only used in one method, try to move it to line 143","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"},{"author":{"_account_id":6876,"name":"stephen-ma","email":"stephenbma43@gmail.com","username":"stephen-ma"},"change_message_id":"f28d548d8f647857dbbb9991de192efa6151eebd","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"DNS_DOMAIN_DEFAULT \u003d \u0027openstacklocal.\u0027"},{"line_number":68,"context_line":"FQDN_MAX_LEN \u003d 255"},{"line_number":69,"context_line":"SELF_SHARING_NET_RBAC_ERROR \u003d _(\u0027Not valid to set the target tenant \u0027"},{"line_number":70,"context_line":"                                \u0027to the network owner\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_36daf317","line":69,"in_reply_to":"9a68dd71_8e5adbf0","updated":"2016-01-26 00:12:17.000000000","message":"Done","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"},{"author":{"_account_id":6876,"name":"stephen-ma","email":"stephenbma43@gmail.com","username":"stephen-ma"},"change_message_id":"f28d548d8f647857dbbb9991de192efa6151eebd","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                raise n_exc.InvalidInput("},{"line_number":152,"context_line":"                    error_message\u003dSELF_SHARING_NET_RBAC_ERROR)"},{"line_number":153,"context_line":"            if policy[\u0027target_tenant\u0027] !\u003d new_tenant:"},{"line_number":154,"context_line":"                tenant_to_check \u003d policy[\u0027target_tenant\u0027]"},{"line_number":155,"context_line":"        elif event \u003d\u003d events.BEFORE_DELETE:"},{"line_number":156,"context_line":"            # TODO(stephen-ma):Let existing self-sharing rules to be deleted"},{"line_number":157,"context_line":"            # without checking for tenant ports on network."}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_16500f31","line":154,"updated":"2016-01-26 00:12:17.000000000","message":"Allow updates of a rule where target-tenant\u003dnetwork-owner to a different target tenant to proceed without doing the port check.","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"5f93c26f0a4df994a1e768911d7daa3531ccf2d8","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                tenant_to_check \u003d policy[\u0027target_tenant\u0027]"},{"line_number":155,"context_line":"        elif event \u003d\u003d events.BEFORE_DELETE:"},{"line_number":156,"context_line":"            # TODO(stephen-ma):Let existing self-sharing rules to be deleted"},{"line_number":157,"context_line":"            # without checking for tenant ports on network."},{"line_number":158,"context_line":"            tenant_to_check \u003d policy[\u0027target_tenant\u0027]"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        if tenant_to_check:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_05aee080","line":157,"updated":"2016-01-23 12:16:43.000000000","message":"I would suggest to create a net validate method to check whether it\u0027s self_sharing, and in that method self_sharing should be not related to any events. As a common say, after validate checking fails for creating and updating, we could confirm there is not self_sharing rule exists, and by that, no need to create deletion.","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"7de4061c12dc9c5363c5e103597fbcd701c445ab","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                tenant_to_check \u003d policy[\u0027target_tenant\u0027]"},{"line_number":155,"context_line":"        elif event \u003d\u003d events.BEFORE_DELETE:"},{"line_number":156,"context_line":"            # TODO(stephen-ma):Let existing self-sharing rules to be deleted"},{"line_number":157,"context_line":"            # without checking for tenant ports on network."},{"line_number":158,"context_line":"            tenant_to_check \u003d policy[\u0027target_tenant\u0027]"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        if tenant_to_check:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_25ea04ad","line":157,"in_reply_to":"9a68dd71_05aee080","updated":"2016-01-23 12:19:32.000000000","message":"s/net validate/new validate\n*no need to care deletion.\n\nsorry for spell mistake.","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"830f676666603f80171d6b6ee642607d4502bd15","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        tenant_to_check \u003d None"},{"line_number":141,"context_line":"        SELF_SHARING_NET_RBAC_ERROR \u003d _(\u0027Not valid to set the target tenant \u0027"},{"line_number":142,"context_line":"                                        \u0027to the network owner\u0027)"},{"line_number":143,"context_line":"        self_sharing \u003d policy[\u0027target_tenant\u0027] \u003d\u003d net[\u0027tenant_id\u0027]"},{"line_number":144,"context_line":"        if event \u003d\u003d events.BEFORE_CREATE:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_d4c78f62","line":141,"updated":"2016-01-27 04:13:36.000000000","message":"use lowercase if this is just a local variable","commit_id":"aee915918efaeec272a7a16249b1284a38c07b1b"},{"author":{"_account_id":6876,"name":"stephen-ma","email":"stephenbma43@gmail.com","username":"stephen-ma"},"change_message_id":"ced6f8ffa4225b19ace9e3801896a4d6acc49068","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        tenant_to_check \u003d None"},{"line_number":141,"context_line":"        SELF_SHARING_NET_RBAC_ERROR \u003d _(\u0027Not valid to set the target tenant \u0027"},{"line_number":142,"context_line":"                                        \u0027to the network owner\u0027)"},{"line_number":143,"context_line":"        self_sharing \u003d policy[\u0027target_tenant\u0027] \u003d\u003d net[\u0027tenant_id\u0027]"},{"line_number":144,"context_line":"        if event \u003d\u003d events.BEFORE_CREATE:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_f9a3bf9c","line":141,"in_reply_to":"9a68dd71_d4c78f62","updated":"2016-01-27 21:01:41.000000000","message":"Done","commit_id":"aee915918efaeec272a7a16249b1284a38c07b1b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"07070fc23fdc1bb2ffb55251c52a5097bbc52019","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                raise exc.InvalidInput(error_message\u003dmsg)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        tenant_to_check \u003d None"},{"line_number":145,"context_line":"        self_sharing \u003d policy[\u0027target_tenant\u0027] \u003d\u003d net[\u0027tenant_id\u0027]"},{"line_number":146,"context_line":"        if event \u003d\u003d events.BEFORE_UPDATE:"},{"line_number":147,"context_line":"            new_tenant \u003d kwargs[\u0027policy_update\u0027][\u0027target_tenant\u0027]"},{"line_number":148,"context_line":"            if policy[\u0027target_tenant\u0027] !\u003d new_tenant and not self_sharing:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad45d7e_82fe4736","line":145,"updated":"2016-08-09 13:56:32.000000000","message":"if not self_sharing:\n    return","commit_id":"8a1f37773ad8449ee7aee25b460ed685f266b708"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"efb4cc803de5ce3457c3bdec6d7255dc2139e8cb","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                raise exc.InvalidInput(error_message\u003dmsg)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        tenant_to_check \u003d None"},{"line_number":145,"context_line":"        self_sharing \u003d policy[\u0027target_tenant\u0027] \u003d\u003d net[\u0027tenant_id\u0027]"},{"line_number":146,"context_line":"        if event \u003d\u003d events.BEFORE_UPDATE:"},{"line_number":147,"context_line":"            new_tenant \u003d kwargs[\u0027policy_update\u0027][\u0027target_tenant\u0027]"},{"line_number":148,"context_line":"            if policy[\u0027target_tenant\u0027] !\u003d new_tenant and not self_sharing:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_ecfac2ba","line":145,"in_reply_to":"9ad45d7e_82fe4736","updated":"2017-04-12 21:11:53.000000000","message":"Done","commit_id":"8a1f37773ad8449ee7aee25b460ed685f266b708"}],"neutron/db/rbac_db_mixin.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"86bec98cdf39ae36c295e8dc9000e1ba29186529","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                            context\u003dcontext, policy\u003dentry,"},{"line_number":66,"context_line":"                            object_type\u003dobject_type, policy_update\u003dpol)"},{"line_number":67,"context_line":"        except c_exc.CallbackFailure as ex:"},{"line_number":68,"context_line":"            invalid_input_errs \u003d [err for err in ex.errors"},{"line_number":69,"context_line":"                                  if isinstance(err.error, n_exc.InvalidInput)]"},{"line_number":70,"context_line":"            if invalid_input_errs:"},{"line_number":71,"context_line":"                raise n_exc.InvalidInput(error_message\u003dinvalid_input_errs[0])"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_ebc1a681","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":30},"updated":"2016-01-19 09:55:00.000000000","message":"this may need some sort of unit test handling.","commit_id":"b2db735519291c92cc9a346599c4551624795401"},{"author":{"_account_id":6876,"name":"stephen-ma","email":"stephenbma43@gmail.com","username":"stephen-ma"},"change_message_id":"07ce365a87f8ecf81e12e1276aa8e861c0df21f9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                            context\u003dcontext, policy\u003dentry,"},{"line_number":66,"context_line":"                            object_type\u003dobject_type, policy_update\u003dpol)"},{"line_number":67,"context_line":"        except c_exc.CallbackFailure as ex:"},{"line_number":68,"context_line":"            invalid_input_errs \u003d [err for err in ex.errors"},{"line_number":69,"context_line":"                                  if isinstance(err.error, n_exc.InvalidInput)]"},{"line_number":70,"context_line":"            if invalid_input_errs:"},{"line_number":71,"context_line":"                raise n_exc.InvalidInput(error_message\u003dinvalid_input_errs[0])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_2b0ea53b","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":30},"in_reply_to":"ba63e191_ebc1a681","updated":"2016-01-21 21:02:15.000000000","message":"This is tested by the api test case test_policy_update_target_with_self() in test_shared_network_extension.py.  Are unit test cases still required to test this routine?","commit_id":"b2db735519291c92cc9a346599c4551624795401"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"c54d8731a4e72278b2cd176b133b1b0790e55d59","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                            context\u003dcontext, policy\u003dentry,"},{"line_number":66,"context_line":"                            object_type\u003dobject_type, policy_update\u003dpol)"},{"line_number":67,"context_line":"        except c_exc.CallbackFailure as ex:"},{"line_number":68,"context_line":"            invalid_input_errs \u003d [err for err in ex.errors"},{"line_number":69,"context_line":"                                  if isinstance(err.error, n_exc.InvalidInput)]"},{"line_number":70,"context_line":"            if invalid_input_errs:"},{"line_number":71,"context_line":"                raise n_exc.InvalidInput(error_message\u003dinvalid_input_errs[0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_8ed3bbd4","line":68,"updated":"2016-01-25 05:14:25.000000000","message":"Do you plan to make it be consistent with line 43?","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"},{"author":{"_account_id":6876,"name":"stephen-ma","email":"stephenbma43@gmail.com","username":"stephen-ma"},"change_message_id":"f28d548d8f647857dbbb9991de192efa6151eebd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                            context\u003dcontext, policy\u003dentry,"},{"line_number":66,"context_line":"                            object_type\u003dobject_type, policy_update\u003dpol)"},{"line_number":67,"context_line":"        except c_exc.CallbackFailure as ex:"},{"line_number":68,"context_line":"            invalid_input_errs \u003d [err for err in ex.errors"},{"line_number":69,"context_line":"                                  if isinstance(err.error, n_exc.InvalidInput)]"},{"line_number":70,"context_line":"            if invalid_input_errs:"},{"line_number":71,"context_line":"                raise n_exc.InvalidInput(error_message\u003dinvalid_input_errs[0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_76b2ab4d","line":68,"in_reply_to":"9a68dd71_8ed3bbd4","updated":"2016-01-26 00:12:17.000000000","message":"I am keeping it as is.  \n\nWhen it is create, any error found during the validation must be caused by invalid input data.\n\nWhen updating an error, two possible errors:\n1. if the request is to change the target tenant to the network owner, then it is an invalid request.  OR\n2. It is RbacPolicyInUse Error when the check finds the current target tenant still has ports on the network.","commit_id":"e344e612fa0277d6c416653547e0258d2ff825be"}]}
