)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor security group rpc call"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Refactor rpc call of \u0027security_group_rules_for_devices\u0027 to enhance the"},{"line_number":10,"context_line":"security group"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If19be8579ca734a899cdd673c919eee8165aaa0e"},{"line_number":13,"context_line":"Supports-blueprint: security-group-rules-for-devices-rpc-call-refactor"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_c6fe60af","line":10,"updated":"2014-08-06 12:28:08.000000000","message":"please write\n\nblueprint security-group-rules-for-devices-rpc-call-refactor\n\n(Supports-blueprint: is unsupported AFAIK).\n\nAlso, can you change the topic branch to \"bp/security-group-rules-for-devices-rpc-call-refactor\" ?","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor security group rpc call"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Refactor rpc call of \u0027security_group_rules_for_devices\u0027 to enhance the"},{"line_number":10,"context_line":"security group"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If19be8579ca734a899cdd673c919eee8165aaa0e"},{"line_number":13,"context_line":"Supports-blueprint: security-group-rules-for-devices-rpc-call-refactor"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_15895825","line":10,"in_reply_to":"baada198_c6fe60af","updated":"2014-08-06 13:13:39.000000000","message":"I got it, I will mofiy as soon as possilbe","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"security group"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If19be8579ca734a899cdd673c919eee8165aaa0e"},{"line_number":13,"context_line":"blueprint security-group-rules-for-devices-rpc-call-refactor"},{"line_number":14,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_323c5d30","line":13,"updated":"2014-08-08 13:25:24.000000000","message":"Partially-implements: blueprint security-group-rules-for-devices-rpc-call-refactor","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":10,"context_line":"security group"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If19be8579ca734a899cdd673c919eee8165aaa0e"},{"line_number":13,"context_line":"blueprint security-group-rules-for-devices-rpc-call-refactor"},{"line_number":14,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_e7ea10a0","line":13,"in_reply_to":"baada198_323c5d30","updated":"2014-08-09 03:57:27.000000000","message":"thanks for your review, I got it!","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"}],"etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d False"}],"source_content_type":"text/x-properties","patch_set":2,"id":"baada198_06285835","line":79,"updated":"2014-08-06 12:28:08.000000000","message":"Default to True","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d False"}],"source_content_type":"text/x-properties","patch_set":2,"id":"baada198_e01264fc","line":79,"in_reply_to":"baada198_06285835","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1002390f1b5afe2b4aa8bf5df26332712d9b10fd","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":6,"id":"baada198_5862b93d","line":79,"updated":"2014-08-09 09:19:56.000000000","message":"You should probably give a description for the switch.\n\nAnother question: why do we even store that section in plugin specific files instead of neutron.conf? It seems to be present in other plugins.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b5ffbede1d730639d5d240c707284761c6c5e852","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":6,"id":"baada198_0bd53bb6","line":79,"in_reply_to":"baada198_5862b93d","updated":"2014-08-11 07:01:22.000000000","message":"Do you mean, moving it to neutron.conf so it\u0027d be accessible from all plugins directly?","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8282,"name":"Dong Liu","email":"willowd878@gmail.com","username":"liudong"},"change_message_id":"6af9dee56811a370d8af28cd05b61453e7f39bcc","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":7,"id":"baada198_7c9843cc","line":79,"updated":"2014-08-11 02:26:57.000000000","message":"A description may be needed here.","commit_id":"2e4d3d82c8a80139549fb02fa5e12c8dfdf28d6c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2c998299292a12fd06e295356546423d0ace8c49","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_eb73a7e5","line":79,"updated":"2014-08-11 07:10:15.000000000","message":"Please, description. for example (expect suggestions from others):\n\n# Controls whether neutron security group uses the latest RPC methods, that \n# optimize for performance and reduce the message size. This is recommended \n# in general, and specially for high density clouds.\n\n\nWe could keep using this setting if for example in Kilo-\u003eH we had other RPC optimizations, or otherwise, remove the setting along with the old RPC code.\n\n\nAnd Ihar asked, if we may move it to neutron.conf to have this available to all plugins:\nWhat do you think about this?","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_bad566e7","line":79,"in_reply_to":"baada198_eb73a7e5","updated":"2014-08-11 15:04:44.000000000","message":"thanks for your description","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"230634d6434d8c6a006397259dcc76c86e0dde9c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":80,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":81,"context_line":"# in general, and specially for high density clouds."},{"line_number":82,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":17,"id":"1abeadc6_c7aaf784","line":82,"updated":"2014-08-25 15:55:54.000000000","message":"I prefer let agent check server side capabilities.","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a732c96fc9e9a69c8171bf3a24cd8435085991b2","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":80,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":81,"context_line":"# in general, and specially for high density clouds."},{"line_number":82,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":17,"id":"1abeadc6_f2623315","line":82,"in_reply_to":"1abeadc6_c7aaf784","updated":"2014-08-28 09:16:31.000000000","message":"Actually, the reason of the config, is letting the admin roll back to the old RPC fast if they found a problem with the new one, until fixed.","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":80,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":81,"context_line":"# in general, and specially for high density clouds."},{"line_number":82,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_784b92b0","line":79,"updated":"2014-09-01 14:34:15.000000000","message":"nit: consider blank line to sepatate two options","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":80,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":81,"context_line":"# in general, and specially for high density clouds."},{"line_number":82,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_7e09a1dc","line":79,"in_reply_to":"fa98f980_784b92b0","updated":"2014-09-01 23:02:46.000000000","message":"+1","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":80,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":81,"context_line":"# in general, and specially for high density clouds."},{"line_number":82,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_a7cbf5a3","line":79,"in_reply_to":"fa98f980_784b92b0","updated":"2014-09-02 02:02:38.000000000","message":"thanks for your review!","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":77,"context_line":"# It should be false when you use nova security group."},{"line_number":78,"context_line":"# enable_security_group \u003d True"},{"line_number":79,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":80,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":81,"context_line":"# in general, and specially for high density clouds."},{"line_number":82,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_c7ce39b4","line":79,"in_reply_to":"fa98f980_7e09a1dc","updated":"2014-09-02 02:02:38.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"}],"etc/neutron/plugins/ml2/ml2_conf.ini":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2c998299292a12fd06e295356546423d0ace8c49","unresolved":false,"context_lines":[{"line_number":60,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":61,"context_line":"# It should be false when you use nova security group."},{"line_number":62,"context_line":"# enable_security_group \u003d True"},{"line_number":63,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_0b71bbdd","line":63,"updated":"2014-08-11 07:10:15.000000000","message":"Please, description.\n\nAnd Ihar asked, if we may move it to neutron.conf to have this available to all plugins:\nWhat do you think about this?","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f60b4fdcfee88865935f68a0182c6bf7129d42ee","unresolved":false,"context_lines":[{"line_number":60,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":61,"context_line":"# It should be false when you use nova security group."},{"line_number":62,"context_line":"# enable_security_group \u003d True"},{"line_number":63,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_10af1c9e","line":63,"in_reply_to":"baada198_0b71bbdd","updated":"2014-08-11 12:33:37.000000000","message":"This is true for this parameter as well as other parameters.\n\nAlso, there are plugins (even open source ones) which do not do security groups in this way.\n\nWhile moving this to neutron.conf apparently makes more sense it will probably result in even more confusion as the security group section will be split across neutron.conf and the plugin\u0027s ini file.\n\nWe had a work item to unify the configuration files. This unfortunately has not been acted upon during this release cycle.","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":60,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":61,"context_line":"# It should be false when you use nova security group."},{"line_number":62,"context_line":"# enable_security_group \u003d True"},{"line_number":63,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_3a079671","line":63,"in_reply_to":"baada198_10af1c9e","updated":"2014-08-11 15:04:44.000000000","message":"I agree that keep this in evry plugin.ini","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":61,"context_line":"# It should be false when you use nova security group."},{"line_number":62,"context_line":"# enable_security_group \u003d True"},{"line_number":63,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":64,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":65,"context_line":"# in general, and specially for high density clouds."},{"line_number":66,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_f8d6a2c4","line":63,"updated":"2014-09-01 14:34:15.000000000","message":"ditto","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":60,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":61,"context_line":"# It should be false when you use nova security group."},{"line_number":62,"context_line":"# enable_security_group \u003d True"},{"line_number":63,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":64,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":65,"context_line":"# in general, and specially for high density clouds."},{"line_number":66,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_e7f97dc9","line":63,"in_reply_to":"fa98f980_f8d6a2c4","updated":"2014-09-02 02:02:38.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":64,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":65,"context_line":"# in general, and specially for high density clouds."},{"line_number":66,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_c6172dec","line":66,"updated":"2014-09-01 18:24:33.000000000","message":"(Low priority) agent-based security group implementation is supported by various plugins other than ML2/OVS/linuxbridge. Sample configs of these plugins also need to be updated.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d2a522ccaa15e45f52461dd580ad1783efa70d61","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":64,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":65,"context_line":"# in general, and specially for high density clouds."},{"line_number":66,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_5c8afebf","line":66,"in_reply_to":"fa98f980_271b851c","updated":"2014-09-02 18:48:58.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# Controls whether neutron security group uses the latest RPC methods, that"},{"line_number":64,"context_line":"# reduce the message size and optimize performance. This is recommended"},{"line_number":65,"context_line":"# in general, and specially for high density clouds."},{"line_number":66,"context_line":"# enable_enhanced_rpc \u003d True"}],"source_content_type":"text/x-properties","patch_set":30,"id":"fa98f980_271b851c","line":66,"in_reply_to":"fa98f980_c6172dec","updated":"2014-09-02 02:02:38.000000000","message":"ok","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"}],"etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":157,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":158,"context_line":"# It should be false when you use nova security group."},{"line_number":159,"context_line":"# enable_security_group \u003d True"},{"line_number":160,"context_line":"# enable_enhanced_rpc \u003d False"},{"line_number":161,"context_line":"#-----------------------------------------------------------------------------"},{"line_number":162,"context_line":"# Sample Configurations."},{"line_number":163,"context_line":"#-----------------------------------------------------------------------------"}],"source_content_type":"text/x-properties","patch_set":2,"id":"baada198_262d5c46","line":160,"updated":"2014-08-06 12:28:08.000000000","message":"Default to True","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":157,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":158,"context_line":"# It should be false when you use nova security group."},{"line_number":159,"context_line":"# enable_security_group \u003d True"},{"line_number":160,"context_line":"# enable_enhanced_rpc \u003d False"},{"line_number":161,"context_line":"#-----------------------------------------------------------------------------"},{"line_number":162,"context_line":"# Sample Configurations."},{"line_number":163,"context_line":"#-----------------------------------------------------------------------------"}],"source_content_type":"text/x-properties","patch_set":2,"id":"baada198_00cf588c","line":160,"in_reply_to":"baada198_262d5c46","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2c998299292a12fd06e295356546423d0ace8c49","unresolved":false,"context_lines":[{"line_number":157,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":158,"context_line":"# It should be false when you use nova security group."},{"line_number":159,"context_line":"# enable_security_group \u003d True"},{"line_number":160,"context_line":"# enable_enhanced_rpc \u003d True"},{"line_number":161,"context_line":"#-----------------------------------------------------------------------------"},{"line_number":162,"context_line":"# Sample Configurations."},{"line_number":163,"context_line":"#-----------------------------------------------------------------------------"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_2b7affba","line":160,"updated":"2014-08-11 07:10:15.000000000","message":"Please, description.\n\nAnd Ihar asked, if we may move it to neutron.conf to have this available to all plugins:\nWhat do you think about this?","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":157,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":158,"context_line":"# It should be false when you use nova security group."},{"line_number":159,"context_line":"# enable_security_group \u003d True"},{"line_number":160,"context_line":"# enable_enhanced_rpc \u003d True"},{"line_number":161,"context_line":"#-----------------------------------------------------------------------------"},{"line_number":162,"context_line":"# Sample Configurations."},{"line_number":163,"context_line":"#-----------------------------------------------------------------------------"}],"source_content_type":"text/x-properties","patch_set":9,"id":"baada198_ba1ac6c4","line":160,"in_reply_to":"baada198_2b7affba","updated":"2014-08-11 15:04:44.000000000","message":"Done","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"}],"neutron/agent/linux/iptables_firewall.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        self.root_helper \u003d cfg.CONF.AGENT.root_helper"},{"line_number":45,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":46,"context_line":"            root_helper \u003d self.root_helper,"},{"line_number":47,"context_line":"            use_ipv6\u003dTrue)"},{"line_number":48,"context_line":"        # list of port which has security group"},{"line_number":49,"context_line":"        self.filtered_ports \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c61580e7","line":46,"updated":"2014-08-06 12:28:08.000000000","message":"I believe this change is unrelated to this specific patch, may be we should do it in a separate one.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        self.root_helper \u003d cfg.CONF.AGENT.root_helper"},{"line_number":45,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":46,"context_line":"            root_helper \u003d self.root_helper,"},{"line_number":47,"context_line":"            use_ipv6\u003dTrue)"},{"line_number":48,"context_line":"        # list of port which has security group"},{"line_number":49,"context_line":"        self.filtered_ports \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_35081c80","line":46,"in_reply_to":"baada198_c61580e7","updated":"2014-08-06 13:13:39.000000000","message":"yes, this can be moved to my another patch","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def ports(self):"},{"line_number":61,"context_line":"        return self.filtered_ports"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def updata_security_group_rules(self, sg_id, sg_rules):"},{"line_number":64,"context_line":"        LOG.debug(_(\"update security group (%s) rules\"), sg_id)"},{"line_number":65,"context_line":"        self.security_groups[sg_id] \u003d sg_rules"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_26d47c1e","line":63,"updated":"2014-08-06 12:28:08.000000000","message":"update_","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def ports(self):"},{"line_number":61,"context_line":"        return self.filtered_ports"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def updata_security_group_rules(self, sg_id, sg_rules):"},{"line_number":64,"context_line":"        LOG.debug(_(\"update security group (%s) rules\"), sg_id)"},{"line_number":65,"context_line":"        self.security_groups[sg_id] \u003d sg_rules"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_7521b4fc","line":63,"in_reply_to":"baada198_26d47c1e","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        LOG.debug(_(\"update security group (%s) rules\"), sg_id)"},{"line_number":65,"context_line":"        self.security_groups[sg_id] \u003d sg_rules"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def updata_security_group_members(self, sg_id, sg_members):"},{"line_number":68,"context_line":"        LOG.debug(_(\"update security group (%s) members\"), sg_id)"},{"line_number":69,"context_line":"        self.sg_members[sg_id] \u003d sg_members"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_46d97055","line":67,"updated":"2014-08-06 12:28:08.000000000","message":"update_","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        LOG.debug(_(\"update security group (%s) rules\"), sg_id)"},{"line_number":65,"context_line":"        self.security_groups[sg_id] \u003d sg_rules"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def updata_security_group_members(self, sg_id, sg_members):"},{"line_number":68,"context_line":"        LOG.debug(_(\"update security group (%s) members\"), sg_id)"},{"line_number":69,"context_line":"        self.sg_members[sg_id] \u003d sg_members"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_951e48bb","line":67,"in_reply_to":"baada198_46d97055","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        sg_ids \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":270,"context_line":"        port_rules \u003d []"},{"line_number":271,"context_line":"        for sg_id in sg_ids:"},{"line_number":272,"context_line":"            if sg_id not in self.security_groups.keys():"},{"line_number":273,"context_line":"                continue"},{"line_number":274,"context_line":"            rules \u003d self.security_groups[sg_id]"},{"line_number":275,"context_line":"            for rule in rules:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_46b090fd","line":272,"updated":"2014-08-06 12:28:08.000000000","message":"you can remove the .keys() part, and it will be faster because it won\u0027t need to expand the list of keys and just use the dictionary hash.\n\n\u003e\u003e\u003e x \u003d {\u0027a\u0027:1,\u0027b\u0027:2}\n\n\u003e\u003e\u003e \u0027a\u0027 in x\n\nTrue\n\n\u003e\u003e\u003e \u0027b\u0027 in x\n\nTrue\n\n\u003e\u003e\u003e \u0027c\u0027 in x\n\nFalse","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        sg_ids \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":270,"context_line":"        port_rules \u003d []"},{"line_number":271,"context_line":"        for sg_id in sg_ids:"},{"line_number":272,"context_line":"            if sg_id not in self.security_groups.keys():"},{"line_number":273,"context_line":"                continue"},{"line_number":274,"context_line":"            rules \u003d self.security_groups[sg_id]"},{"line_number":275,"context_line":"            for rule in rules:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_754ff4bf","line":272,"in_reply_to":"baada198_46b090fd","updated":"2014-08-06 13:13:39.000000000","message":"yes, I agree","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            rules \u003d self.security_groups[sg_id]"},{"line_number":275,"context_line":"            for rule in rules:"},{"line_number":276,"context_line":"                if rule[\u0027direction\u0027] \u003d\u003d direction:"},{"line_number":277,"context_line":"                    remote_group_id \u003d rule.get(\u0027remote_group_id\u0027)"},{"line_number":278,"context_line":"                    ethertype \u003d rule[\u0027ethertype\u0027]"},{"line_number":279,"context_line":"                    if not remote_group_id:"},{"line_number":280,"context_line":"                        port_rules.append(rule)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_467ed01c","line":277,"updated":"2014-08-06 12:28:08.000000000","message":"sometimes you use .get and sometimes you just use [\u0027...\u0027],\n\nI believe [\u0027..\u0027] is ok enough.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"15b07f101bcb5cccb850521a840a2f6e110c87b9","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            rules \u003d self.security_groups[sg_id]"},{"line_number":275,"context_line":"            for rule in rules:"},{"line_number":276,"context_line":"                if rule[\u0027direction\u0027] \u003d\u003d direction:"},{"line_number":277,"context_line":"                    remote_group_id \u003d rule.get(\u0027remote_group_id\u0027)"},{"line_number":278,"context_line":"                    ethertype \u003d rule[\u0027ethertype\u0027]"},{"line_number":279,"context_line":"                    if not remote_group_id:"},{"line_number":280,"context_line":"                        port_rules.append(rule)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_6cb55818","line":277,"in_reply_to":"baada198_467ed01c","updated":"2014-08-07 02:40:20.000000000","message":"because the \u0027remote_group_id\u0027 may be not in rule,so I use .get","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            rules \u003d self.security_groups[sg_id]"},{"line_number":275,"context_line":"            for rule in rules:"},{"line_number":276,"context_line":"                if rule[\u0027direction\u0027] \u003d\u003d direction:"},{"line_number":277,"context_line":"                    remote_group_id \u003d rule.get(\u0027remote_group_id\u0027)"},{"line_number":278,"context_line":"                    ethertype \u003d rule[\u0027ethertype\u0027]"},{"line_number":279,"context_line":"                    if not remote_group_id:"},{"line_number":280,"context_line":"                        port_rules.append(rule)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_1596b8ef","line":277,"in_reply_to":"baada198_467ed01c","updated":"2014-08-06 13:13:39.000000000","message":"ok, good suggestion","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        pre_cur_group_ids \u003d self.pre_security_groups.keys()"},{"line_number":415,"context_line":"        cur_group_ids \u003d set()"},{"line_number":416,"context_line":"        for port in self.filtered_ports.values():"},{"line_number":417,"context_line":"            soure_groups \u003d port.get(\u0027security_group_source_groups\u0027, [])"},{"line_number":418,"context_line":"            for group in soure_groups:"},{"line_number":419,"context_line":"                remote_group_ids.add(group)"},{"line_number":420,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_005bdf86","line":417,"updated":"2014-08-06 12:28:08.000000000","message":"soure-\u003esource","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._defer_apply \u003d False"},{"line_number":51,"context_line":"        self._pre_defer_filtered_ports \u003d None"},{"line_number":52,"context_line":"        # list of security group rules information for ports"},{"line_number":53,"context_line":"        # resideced in this hosts"},{"line_number":54,"context_line":"        self.sg_rules \u003d {}"},{"line_number":55,"context_line":"        self.pre_sg_rules \u003d None"},{"line_number":56,"context_line":"        # list of security group member ips for ports"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4f9ddc6b","line":53,"updated":"2014-08-07 10:39:03.000000000","message":"I\u0027m not sure what you mean by \"resideced\"","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._defer_apply \u003d False"},{"line_number":51,"context_line":"        self._pre_defer_filtered_ports \u003d None"},{"line_number":52,"context_line":"        # list of security group rules information for ports"},{"line_number":53,"context_line":"        # resideced in this hosts"},{"line_number":54,"context_line":"        self.sg_rules \u003d {}"},{"line_number":55,"context_line":"        self.pre_sg_rules \u003d None"},{"line_number":56,"context_line":"        # list of security group member ips for ports"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_a84015a3","line":53,"in_reply_to":"baada198_4f9ddc6b","updated":"2014-08-08 02:02:28.000000000","message":"I am sorry that confuse you, I mean the ports are used by the VMs in this host, do you think it is inappropriate to express this?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"2240d5a9310ff5651217e9481e56923b9a13caa3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._defer_apply \u003d False"},{"line_number":51,"context_line":"        self._pre_defer_filtered_ports \u003d None"},{"line_number":52,"context_line":"        # list of security group rules information for ports"},{"line_number":53,"context_line":"        # resideced in this hosts"},{"line_number":54,"context_line":"        self.sg_rules \u003d {}"},{"line_number":55,"context_line":"        self.pre_sg_rules \u003d None"},{"line_number":56,"context_line":"        # list of security group member ips for ports"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_708f7876","line":53,"in_reply_to":"baada198_a84015a3","updated":"2014-08-11 10:57:17.000000000","message":"Adding a comment is ok. The term \"resideced\" is unknown to me.\n\nPerhaps you just mean ports \"plugged\" on this host?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        chain_name \u003d self._port_chain_name(port, direction)"},{"line_number":297,"context_line":"        # select rules for current direction"},{"line_number":298,"context_line":"        security_group_rules \u003d self._select_sgr_by_direction(port, direction)"},{"line_number":299,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":300,"context_line":"            security_group_rules +\u003d self._select_sgr_by_sg_id(port, direction)"},{"line_number":301,"context_line":"        # split groups by ip version"},{"line_number":302,"context_line":"        # for ipv4, iptables command is used"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4f015cb4","line":299,"updated":"2014-08-07 10:39:03.000000000","message":"honestly I don\u0027t think we need this configuration option.\nWe have enough tests in place to ensure this is covered appropriately.\n\nWas this asked by some other reviewer?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        chain_name \u003d self._port_chain_name(port, direction)"},{"line_number":297,"context_line":"        # select rules for current direction"},{"line_number":298,"context_line":"        security_group_rules \u003d self._select_sgr_by_direction(port, direction)"},{"line_number":299,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":300,"context_line":"            security_group_rules +\u003d self._select_sgr_by_sg_id(port, direction)"},{"line_number":301,"context_line":"        # split groups by ip version"},{"line_number":302,"context_line":"        # for ipv4, iptables command is used"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_68643d4d","line":299,"in_reply_to":"baada198_4f015cb4","updated":"2014-08-08 02:02:28.000000000","message":"I also want to get feedback from other reviewer, I suggest keep option in Juno, we can remove the old codes in next release","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"247b274b7e7e4e41b837810225b81f830a513113","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        chain_name \u003d self._port_chain_name(port, direction)"},{"line_number":297,"context_line":"        # select rules for current direction"},{"line_number":298,"context_line":"        security_group_rules \u003d self._select_sgr_by_direction(port, direction)"},{"line_number":299,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":300,"context_line":"            security_group_rules +\u003d self._select_sgr_by_sg_id(port, direction)"},{"line_number":301,"context_line":"        # split groups by ip version"},{"line_number":302,"context_line":"        # for ipv4, iptables command is used"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_fab3a806","line":299,"in_reply_to":"baada198_68643d4d","updated":"2014-08-08 08:26:50.000000000","message":"I asked why is it done. Still have not an strong opinion.\n\nIt wasn\u0027t the original plan, but It certainly would allow for old rpc call to be tested (and compared) until we remove those. Specially would help for functional testing.\n\nOn the other hand, it forces into to maintain both \"old and new\" rpc client sides for Juno.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b219491f8b02061549849464b26424d02bf1e0ae","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":45,"context_line":"            root_helper\u003dcfg.CONF.AGENT.root_helper,"},{"line_number":46,"context_line":"            use_ipv6\u003dTrue)"},{"line_number":47,"context_line":"        # list of port which has security group"},{"line_number":48,"context_line":"        self.filtered_ports \u003d {}"},{"line_number":49,"context_line":"        self._add_fallback_chain_v4v6()"},{"line_number":50,"context_line":"        self._defer_apply \u003d False"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5a2bb494","line":47,"updated":"2014-08-08 08:33:43.000000000","message":"not sure if \"list of ports which have a security group\" is more correct.\n\nI\u0027m not an english native.\n\n(I\u0027m using https://www.languagetool.org/ to check lately)","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b219491f8b02061549849464b26424d02bf1e0ae","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._defer_apply \u003d False"},{"line_number":51,"context_line":"        self._pre_defer_filtered_ports \u003d None"},{"line_number":52,"context_line":"        # list of security group rules information for ports"},{"line_number":53,"context_line":"        # resideced in this hosts"},{"line_number":54,"context_line":"        self.sg_rules \u003d {}"},{"line_number":55,"context_line":"        self.pre_sg_rules \u003d None"},{"line_number":56,"context_line":"        # list of security group member ips for ports"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7a26b8cc","line":53,"updated":"2014-08-08 08:33:43.000000000","message":"to residece is not a verb :)\n\nMay be \"list of security group rules information for ports wired to this host\"?\n\nI still don\u0027t know what do you mean in your original phrase exactly.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._defer_apply \u003d False"},{"line_number":51,"context_line":"        self._pre_defer_filtered_ports \u003d None"},{"line_number":52,"context_line":"        # list of security group rules information for ports"},{"line_number":53,"context_line":"        # resideced in this hosts"},{"line_number":54,"context_line":"        self.sg_rules \u003d {}"},{"line_number":55,"context_line":"        self.pre_sg_rules \u003d None"},{"line_number":56,"context_line":"        # list of security group member ips for ports"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_07e8e4a5","line":53,"in_reply_to":"baada198_326a9d1b","updated":"2014-08-09 03:57:27.000000000","message":"got it","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._defer_apply \u003d False"},{"line_number":51,"context_line":"        self._pre_defer_filtered_ports \u003d None"},{"line_number":52,"context_line":"        # list of security group rules information for ports"},{"line_number":53,"context_line":"        # resideced in this hosts"},{"line_number":54,"context_line":"        self.sg_rules \u003d {}"},{"line_number":55,"context_line":"        self.pre_sg_rules \u003d None"},{"line_number":56,"context_line":"        # list of security group member ips for ports"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_326a9d1b","line":53,"in_reply_to":"baada198_7a26b8cc","updated":"2014-08-08 13:25:24.000000000","message":"Maybe this: \"List of security group rules for ports residing on this host.\"","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return self.filtered_ports"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def update_security_group_rules(self, sg_id, sg_rules):"},{"line_number":66,"context_line":"        LOG.debug(_(\"update security group (%s) rules\"), sg_id)"},{"line_number":67,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_f298251c","line":66,"updated":"2014-08-08 13:25:24.000000000","message":"Debug logs don\u0027t require translation.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return self.filtered_ports"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def update_security_group_rules(self, sg_id, sg_rules):"},{"line_number":66,"context_line":"        LOG.debug(_(\"update security group (%s) rules\"), sg_id)"},{"line_number":67,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_e74130a8","line":66,"in_reply_to":"baada198_f298251c","updated":"2014-08-09 03:57:27.000000000","message":"ok","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"},{"line_number":70,"context_line":"        LOG.debug(_(\"update security group (%s) members\"), sg_id)"},{"line_number":71,"context_line":"        self.sg_members[sg_id] \u003d sg_members"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def prepare_port_filter(self, port):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_32861dbb","line":70,"updated":"2014-08-08 13:25:24.000000000","message":"Debug logs don\u0027t require translation.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"},{"line_number":70,"context_line":"        LOG.debug(_(\"update security group (%s) members\"), sg_id)"},{"line_number":71,"context_line":"        self.sg_members[sg_id] \u003d sg_members"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def prepare_port_filter(self, port):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_073f0423","line":70,"in_reply_to":"baada198_32861dbb","updated":"2014-08-09 03:57:27.000000000","message":"Done","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b219491f8b02061549849464b26424d02bf1e0ae","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        chain_name \u003d self._port_chain_name(port, direction)"},{"line_number":296,"context_line":"        # select rules for current direction"},{"line_number":297,"context_line":"        security_group_rules \u003d self._select_sgr_by_direction(port, direction)"},{"line_number":298,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":299,"context_line":"            security_group_rules +\u003d self._select_sgr_by_sg_id(port, direction)"},{"line_number":300,"context_line":"        # split groups by ip version"},{"line_number":301,"context_line":"        # for ipv4, iptables command is used"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_a801eb05","line":298,"updated":"2014-08-08 08:33:43.000000000","message":"see patchset 5 for discussion on this.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            if remove_chain_id in self.sg_members:"},{"line_number":431,"context_line":"                self.sg_members.pop(remove_chain_id, None)"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        #remove unused security group rules"},{"line_number":434,"context_line":"        for remove_group_id in need_removed_security_groups:"},{"line_number":435,"context_line":"            if remove_group_id in self.sg_rules:"},{"line_number":436,"context_line":"                self.sg_rules.pop(remove_group_id, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_d262413c","line":433,"updated":"2014-08-08 13:25:24.000000000","message":"Nit: space before \"remove\"","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            if remove_chain_id in self.sg_members:"},{"line_number":431,"context_line":"                self.sg_members.pop(remove_chain_id, None)"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        #remove unused security group rules"},{"line_number":434,"context_line":"        for remove_group_id in need_removed_security_groups:"},{"line_number":435,"context_line":"            if remove_group_id in self.sg_rules:"},{"line_number":436,"context_line":"                self.sg_rules.pop(remove_group_id, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_c738ac3d","line":433,"in_reply_to":"baada198_d262413c","updated":"2014-08-09 03:57:27.000000000","message":"Done","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f60b4fdcfee88865935f68a0182c6bf7129d42ee","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        continue"},{"line_number":281,"context_line":"                    base_rule \u003d rule"},{"line_number":282,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":283,"context_line":"                        if ip in port.get(\u0027fixed_ips\u0027, []):"},{"line_number":284,"context_line":"                            continue"},{"line_number":285,"context_line":"                        ip_rule \u003d base_rule.copy()"},{"line_number":286,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_d01044ad","line":283,"updated":"2014-08-11 12:33:37.000000000","message":"nit: the above port.get is in 3 nested for loops. It might end up being called quite a number of times - and we can do a (little) optimization by moving it at line 270","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        continue"},{"line_number":281,"context_line":"                    base_rule \u003d rule"},{"line_number":282,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":283,"context_line":"                        if ip in port.get(\u0027fixed_ips\u0027, []):"},{"line_number":284,"context_line":"                            continue"},{"line_number":285,"context_line":"                        ip_rule \u003d base_rule.copy()"},{"line_number":286,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_1a62d23c","line":283,"in_reply_to":"baada198_d01044ad","updated":"2014-08-11 15:04:44.000000000","message":"thanks for your suggestion, I agree with you","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"dc6c171f7a6d0f3e4253ca5923ffa5e87e420e05","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        for sg_id in sg_ids:"},{"line_number":273,"context_line":"            if sg_id not in self.sg_rules:"},{"line_number":274,"context_line":"                continue"},{"line_number":275,"context_line":"            for rule in self.sg_rules[sg_id]:"},{"line_number":276,"context_line":"                if rule[\u0027direction\u0027] \u003d\u003d direction:"},{"line_number":277,"context_line":"                    remote_group_id \u003d rule.get(\u0027remote_group_id\u0027)"},{"line_number":278,"context_line":"                    if not remote_group_id:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_8564dbb9","line":275,"updated":"2014-08-29 00:39:23.000000000","message":"L273-L274 could be removed, and L275 replaced with:\n\nfor rule in self.sg_rules.get(sg_id, [])","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"46ad564a16c9da01538081174520e0f91225a0f4","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        for sg_id in sg_ids:"},{"line_number":273,"context_line":"            if sg_id not in self.sg_rules:"},{"line_number":274,"context_line":"                continue"},{"line_number":275,"context_line":"            for rule in self.sg_rules[sg_id]:"},{"line_number":276,"context_line":"                if rule[\u0027direction\u0027] \u003d\u003d direction:"},{"line_number":277,"context_line":"                    remote_group_id \u003d rule.get(\u0027remote_group_id\u0027)"},{"line_number":278,"context_line":"                    if not remote_group_id:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_fbac4cef","line":275,"in_reply_to":"1abeadc6_8564dbb9","updated":"2014-08-29 00:50:07.000000000","message":"thanks for your review and suggestion","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"dc6c171f7a6d0f3e4253ca5923ffa5e87e420e05","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":284,"context_line":"                        if ip in fixed_ips:"},{"line_number":285,"context_line":"                            continue"},{"line_number":286,"context_line":"                        ip_rule \u003d base_rule.copy()"},{"line_number":287,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"},{"line_number":288,"context_line":"                        ip_rule[direction_ip_prefix] \u003d str("},{"line_number":289,"context_line":"                            netaddr.IPNetwork(ip).cidr)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_c546d37a","line":286,"updated":"2014-08-29 00:39:23.000000000","message":"why not directly copy from \"rule\" and remove L282?","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"46ad564a16c9da01538081174520e0f91225a0f4","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":284,"context_line":"                        if ip in fixed_ips:"},{"line_number":285,"context_line":"                            continue"},{"line_number":286,"context_line":"                        ip_rule \u003d base_rule.copy()"},{"line_number":287,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"},{"line_number":288,"context_line":"                        ip_rule[direction_ip_prefix] \u003d str("},{"line_number":289,"context_line":"                            netaddr.IPNetwork(ip).cidr)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_db96b093","line":286,"in_reply_to":"1abeadc6_c546d37a","updated":"2014-08-29 00:50:07.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"dc6c171f7a6d0f3e4253ca5923ffa5e87e420e05","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                        if ip in fixed_ips:"},{"line_number":285,"context_line":"                            continue"},{"line_number":286,"context_line":"                        ip_rule \u003d base_rule.copy()"},{"line_number":287,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"},{"line_number":288,"context_line":"                        ip_rule[direction_ip_prefix] \u003d str("},{"line_number":289,"context_line":"                            netaddr.IPNetwork(ip).cidr)"},{"line_number":290,"context_line":"                        port_rules.append(ip_rule)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_a56ab7ea","line":287,"updated":"2014-08-29 00:39:23.000000000","message":"no need to compute direction_ip_prefix in each iteration, can be moved in the outside loop","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"46ad564a16c9da01538081174520e0f91225a0f4","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                        if ip in fixed_ips:"},{"line_number":285,"context_line":"                            continue"},{"line_number":286,"context_line":"                        ip_rule \u003d base_rule.copy()"},{"line_number":287,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"},{"line_number":288,"context_line":"                        ip_rule[direction_ip_prefix] \u003d str("},{"line_number":289,"context_line":"                            netaddr.IPNetwork(ip).cidr)"},{"line_number":290,"context_line":"                        port_rules.append(ip_rule)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_7bef5c1e","line":287,"in_reply_to":"1abeadc6_a56ab7ea","updated":"2014-08-29 00:50:07.000000000","message":"agree","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"dc6c171f7a6d0f3e4253ca5923ffa5e87e420e05","unresolved":false,"context_lines":[{"line_number":418,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":419,"context_line":"            for group in groups:"},{"line_number":420,"context_line":"                cur_group_ids.add(group)"},{"line_number":421,"context_line":"        for pre_remote_group_id in self.pre_sg_members:"},{"line_number":422,"context_line":"            if pre_remote_group_id not in remote_group_ids:"},{"line_number":423,"context_line":"                need_removed_ipset_chains.add(pre_remote_group_id)"},{"line_number":424,"context_line":"        for pre_cur_group_id in self.pre_sg_rules:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_d8ceb682","line":421,"updated":"2014-08-29 00:39:23.000000000","message":"you could replace with:\n\nneed_removed_ipset_chains.update([x in self.pre_sg_members if x not in remote_group_ids])","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"46ad564a16c9da01538081174520e0f91225a0f4","unresolved":false,"context_lines":[{"line_number":418,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":419,"context_line":"            for group in groups:"},{"line_number":420,"context_line":"                cur_group_ids.add(group)"},{"line_number":421,"context_line":"        for pre_remote_group_id in self.pre_sg_members:"},{"line_number":422,"context_line":"            if pre_remote_group_id not in remote_group_ids:"},{"line_number":423,"context_line":"                need_removed_ipset_chains.add(pre_remote_group_id)"},{"line_number":424,"context_line":"        for pre_cur_group_id in self.pre_sg_rules:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_fbda8c76","line":421,"in_reply_to":"1abeadc6_d8ceb682","updated":"2014-08-29 00:50:07.000000000","message":"good suggestion","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"dc6c171f7a6d0f3e4253ca5923ffa5e87e420e05","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        for pre_remote_group_id in self.pre_sg_members:"},{"line_number":422,"context_line":"            if pre_remote_group_id not in remote_group_ids:"},{"line_number":423,"context_line":"                need_removed_ipset_chains.add(pre_remote_group_id)"},{"line_number":424,"context_line":"        for pre_cur_group_id in self.pre_sg_rules:"},{"line_number":425,"context_line":"            if pre_cur_group_id not in cur_group_ids:"},{"line_number":426,"context_line":"                need_removed_security_groups.add(pre_cur_group_id)"},{"line_number":427,"context_line":"        # Remove unused remote security group member ips"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_78bcc2bb","line":424,"updated":"2014-08-29 00:39:23.000000000","message":"Same as above:\nneed_removed_security_groups.update([x in self.pre_sg_rules if x not in cur_group_ids])","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"46ad564a16c9da01538081174520e0f91225a0f4","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        for pre_remote_group_id in self.pre_sg_members:"},{"line_number":422,"context_line":"            if pre_remote_group_id not in remote_group_ids:"},{"line_number":423,"context_line":"                need_removed_ipset_chains.add(pre_remote_group_id)"},{"line_number":424,"context_line":"        for pre_cur_group_id in self.pre_sg_rules:"},{"line_number":425,"context_line":"            if pre_cur_group_id not in cur_group_ids:"},{"line_number":426,"context_line":"                need_removed_security_groups.add(pre_cur_group_id)"},{"line_number":427,"context_line":"        # Remove unused remote security group member ips"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_3be1642a","line":424,"in_reply_to":"1abeadc6_78bcc2bb","updated":"2014-08-29 00:50:07.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"dc6c171f7a6d0f3e4253ca5923ffa5e87e420e05","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            if pre_cur_group_id not in cur_group_ids:"},{"line_number":426,"context_line":"                need_removed_security_groups.add(pre_cur_group_id)"},{"line_number":427,"context_line":"        # Remove unused remote security group member ips"},{"line_number":428,"context_line":"        for remove_chain_id in need_removed_ipset_chains:"},{"line_number":429,"context_line":"            if remove_chain_id in self.sg_members:"},{"line_number":430,"context_line":"                self.sg_members.pop(remove_chain_id, None)"},{"line_number":431,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_b8001a67","line":428,"updated":"2014-08-29 00:39:23.000000000","message":"And if you want to:\n\n[self.sg_members.pop(x) for x in need_removed_security_groups if x in self.sg_rules]","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"46ad564a16c9da01538081174520e0f91225a0f4","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            if pre_cur_group_id not in cur_group_ids:"},{"line_number":426,"context_line":"                need_removed_security_groups.add(pre_cur_group_id)"},{"line_number":427,"context_line":"        # Remove unused remote security group member ips"},{"line_number":428,"context_line":"        for remove_chain_id in need_removed_ipset_chains:"},{"line_number":429,"context_line":"            if remove_chain_id in self.sg_members:"},{"line_number":430,"context_line":"                self.sg_members.pop(remove_chain_id, None)"},{"line_number":431,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_5bd1c055","line":428,"in_reply_to":"1abeadc6_b8001a67","updated":"2014-08-29 00:50:07.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        return self.filtered_ports"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_security_group_rules(self, sg_id, sg_rules):"},{"line_number":65,"context_line":"        LOG.debug(\"update security group (%s) rules\", sg_id)"},{"line_number":66,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_7172c07d","line":65,"updated":"2014-09-01 18:24:33.000000000","message":"sg_id is UUID, so I think \"Update rules of security group %s\" is easier to read.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        return self.filtered_ports"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_security_group_rules(self, sg_id, sg_rules):"},{"line_number":65,"context_line":"        LOG.debug(\"update security group (%s) rules\", sg_id)"},{"line_number":66,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c7863913","line":65,"in_reply_to":"fa98f980_7172c07d","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        LOG.debug(\"update security group (%s) rules\", sg_id)"},{"line_number":66,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"},{"line_number":69,"context_line":"        LOG.debug(\"update security group (%s) members\", sg_id)"},{"line_number":70,"context_line":"        self.sg_members[sg_id] \u003d sg_members"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_030be7d6","line":68,"updated":"2014-09-01 18:24:33.000000000","message":"It would be nice if we have docstring to describe argument format.\n\nsg_members seems to have a format of \"{\u0027\u003cethertype\u0027: a list of IP}\".","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.sg_rules[sg_id] \u003d sg_rules"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def update_security_group_members(self, sg_id, sg_members):"},{"line_number":69,"context_line":"        LOG.debug(\"update security group (%s) members\", sg_id)"},{"line_number":70,"context_line":"        self.sg_members[sg_id] \u003d sg_members"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def prepare_port_filter(self, port):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_b16c289e","line":69,"updated":"2014-09-01 18:24:33.000000000","message":"Ditto","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                             icmp6_type]"},{"line_number":267,"context_line":"        return icmpv6_rules"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _select_sgr_by_sg_id(self, port, direction):"},{"line_number":270,"context_line":"        sg_ids \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":271,"context_line":"        port_rules \u003d []"},{"line_number":272,"context_line":"        fixed_ips \u003d port.get(\u0027fixed_ips\u0027, [])"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_1deefb88","line":269,"updated":"2014-09-01 14:34:15.000000000","message":"_select_sg_rules_for_port?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                             icmp6_type]"},{"line_number":267,"context_line":"        return icmpv6_rules"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _select_sgr_by_sg_id(self, port, direction):"},{"line_number":270,"context_line":"        sg_ids \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":271,"context_line":"        port_rules \u003d []"},{"line_number":272,"context_line":"        fixed_ips \u003d port.get(\u0027fixed_ips\u0027, [])"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_872fd1f5","line":269,"in_reply_to":"fa98f980_1deefb88","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                        continue"},{"line_number":280,"context_line":"                    ethertype \u003d rule[\u0027ethertype\u0027]"},{"line_number":281,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":282,"context_line":"                        if ip in fixed_ips:"},{"line_number":283,"context_line":"                            continue"},{"line_number":284,"context_line":"                        ip_rule \u003d rule.copy()"},{"line_number":285,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_6b8d7a7b","line":282,"updated":"2014-09-01 14:34:15.000000000","message":"what is the form of fixed_ips here? Asking just because usually for ports it is [{\u0027subnet_id: xxx, \u0027ip_address\u0027: x.x.x.x}]","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                        continue"},{"line_number":280,"context_line":"                    ethertype \u003d rule[\u0027ethertype\u0027]"},{"line_number":281,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":282,"context_line":"                        if ip in fixed_ips:"},{"line_number":283,"context_line":"                            continue"},{"line_number":284,"context_line":"                        ip_rule \u003d rule.copy()"},{"line_number":285,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_6a2d5446","line":282,"in_reply_to":"fa98f980_6b8d7a7b","updated":"2014-09-02 02:02:38.000000000","message":"in agent side, port[\u0027fixed_ips\u0027]\u003d[ip1,ip2...]","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    def _add_rule_by_security_group(self, port, direction):"},{"line_number":292,"context_line":"        chain_name \u003d self._port_chain_name(port, direction)"},{"line_number":293,"context_line":"        # select rules for current direction"},{"line_number":294,"context_line":"        security_group_rules \u003d self._select_sgr_by_direction(port, direction)"},{"line_number":295,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":296,"context_line":"            security_group_rules +\u003d self._select_sgr_by_sg_id(port, direction)"},{"line_number":297,"context_line":"        # split groups by ip version"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_a3621bd6","line":294,"updated":"2014-09-01 18:24:33.000000000","message":"Just question for my understanding: Why do we need both results (from _select_sgr_by_direction and _select_sgr_by_sg_id)?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    def _add_rule_by_security_group(self, port, direction):"},{"line_number":292,"context_line":"        chain_name \u003d self._port_chain_name(port, direction)"},{"line_number":293,"context_line":"        # select rules for current direction"},{"line_number":294,"context_line":"        security_group_rules \u003d self._select_sgr_by_direction(port, direction)"},{"line_number":295,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":296,"context_line":"            security_group_rules +\u003d self._select_sgr_by_sg_id(port, direction)"},{"line_number":297,"context_line":"        # split groups by ip version"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c771d9e1","line":294,"in_reply_to":"fa98f980_a3621bd6","updated":"2014-09-02 02:02:38.000000000","message":"you can see in securitygroups_rpc_base.py:security_group_info_for_ports:self._apply_provider_rule\nthere are some rules does not belong to any security group, so I put these rules in port[\u0027security_group_rules\u0027]","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        cur_group_ids \u003d set()"},{"line_number":412,"context_line":"        for port in self.filtered_ports.values():"},{"line_number":413,"context_line":"            source_groups \u003d port.get(\u0027security_group_source_groups\u0027, [])"},{"line_number":414,"context_line":"            for group in source_groups:"},{"line_number":415,"context_line":"                remote_group_ids.add(group)"},{"line_number":416,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":417,"context_line":"            for group in groups:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_08831705","line":414,"updated":"2014-09-01 14:34:15.000000000","message":"remote_group_ids.update(source_groups) ?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"c207e9f0b0d63ed63606b0d8f211c3ab28fbf70e","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        cur_group_ids \u003d set()"},{"line_number":412,"context_line":"        for port in self.filtered_ports.values():"},{"line_number":413,"context_line":"            source_groups \u003d port.get(\u0027security_group_source_groups\u0027, [])"},{"line_number":414,"context_line":"            for group in source_groups:"},{"line_number":415,"context_line":"                remote_group_ids.add(group)"},{"line_number":416,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":417,"context_line":"            for group in groups:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_b7aa556e","line":414,"in_reply_to":"fa98f980_08831705","updated":"2014-09-01 19:32:16.000000000","message":"+1","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        cur_group_ids \u003d set()"},{"line_number":412,"context_line":"        for port in self.filtered_ports.values():"},{"line_number":413,"context_line":"            source_groups \u003d port.get(\u0027security_group_source_groups\u0027, [])"},{"line_number":414,"context_line":"            for group in source_groups:"},{"line_number":415,"context_line":"                remote_group_ids.add(group)"},{"line_number":416,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":417,"context_line":"            for group in groups:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_674bcd87","line":414,"in_reply_to":"fa98f980_08831705","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            for group in source_groups:"},{"line_number":415,"context_line":"                remote_group_ids.add(group)"},{"line_number":416,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":417,"context_line":"            for group in groups:"},{"line_number":418,"context_line":"                cur_group_ids.add(group)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        need_removed_ipset_chains.update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_e8097396","line":417,"updated":"2014-09-01 14:34:15.000000000","message":"ditto","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"c207e9f0b0d63ed63606b0d8f211c3ab28fbf70e","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            for group in source_groups:"},{"line_number":415,"context_line":"                remote_group_ids.add(group)"},{"line_number":416,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":417,"context_line":"            for group in groups:"},{"line_number":418,"context_line":"                cur_group_ids.add(group)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        need_removed_ipset_chains.update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_f7bbfdc1","line":417,"in_reply_to":"fa98f980_e8097396","updated":"2014-09-01 19:32:16.000000000","message":"+1","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            for group in source_groups:"},{"line_number":415,"context_line":"                remote_group_ids.add(group)"},{"line_number":416,"context_line":"            groups \u003d port.get(\u0027security_groups\u0027, [])"},{"line_number":417,"context_line":"            for group in groups:"},{"line_number":418,"context_line":"                cur_group_ids.add(group)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        need_removed_ipset_chains.update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c73f19d5","line":417,"in_reply_to":"fa98f980_e8097396","updated":"2014-09-02 02:02:38.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"1e82d4fb42b8094b6cb93ae1274e12ea45658b56","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                    ethertype \u003d rule[\u0027ethertype\u0027]"},{"line_number":281,"context_line":"                    for ip in self.sg_members[remote_group_id][ethertype]:"},{"line_number":282,"context_line":"                        if ip in fixed_ips:"},{"line_number":283,"context_line":"                            continue"},{"line_number":284,"context_line":"                        ip_rule \u003d rule.copy()"},{"line_number":285,"context_line":"                        direction_ip_prefix \u003d DIRECTION_IP_PREFIX[direction]"},{"line_number":286,"context_line":"                        ip_rule[direction_ip_prefix] \u003d str("}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_e5394342","line":283,"updated":"2014-09-02 22:08:29.000000000","message":"nit for follow up: use set logic. Make sg_members[xxx] a set and then just remove fixed_ips from this set before iterationg","commit_id":"a8cb2c874f9bde3da177c6e0705fb9b0a89c8058"}],"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":37,"context_line":"    cfg.StrOpt("},{"line_number":38,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":39,"context_line":"        default\u003dFalse,"},{"line_number":40,"context_line":"        help\u003d_(\u0027Use the new rpc call to enhance security group\u0027))"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_66103401","line":39,"updated":"2014-08-06 12:28:08.000000000","message":"Enable to True by default, so this will be used by default on testing.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt("},{"line_number":38,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":39,"context_line":"        default\u003dFalse,"},{"line_number":40,"context_line":"        help\u003d_(\u0027Use the new rpc call to enhance security group\u0027))"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_460b30d5","line":40,"updated":"2014-08-06 12:28:08.000000000","message":"We didn\u0027t talk about a setting on the spec, but it was more about replacing the old code directly.\n\nAnyway, it could be good to keep both + the setting (defaulted to True) to allow testing on both branches of the code.\n\nI\u0027d like to see more opinions about this.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt("},{"line_number":38,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":39,"context_line":"        default\u003dFalse,"},{"line_number":40,"context_line":"        help\u003d_(\u0027Use the new rpc call to enhance security group\u0027))"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_15195887","line":40,"in_reply_to":"baada198_460b30d5","updated":"2014-08-06 13:13:39.000000000","message":"I agree with you that keep the old code","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                         version\u003dSG_RPC_VERSION,"},{"line_number":88,"context_line":"                         topic\u003dself.topic)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":91,"context_line":"        LOG.debug(_(\"Get security group information \""},{"line_number":92,"context_line":"                    \"for devices via rpc %r\"), devices)"},{"line_number":93,"context_line":"        return self.call(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_acd5cd48","line":90,"updated":"2014-08-06 12:28:08.000000000","message":"The spec defined security_group_rules_for_devices_compact, but I\u0027m not against changing the name, we\u0027d need to update the spec in such case.\n\nWhy do I find the name suitable: We return security group info, (members ips, groups, devices..) instead of plain rules for each device one after another....\n\nWaiting to hear more opinions on this too..","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                         version\u003dSG_RPC_VERSION,"},{"line_number":88,"context_line":"                         topic\u003dself.topic)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":91,"context_line":"        LOG.debug(_(\"Get security group information \""},{"line_number":92,"context_line":"                    \"for devices via rpc %r\"), devices)"},{"line_number":93,"context_line":"        return self.call(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_20753c97","line":90,"in_reply_to":"baada198_acd5cd48","updated":"2014-08-06 13:13:39.000000000","message":"welcome more feedback","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                    security_group_member_ips):"},{"line_number":192,"context_line":"        LOG.debug(_(\"Update security group information\"))"},{"line_number":193,"context_line":"        for sg_id, sg_rule in security_groups.items():"},{"line_number":194,"context_line":"            self.firewall.updata_security_group_rules(sg_id, sg_rule)"},{"line_number":195,"context_line":"        for remote_sg_id, member_ips in security_group_member_ips.items():"},{"line_number":196,"context_line":"            self.firewall.updata_security_group_members("},{"line_number":197,"context_line":"                remote_sg_id, member_ips)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_80fe0f05","line":194,"updated":"2014-08-06 12:28:08.000000000","message":"updata-\u003eupdate","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        for sg_id, sg_rule in security_groups.items():"},{"line_number":194,"context_line":"            self.firewall.updata_security_group_rules(sg_id, sg_rule)"},{"line_number":195,"context_line":"        for remote_sg_id, member_ips in security_group_member_ips.items():"},{"line_number":196,"context_line":"            self.firewall.updata_security_group_members("},{"line_number":197,"context_line":"                remote_sg_id, member_ips)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def security_groups_rule_updated(self, security_groups):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_660af421","line":196,"updated":"2014-08-06 12:28:08.000000000","message":"updata-\u003eupdate","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":90,"context_line":"        LOG.debug(_(\"Get security group information \""},{"line_number":91,"context_line":"                    \"for devices via rpc %r\"), devices)"},{"line_number":92,"context_line":"        return self.call(context,"},{"line_number":93,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7247b5a4","line":90,"updated":"2014-08-08 13:25:24.000000000","message":"Debug logs don\u0027t require translation.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":90,"context_line":"        LOG.debug(_(\"Get security group information \""},{"line_number":91,"context_line":"                    \"for devices via rpc %r\"), devices)"},{"line_number":92,"context_line":"        return self.call(context,"},{"line_number":93,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_270fa88c","line":90,"in_reply_to":"baada198_7247b5a4","updated":"2014-08-09 03:57:27.000000000","message":"Done","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _update_security_group_info(self, security_groups,"},{"line_number":190,"context_line":"                                    security_group_member_ips):"},{"line_number":191,"context_line":"        LOG.debug(_(\"Update security group information\"))"},{"line_number":192,"context_line":"        for sg_id, sg_rule in security_groups.items():"},{"line_number":193,"context_line":"            self.firewall.update_security_group_rules(sg_id, sg_rule)"},{"line_number":194,"context_line":"        for remote_sg_id, member_ips in security_group_member_ips.items():"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_72ded5dc","line":191,"updated":"2014-08-08 13:25:24.000000000","message":"Debug logs don\u0027t require translation.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _update_security_group_info(self, security_groups,"},{"line_number":190,"context_line":"                                    security_group_member_ips):"},{"line_number":191,"context_line":"        LOG.debug(_(\"Update security group information\"))"},{"line_number":192,"context_line":"        for sg_id, sg_rule in security_groups.items():"},{"line_number":193,"context_line":"            self.firewall.update_security_group_rules(sg_id, sg_rule)"},{"line_number":194,"context_line":"        for remote_sg_id, member_ips in security_group_member_ips.items():"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_47149c9e","line":191,"in_reply_to":"baada198_72ded5dc","updated":"2014-08-09 03:57:27.000000000","message":"Done","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"51b64d02258d56853368421e159e866adcda27d4","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                LOG.debug(_(\"Update port filter for %s\"), device[\u0027device\u0027])"},{"line_number":268,"context_line":"                self.firewall.update_port_filter(device)"},{"line_number":269,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":270,"context_line":"                LOG.debug(_(\"Update security group information for ports %s\"),"},{"line_number":271,"context_line":"                          devices.keys())"},{"line_number":272,"context_line":"                self._update_security_group_info("},{"line_number":273,"context_line":"                    security_groups, security_group_member_ips)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_f2e10598","line":270,"updated":"2014-08-08 13:25:24.000000000","message":"Don\u0027t translate debug logs.","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                LOG.debug(_(\"Update port filter for %s\"), device[\u0027device\u0027])"},{"line_number":268,"context_line":"                self.firewall.update_port_filter(device)"},{"line_number":269,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":270,"context_line":"                LOG.debug(_(\"Update security group information for ports %s\"),"},{"line_number":271,"context_line":"                          devices.keys())"},{"line_number":272,"context_line":"                self._update_security_group_info("},{"line_number":273,"context_line":"                    security_groups, security_group_member_ips)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_67052067","line":270,"in_reply_to":"baada198_f2e10598","updated":"2014-08-09 03:57:27.000000000","message":"Done","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8282,"name":"Dong Liu","email":"willowd878@gmail.com","username":"liudong"},"change_message_id":"6af9dee56811a370d8af28cd05b61453e7f39bcc","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":90,"context_line":"        LOG.debug(\"Get security group information \""},{"line_number":91,"context_line":"                    \"for devices via rpc %r\", devices)"},{"line_number":92,"context_line":"        return self.call(context,"},{"line_number":93,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"},{"line_number":94,"context_line":"                                       devices\u003ddevices),"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_3c988b75","line":91,"updated":"2014-08-11 02:26:57.000000000","message":"You need to reformat this line.","commit_id":"2e4d3d82c8a80139549fb02fa5e12c8dfdf28d6c"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2c998299292a12fd06e295356546423d0ace8c49","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt("},{"line_number":38,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":39,"context_line":"        default\u003dTrue,"},{"line_number":40,"context_line":"        help\u003d_(\u0027Use the new rpc call to enhance security group\u0027))"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ab0b6f2b","line":40,"updated":"2014-08-11 07:10:15.000000000","message":"Extend this description with the one provided in previous comments. \"enhance\" only doesn\u0027t explain if it comes with new features, or it\u0027s just performance optimizations, etc.","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt("},{"line_number":38,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":39,"context_line":"        default\u003dTrue,"},{"line_number":40,"context_line":"        help\u003d_(\u0027Use the new rpc call to enhance security group\u0027))"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ba8d66d6","line":40,"in_reply_to":"baada198_ab0b6f2b","updated":"2014-08-11 15:04:44.000000000","message":"ok","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f60b4fdcfee88865935f68a0182c6bf7129d42ee","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                       devices\u003ddevices),"},{"line_number":87,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":90,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","},{"line_number":91,"context_line":"                  devices)"},{"line_number":92,"context_line":"        return self.call(context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_b0e750d6","line":89,"updated":"2014-08-11 12:33:37.000000000","message":"I think adding a new RPC methods requires an update in RPC versioning too. Otherwise agents might try and look for this methods also on older servers.\n\nThis was done here for a different case you can use as an example: https://review.openstack.org/#/c/66866/\n\nIn the meanwhile, I\u0027ll keep looking for a wiki page explaining the process.","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                       devices\u003ddevices),"},{"line_number":87,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":90,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","},{"line_number":91,"context_line":"                  devices)"},{"line_number":92,"context_line":"        return self.call(context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_5a9d2a08","line":89,"in_reply_to":"baada198_b0e750d6","updated":"2014-08-11 15:04:44.000000000","message":"ok, I got it","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"f71f9fcba70db75444c4d344696c40437d673449","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.openstack.common import importutils"},{"line_number":21,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"SG_RPC_VERSION \u003d \"1.1\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"security_group_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_707a8ef2","line":23,"updated":"2014-08-19 09:50:46.000000000","message":"SG_RPC_VERSION here.","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2bf51a6300f9f520edebafd34e0d318139fe80f6","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.openstack.common import importutils"},{"line_number":21,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"SG_RPC_VERSION \u003d \"1.1\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"security_group_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_3df2aad2","line":23,"in_reply_to":"1abeadc6_707a8ef2","updated":"2014-08-19 11:31:08.000000000","message":"I am sorry, I got it  now","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"904c8618ce7ef53a70f6b179e932874b4fdb7b89","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.call(context,"},{"line_number":96,"context_line":"                         self.make_msg(\u0027security_group_rules_for_devices\u0027,"},{"line_number":97,"context_line":"                                       devices\u003ddevices),"},{"line_number":98,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":101,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_9509dcdf","line":98,"updated":"2014-08-19 09:17:23.000000000","message":"this is 1.1 already... how are you incrementing versioning?\n\nThis means that a new agent might try and expect the method below is implemented by an older server.","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2bf51a6300f9f520edebafd34e0d318139fe80f6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.call(context,"},{"line_number":96,"context_line":"                         self.make_msg(\u0027security_group_rules_for_devices\u0027,"},{"line_number":97,"context_line":"                                       devices\u003ddevices),"},{"line_number":98,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":101,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_ddb8d6e7","line":98,"in_reply_to":"1abeadc6_10507a5d","updated":"2014-08-19 11:31:08.000000000","message":"I don\u0027t know how to do it now?","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d1a16650ef28c49df5004713bcc2eb93c1e584a0","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.call(context,"},{"line_number":96,"context_line":"                         self.make_msg(\u0027security_group_rules_for_devices\u0027,"},{"line_number":97,"context_line":"                                       devices\u003ddevices),"},{"line_number":98,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":101,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_10507a5d","line":98,"in_reply_to":"1abeadc6_9509dcdf","updated":"2014-08-19 09:53:13.000000000","message":"Salvatore, Shihanzhang and me, we\u0027re both unexperienced on rpc versioning. How would you do that?\n\nincreasing SG_RPC_VERSION module-wise, and then setting \u00271.1\u0027 manually for the old \u0027security_group_rules_for_devices\u0027 ?","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6184f1240d21c4dafdc2be8c2d89310700894ba9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return self.call(context,"},{"line_number":92,"context_line":"                         self.make_msg(\u0027security_group_rules_for_devices\u0027,"},{"line_number":93,"context_line":"                                       devices\u003ddevices),"},{"line_number":94,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":97,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_8d8fa729","line":94,"updated":"2014-08-21 18:53:05.000000000","message":"For this call version\u003dSG_RPC_VERSION is not true anymore since you bumped SG_RPC_VERSION. This call is supported also by version 1.1 ...you can define BASE_SG_RPC_VERSION \u003d \u00271.1\u0027 and use it here as done for example in neutron.agent.rpc.PluginApi","commit_id":"367c9c4925e91ea5bc25813c73922b46e5901af7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5a166470280d54a8835a5be0c6c0321ac1166665","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return self.call(context,"},{"line_number":92,"context_line":"                         self.make_msg(\u0027security_group_rules_for_devices\u0027,"},{"line_number":93,"context_line":"                                       devices\u003ddevices),"},{"line_number":94,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":97,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_bdd6354d","line":94,"in_reply_to":"1abeadc6_8d8fa729","updated":"2014-08-22 09:32:20.000000000","message":"correct.","commit_id":"367c9c4925e91ea5bc25813c73922b46e5901af7"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8fd3b3e37ee78ea479373b0b4a8d40e9f76b7ddd","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return self.call(context,"},{"line_number":92,"context_line":"                         self.make_msg(\u0027security_group_rules_for_devices\u0027,"},{"line_number":93,"context_line":"                                       devices\u003ddevices),"},{"line_number":94,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def security_group_info_for_devices(self, context, devices):"},{"line_number":97,"context_line":"        LOG.debug(\"Get security group information for devices via rpc %r\","}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_4c2e51a6","line":94,"in_reply_to":"1abeadc6_bdd6354d","updated":"2014-08-22 13:42:06.000000000","message":"Understood.","commit_id":"367c9c4925e91ea5bc25813c73922b46e5901af7"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d37a8c65c2ceb9e73f1a3d77e34bd452c14e9a45","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"},{"line_number":102,"context_line":"                                       devices\u003ddevices),"},{"line_number":103,"context_line":"                         version\u003dSG_RPC_VERSION,"},{"line_number":104,"context_line":"                         topic\u003dself.topic)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"class SecurityGroupAgentRpcCallbackMixin(object):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_2151e5d8","line":104,"updated":"2014-08-25 10:47:47.000000000","message":"No need to specify the topic, see https://review.openstack.org/#/c/109291/","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"157892de4e2861a82cb2916528fa10476f53cdee","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"},{"line_number":102,"context_line":"                                       devices\u003ddevices),"},{"line_number":103,"context_line":"                         version\u003dSG_RPC_VERSION,"},{"line_number":104,"context_line":"                         topic\u003dself.topic)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"class SecurityGroupAgentRpcCallbackMixin(object):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_65b928ec","line":104,"in_reply_to":"1abeadc6_2151e5d8","updated":"2014-08-25 11:22:44.000000000","message":"Done","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d37a8c65c2ceb9e73f1a3d77e34bd452c14e9a45","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if not device_ids:"},{"line_number":176,"context_line":"            return"},{"line_number":177,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":178,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":179,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":180,"context_line":"                self.context, list(device_ids))"},{"line_number":181,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_612f5df7","line":178,"updated":"2014-08-25 10:47:47.000000000","message":"The new feature is not used if it\u0027s not enabled in the config file. It would be nice to disable it, if the server was not updated and it\u0027s not supporting version 1.2 . It\u0027s gonna make the upgrade easier.\nYou could define a a function to check if the new rpc call is supported by the server:\n\ndef _check_enhanced_rcp_is_supported_by_server(self):\n     try:\n         self.call(context,\n\t\t\tself.make_msg(\u0027security_group_info_for_devices\u0027,\n\t\t\tdevices\u003ddevices),\n\t\t\tversion\u003dSG_RPC_VERSION)\n     except messaging.UnsupportedVersion:\n         return False\n     return True   \n\nThen you could define a boolean at line 111\n enhanced_rpc_is_supported \u003d self._check_enhanced_rcp_is_supported_by_server()\n\nYou can use enhanced_rpc_is_supported here and in all the similar check:\n\n\nif cfg.CONF.SECURITYGROUP.enable_enhanced_rpc and self.enhanced_rpc_is_supported:","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"157892de4e2861a82cb2916528fa10476f53cdee","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if not device_ids:"},{"line_number":176,"context_line":"            return"},{"line_number":177,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":178,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":179,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":180,"context_line":"                self.context, list(device_ids))"},{"line_number":181,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_85a564b7","line":178,"in_reply_to":"1abeadc6_612f5df7","updated":"2014-08-25 11:22:44.000000000","message":"thanks very much, it is a very nice suggestion!","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"230634d6434d8c6a006397259dcc76c86e0dde9c","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if not device_ids:"},{"line_number":176,"context_line":"            return"},{"line_number":177,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":178,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":179,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":180,"context_line":"                self.context, list(device_ids))"},{"line_number":181,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_a7ba5bbe","line":178,"in_reply_to":"1abeadc6_85a564b7","updated":"2014-08-25 15:55:54.000000000","message":"+1","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a732c96fc9e9a69c8171bf3a24cd8435085991b2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        if not device_ids:"},{"line_number":176,"context_line":"            return"},{"line_number":177,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":178,"context_line":"        if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":179,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":180,"context_line":"                self.context, list(device_ids))"},{"line_number":181,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_d22b7792","line":178,"in_reply_to":"1abeadc6_a7ba5bbe","updated":"2014-08-28 09:16:31.000000000","message":"+1 I like the mixed solution.","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"df16f945f9b946bab85530ddeb451048f66eea67","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       devices\u003ddevices),"},{"line_number":104,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def check_enhanced_rcp_is_supported_by_server(self, context, devices):"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("}],"source_content_type":"text/x-python","patch_set":20,"id":"1abeadc6_b5bd0505","line":106,"updated":"2014-08-26 08:58:28.000000000","message":"Why not removing devices, and using devices\u003d[] in the lower call?","commit_id":"15bf3733a1d716725d0b49ee91ef1845b8cbc406"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"af08613c992b8e36098d2c78321b11630aac8ce1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       devices\u003ddevices),"},{"line_number":104,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def check_enhanced_rcp_is_supported_by_server(self, context, devices):"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("}],"source_content_type":"text/x-python","patch_set":20,"id":"1abeadc6_3583b5cd","line":106,"in_reply_to":"1abeadc6_b5bd0505","updated":"2014-08-26 09:07:01.000000000","message":"yes, I agree","commit_id":"15bf3733a1d716725d0b49ee91ef1845b8cbc406"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"df16f945f9b946bab85530ddeb451048f66eea67","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("},{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003ddevices),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        except messaging.UnsupportedVersion:"},{"line_number":113,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":20,"id":"1abeadc6_555d91e8","line":110,"updated":"2014-08-26 08:58:28.000000000","message":"devices\u003d[] here","commit_id":"15bf3733a1d716725d0b49ee91ef1845b8cbc406"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"af08613c992b8e36098d2c78321b11630aac8ce1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("},{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003ddevices),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        except messaging.UnsupportedVersion:"},{"line_number":113,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":20,"id":"1abeadc6_756c4d37","line":110,"in_reply_to":"1abeadc6_555d91e8","updated":"2014-08-26 09:07:01.000000000","message":"Done","commit_id":"15bf3733a1d716725d0b49ee91ef1845b8cbc406"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"df16f945f9b946bab85530ddeb451048f66eea67","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":183,"context_line":"        self.enhanced_rpc_is_supported \u003d \\"},{"line_number":184,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":185,"context_line":"                self.context, [])"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def prepare_devices_filter(self, device_ids):"},{"line_number":188,"context_line":"        if not device_ids:"}],"source_content_type":"text/x-python","patch_set":20,"id":"1abeadc6_f52bfd30","line":185,"updated":"2014-08-26 08:58:28.000000000","message":"+1, l like it\n\nMay be it\u0027d be good to give a \n\nif cfg.CONF.enable_enhanced_rpc and not self. enhanced_rpc_is_supported:\n    LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent, but neutron-server doesn\u0027t support the new rpc version yet\u0027))\n\n\nThis could even mask (during testing) if we are having a versioning problem yet with RPC","commit_id":"15bf3733a1d716725d0b49ee91ef1845b8cbc406"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"af08613c992b8e36098d2c78321b11630aac8ce1","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":183,"context_line":"        self.enhanced_rpc_is_supported \u003d \\"},{"line_number":184,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":185,"context_line":"                self.context, [])"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def prepare_devices_filter(self, device_ids):"},{"line_number":188,"context_line":"        if not device_ids:"}],"source_content_type":"text/x-python","patch_set":20,"id":"1abeadc6_1565d944","line":185,"in_reply_to":"1abeadc6_f52bfd30","updated":"2014-08-26 09:07:01.000000000","message":"I got it","commit_id":"15bf3733a1d716725d0b49ee91ef1845b8cbc406"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"db198f919b032bf3c57cca44ad21b141d3a931fa","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_2387bab6","line":113,"updated":"2014-08-27 17:19:46.000000000","message":"Exactly :) please address the TODO","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ec74922dc8da740abbf55919a1940550ca4b7789","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_5521ba4b","line":113,"in_reply_to":"1abeadc6_2387bab6","updated":"2014-08-28 02:35:17.000000000","message":"I am sorry, can you help me to explain what does the meaning of \"address the TODO\"","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c57c53a709405646cd03baa7300a90fe4e919438","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_165aed29","line":113,"in_reply_to":"1abeadc6_2387bab6","updated":"2014-08-28 00:58:12.000000000","message":"I got it","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"db198f919b032bf3c57cca44ad21b141d3a931fa","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self.devices_to_refilter \u003d set()"},{"line_number":187,"context_line":"        # Flag raised when a global refresh is needed"},{"line_number":188,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":189,"context_line":"        self.enhanced_rpc_is_supported \u003d \\"},{"line_number":190,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":191,"context_line":"                self.context)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_a3690afb","line":189,"updated":"2014-08-27 17:19:46.000000000","message":"please don\u0027t use backslashes to split the lines but parentheses","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c57c53a709405646cd03baa7300a90fe4e919438","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self.devices_to_refilter \u003d set()"},{"line_number":187,"context_line":"        # Flag raised when a global refresh is needed"},{"line_number":188,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":189,"context_line":"        self.enhanced_rpc_is_supported \u003d \\"},{"line_number":190,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":191,"context_line":"                self.context)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_f65491ff","line":189,"in_reply_to":"1abeadc6_a3690afb","updated":"2014-08-28 00:58:12.000000000","message":"agree","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"924a2099693469e2e83bcffa7c357564c056fc29","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027Controls whether the neutron security group API is enabled \u0027"},{"line_number":40,"context_line":"            \u0027in the server. It should be false when using no security \u0027"},{"line_number":41,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":42,"context_line":"    cfg.StrOpt("},{"line_number":43,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":44,"context_line":"        default\u003dTrue,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_e129239c","line":42,"updated":"2014-08-28 09:48:29.000000000","message":"I think this should be BoolOpt instead.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027Controls whether the neutron security group API is enabled \u0027"},{"line_number":40,"context_line":"            \u0027in the server. It should be false when using no security \u0027"},{"line_number":41,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":42,"context_line":"    cfg.StrOpt("},{"line_number":43,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":44,"context_line":"        default\u003dTrue,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_7c55a9c0","line":42,"in_reply_to":"1abeadc6_72fa3fbe","updated":"2014-08-28 14:49:15.000000000","message":"You aren\u0027t, just human as all of us.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2b9ba971e3d7a6d70ab51c96386573e52dc71855","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027Controls whether the neutron security group API is enabled \u0027"},{"line_number":40,"context_line":"            \u0027in the server. It should be false when using no security \u0027"},{"line_number":41,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":42,"context_line":"    cfg.StrOpt("},{"line_number":43,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":44,"context_line":"        default\u003dTrue,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_72fa3fbe","line":42,"in_reply_to":"1abeadc6_977a6d22","updated":"2014-08-28 10:51:36.000000000","message":"I am sorry, I am careless","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2b2d127e9c6079f169aa7bd83e4588ef36e62f67","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027Controls whether the neutron security group API is enabled \u0027"},{"line_number":40,"context_line":"            \u0027in the server. It should be false when using no security \u0027"},{"line_number":41,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":42,"context_line":"    cfg.StrOpt("},{"line_number":43,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":44,"context_line":"        default\u003dTrue,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_977a6d22","line":42,"in_reply_to":"1abeadc6_e129239c","updated":"2014-08-28 10:07:59.000000000","message":"+1, I\u0027m surprised it works with Str (and I tested it manually)","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6cbc59f4de9c5d4b5cdeb640504af96bce1e38d1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       devices\u003ddevices),"},{"line_number":104,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def check_enhanced_rcp_is_supported_by_server(self, context):"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_0a5c6f18","line":106,"updated":"2014-08-28 12:50:19.000000000","message":"nit for later: _rcp_ -\u003e _rpc_","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"596d4eb879debb980efb01c90ac2771a1cfb6bc2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       devices\u003ddevices),"},{"line_number":104,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def check_enhanced_rcp_is_supported_by_server(self, context):"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_aace1b81","line":106,"in_reply_to":"1abeadc6_0a5c6f18","updated":"2014-08-28 12:57:41.000000000","message":"got it","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"424534b87b8f4549adb77b2af39396f282440d3d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_c1a7c74e","line":114,"updated":"2014-08-28 09:23:09.000000000","message":"Capture the right exception instead of general \"Exception\" that can cause trouble. (remove the TODO afterwards).","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2b2d127e9c6079f169aa7bd83e4588ef36e62f67","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_57853505","line":114,"in_reply_to":"1abeadc6_14bd7bb7","updated":"2014-08-28 10:07:59.000000000","message":"Ah, thank you shihanzhang, so the problem it is that they will try to call into the RPC, but the RPC isn\u0027t there or mocked.\n\nI\u0027ll look at that case to see if there is a reasonable way to fix those tests.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2b9ba971e3d7a6d70ab51c96386573e52dc71855","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_921efb0a","line":114,"in_reply_to":"1abeadc6_57853505","updated":"2014-08-28 10:51:36.000000000","message":"ok, I look forward your work","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f944c75076a38470042fb765e623bd6f11da4bab","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_f4bb9fe2","line":114,"in_reply_to":"1abeadc6_c1a7c74e","updated":"2014-08-28 09:36:18.000000000","message":"there are many unit tests which call \u0027init_firewall\u0027, but these unit tests don\u0027t mock \u0027check_enhanced_rcp_is_supported_by_server\u0027, you can see the result of patch 22, these unit tests will failed, so I catch the Exception instead of messaging.UnsupportedVersion, this is why I use TODO, do you agree with me?","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"59d79a1647afb4f57d702c0e62781801706e2ac5","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"},{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_14bd7bb7","line":114,"in_reply_to":"1abeadc6_f4bb9fe2","updated":"2014-08-28 09:39:39.000000000","message":"if it catch the messaging.UnsupportedVersion, it should modify these unit tests which call \u0027init_firewall\u0027 but don\u0027t mock \u0027check_enhanced_rcp_is_supported_by_server\u0027, welcome your advice, thanks!","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1cce456db021592bd056b1eebb3ace352633c295","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self.devices_to_refilter \u003d set()"},{"line_number":187,"context_line":"        # Flag raised when a global refresh is needed"},{"line_number":188,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":189,"context_line":"        self.enhanced_rpc_is_supported \u003d ("},{"line_number":190,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":191,"context_line":"                self.context))"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_70b3129a","line":189,"updated":"2014-08-28 13:57:00.000000000","message":"There are lots of compound conditionals that we can simplify greatly here by resolving the value once in a way that ensures that we\u0027re only running the check when it has been requested.\n\nself.enhanced_rpc_is_supported \u003d (\n    cfg.CONF.SECURITYGROUP.enable_enhanced_rpc\n    or\n    self.plugin_rpc.check_enhanced_rcp_is_supported_by_server(\n        self.context\n    )\n)","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self.devices_to_refilter \u003d set()"},{"line_number":187,"context_line":"        # Flag raised when a global refresh is needed"},{"line_number":188,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":189,"context_line":"        self.enhanced_rpc_is_supported \u003d ("},{"line_number":190,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":191,"context_line":"                self.context))"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_810f8238","line":189,"in_reply_to":"1abeadc6_70b3129a","updated":"2014-08-28 14:49:15.000000000","message":"Hmm may be:\n\nself.use_enhanced_rpc \u003d (\n    cfg.CONF.SECURITYGROUP.enable_enhanced_rpc\n    and\n    self.plugin_rpc.check_enhanced_rcp_is_supported_by_server(\n        self.context\n    )\n)\n\n???\n\nSounds good to me.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1309e5c007d2d59109cf4993bbe2def35ee55c45","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self.devices_to_refilter \u003d set()"},{"line_number":187,"context_line":"        # Flag raised when a global refresh is needed"},{"line_number":188,"context_line":"        self.global_refresh_firewall \u003d False"},{"line_number":189,"context_line":"        self.enhanced_rpc_is_supported \u003d ("},{"line_number":190,"context_line":"            self.plugin_rpc.check_enhanced_rcp_is_supported_by_server("},{"line_number":191,"context_line":"                self.context))"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_69ea4875","line":189,"in_reply_to":"1abeadc6_810f8238","updated":"2014-08-29 00:32:43.000000000","message":"thanks for your review and suggestion!","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1cce456db021592bd056b1eebb3ace352633c295","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":197,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":198,"context_line":"            and self.enhanced_rpc_is_supported):"},{"line_number":199,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":200,"context_line":"                self.context, list(device_ids))"},{"line_number":201,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_7b3e938c","line":198,"updated":"2014-08-28 13:57:00.000000000","message":"We can remove the compound conditional see above","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1309e5c007d2d59109cf4993bbe2def35ee55c45","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":197,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":198,"context_line":"            and self.enhanced_rpc_is_supported):"},{"line_number":199,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":200,"context_line":"                self.context, list(device_ids))"},{"line_number":201,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_c9f8bc4c","line":198,"in_reply_to":"1abeadc6_5c054d0f","updated":"2014-08-29 00:32:43.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":"        LOG.info(_(\"Preparing filters for devices %s\"), device_ids)"},{"line_number":197,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":198,"context_line":"            and self.enhanced_rpc_is_supported):"},{"line_number":199,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":200,"context_line":"                self.context, list(device_ids))"},{"line_number":201,"context_line":"            devices \u003d devices_info[\u0027devices\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_5c054d0f","line":198,"in_reply_to":"1abeadc6_7b3e938c","updated":"2014-08-28 14:49:15.000000000","message":"I agree.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1cce456db021592bd056b1eebb3ace352633c295","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        with self.firewall.defer_apply():"},{"line_number":209,"context_line":"            for device in devices.values():"},{"line_number":210,"context_line":"                self.firewall.prepare_port_filter(device)"},{"line_number":211,"context_line":"            if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":212,"context_line":"                and self.enhanced_rpc_is_supported):"},{"line_number":213,"context_line":"                LOG.debug(\"Update security group information for ports %s\","},{"line_number":214,"context_line":"                          devices.keys())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_9bcc4fbd","line":211,"updated":"2014-08-28 13:57:00.000000000","message":"we can remove the compound conditional see above","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        with self.firewall.defer_apply():"},{"line_number":209,"context_line":"            for device in devices.values():"},{"line_number":210,"context_line":"                self.firewall.prepare_port_filter(device)"},{"line_number":211,"context_line":"            if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":212,"context_line":"                and self.enhanced_rpc_is_supported):"},{"line_number":213,"context_line":"                LOG.debug(\"Update security group information for ports %s\","},{"line_number":214,"context_line":"                          devices.keys())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_9c0b6523","line":211,"in_reply_to":"1abeadc6_9bcc4fbd","updated":"2014-08-28 14:49:15.000000000","message":"I agree.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1309e5c007d2d59109cf4993bbe2def35ee55c45","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        with self.firewall.defer_apply():"},{"line_number":209,"context_line":"            for device in devices.values():"},{"line_number":210,"context_line":"                self.firewall.prepare_port_filter(device)"},{"line_number":211,"context_line":"            if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":212,"context_line":"                and self.enhanced_rpc_is_supported):"},{"line_number":213,"context_line":"                LOG.debug(\"Update security group information for ports %s\","},{"line_number":214,"context_line":"                          devices.keys())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_e9f57851","line":211,"in_reply_to":"1abeadc6_9c0b6523","updated":"2014-08-29 00:32:43.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1cce456db021592bd056b1eebb3ace352633c295","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if not device_ids:"},{"line_number":282,"context_line":"                LOG.info(_(\"No ports here to refresh firewall\"))"},{"line_number":283,"context_line":"                return"},{"line_number":284,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":285,"context_line":"            and self.enhanced_rpc_is_supported):"},{"line_number":286,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":287,"context_line":"                self.context, device_ids)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_fbe38331","line":284,"updated":"2014-08-28 13:57:00.000000000","message":"let\u0027s remove the compound conditional... see above","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if not device_ids:"},{"line_number":282,"context_line":"                LOG.info(_(\"No ports here to refresh firewall\"))"},{"line_number":283,"context_line":"                return"},{"line_number":284,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":285,"context_line":"            and self.enhanced_rpc_is_supported):"},{"line_number":286,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":287,"context_line":"                self.context, device_ids)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_fc19b97a","line":284,"in_reply_to":"1abeadc6_fbe38331","updated":"2014-08-28 14:49:15.000000000","message":"I agree.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1309e5c007d2d59109cf4993bbe2def35ee55c45","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if not device_ids:"},{"line_number":282,"context_line":"                LOG.info(_(\"No ports here to refresh firewall\"))"},{"line_number":283,"context_line":"                return"},{"line_number":284,"context_line":"        if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":285,"context_line":"            and self.enhanced_rpc_is_supported):"},{"line_number":286,"context_line":"            devices_info \u003d self.plugin_rpc.security_group_info_for_devices("},{"line_number":287,"context_line":"                self.context, device_ids)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_299bf018","line":284,"in_reply_to":"1abeadc6_fc19b97a","updated":"2014-08-29 00:32:43.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1cce456db021592bd056b1eebb3ace352633c295","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            for device in devices.values():"},{"line_number":297,"context_line":"                LOG.debug(_(\"Update port filter for %s\"), device[\u0027device\u0027])"},{"line_number":298,"context_line":"                self.firewall.update_port_filter(device)"},{"line_number":299,"context_line":"            if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":300,"context_line":"                and self.enhanced_rpc_is_supported):"},{"line_number":301,"context_line":"                LOG.debug(\"Update security group information for ports %s\","},{"line_number":302,"context_line":"                          devices.keys())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_3bd17b57","line":299,"updated":"2014-08-28 13:57:00.000000000","message":"we can remove this compound conditional see above","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            for device in devices.values():"},{"line_number":297,"context_line":"                LOG.debug(_(\"Update port filter for %s\"), device[\u0027device\u0027])"},{"line_number":298,"context_line":"                self.firewall.update_port_filter(device)"},{"line_number":299,"context_line":"            if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":300,"context_line":"                and self.enhanced_rpc_is_supported):"},{"line_number":301,"context_line":"                LOG.debug(\"Update security group information for ports %s\","},{"line_number":302,"context_line":"                          devices.keys())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_5c2c6d99","line":299,"in_reply_to":"1abeadc6_3bd17b57","updated":"2014-08-28 14:49:15.000000000","message":"I agree.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"1309e5c007d2d59109cf4993bbe2def35ee55c45","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            for device in devices.values():"},{"line_number":297,"context_line":"                LOG.debug(_(\"Update port filter for %s\"), device[\u0027device\u0027])"},{"line_number":298,"context_line":"                self.firewall.update_port_filter(device)"},{"line_number":299,"context_line":"            if (cfg.CONF.SECURITYGROUP.enable_enhanced_rpc"},{"line_number":300,"context_line":"                and self.enhanced_rpc_is_supported):"},{"line_number":301,"context_line":"                LOG.debug(\"Update security group information for ports %s\","},{"line_number":302,"context_line":"                          devices.keys())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_69a16845","line":299,"in_reply_to":"1abeadc6_5c2c6d99","updated":"2014-08-29 00:32:43.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"c4e4afb1b366a293cbf78d459b4832f10fe333b5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"#   1.1 Support Security Group RPC"},{"line_number":27,"context_line":"#   1.2 Support Enhanced Security Group RPC"},{"line_number":28,"context_line":"BASE_SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":"SG_RPC_VERSION \u003d \"1.2\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"security_group_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_b46f3e5f","line":29,"updated":"2014-08-29 04:00:05.000000000","message":"Should the RPC_API_VERSION of RpcCallbacks in neutron/plugins/ml2/rpc.py be upgrade to 1.4 since SecurityGroupServerRpcCallbackMixin is modified?","commit_id":"07e5161d4c4c58f33a4826aedcc815e37a210176"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"bbd3338e4c67f15432a40768069ef79daaa06c47","unresolved":false,"context_lines":[{"line_number":26,"context_line":"#   1.1 Support Security Group RPC"},{"line_number":27,"context_line":"#   1.2 Support Enhanced Security Group RPC"},{"line_number":28,"context_line":"BASE_SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":"SG_RPC_VERSION \u003d \"1.2\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"security_group_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_906f935f","line":29,"in_reply_to":"1abeadc6_a0bc4edd","updated":"2014-08-29 14:34:40.000000000","message":"ongoing rebase... :)","commit_id":"07e5161d4c4c58f33a4826aedcc815e37a210176"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c2b22e4dcab981536db0af2bf47988a90697459","unresolved":false,"context_lines":[{"line_number":26,"context_line":"#   1.1 Support Security Group RPC"},{"line_number":27,"context_line":"#   1.2 Support Enhanced Security Group RPC"},{"line_number":28,"context_line":"BASE_SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":"SG_RPC_VERSION \u003d \"1.2\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"security_group_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_a0bc4edd","line":29,"in_reply_to":"1abeadc6_b46f3e5f","updated":"2014-08-29 08:51:03.000000000","message":"There is a series of patches under review for consolidating RPC versioning.\nThis patch should be rebased on them.","commit_id":"07e5161d4c4c58f33a4826aedcc815e37a210176"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"# history"},{"line_number":26,"context_line":"#   1.1 Support Security Group RPC"},{"line_number":27,"context_line":"#   1.2 Support Enhanced Security Group RPC"},{"line_number":28,"context_line":"BASE_SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":"SG_RPC_VERSION \u003d \"1.2\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c3ef1faf","line":27,"updated":"2014-09-01 18:24:33.000000000","message":"RPC from server to agent and RPC from agent to server evolve independently, so the history should be separate.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d2a522ccaa15e45f52461dd580ad1783efa70d61","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"# history"},{"line_number":26,"context_line":"#   1.1 Support Security Group RPC"},{"line_number":27,"context_line":"#   1.2 Support Enhanced Security Group RPC"},{"line_number":28,"context_line":"BASE_SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":"SG_RPC_VERSION \u003d \"1.2\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_83e31a32","line":27,"in_reply_to":"fa98f980_797d3be7","updated":"2014-09-02 18:48:58.000000000","message":"I said nothing... understood... :)\n\nThe agent side has to stay 1.1,\n\nThe server side is the one bumped to 1.2.\n\nright?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"# history"},{"line_number":26,"context_line":"#   1.1 Support Security Group RPC"},{"line_number":27,"context_line":"#   1.2 Support Enhanced Security Group RPC"},{"line_number":28,"context_line":"BASE_SG_RPC_VERSION \u003d \"1.1\""},{"line_number":29,"context_line":"SG_RPC_VERSION \u003d \"1.2\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_797d3be7","line":27,"in_reply_to":"fa98f980_c3ef1faf","updated":"2014-09-01 23:02:46.000000000","message":"But isn\u0027t it the same at this point?, not sure, I\u0027ll recheck tomorrow morning.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027in the server. It should be false when using no security \u0027"},{"line_number":41,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":42,"context_line":"    cfg.BoolOpt("},{"line_number":43,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":44,"context_line":"        default\u003dTrue,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"},{"line_number":46,"context_line":"               \u0027RPC methods, that reduce the message size and optimize \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_230d4b91","line":43,"updated":"2014-09-01 18:24:33.000000000","message":"Is this option used both by the server and the agent?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027in the server. It should be false when using no security \u0027"},{"line_number":41,"context_line":"            \u0027groups or using the nova security group API.\u0027)),"},{"line_number":42,"context_line":"    cfg.BoolOpt("},{"line_number":43,"context_line":"        \u0027enable_enhanced_rpc\u0027,"},{"line_number":44,"context_line":"        default\u003dTrue,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"},{"line_number":46,"context_line":"               \u0027RPC methods, that reduce the message size and optimize \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_9eb1e5e3","line":43,"in_reply_to":"fa98f980_230d4b91","updated":"2014-09-01 23:02:46.000000000","message":"server exposes both, agent uses either the old one or the enhanced one. If enhanced one is not found, then it falls back to the old one.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"},{"line_number":46,"context_line":"               \u0027RPC methods, that reduce the message size and optimize \u0027"},{"line_number":47,"context_line":"               \u0027performance. This is recommended in general, and specially \u0027"},{"line_number":48,"context_line":"               \u0027for high density clouds.\u0027))"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_832277b7","line":48,"updated":"2014-09-01 18:24:33.000000000","message":"Is there a case where we should avoid using enable_enhanced_rpc\u003dFalse? If there is, it is nice to mention it here.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"},{"line_number":46,"context_line":"               \u0027RPC methods, that reduce the message size and optimize \u0027"},{"line_number":47,"context_line":"               \u0027performance. This is recommended in general, and specially \u0027"},{"line_number":48,"context_line":"               \u0027for high density clouds.\u0027))"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_be394943","line":48,"in_reply_to":"fa98f980_832277b7","updated":"2014-09-01 23:02:46.000000000","message":"It was meant as a possible rollback for the case any serious bug was found. Probably no reason.\n\nWhat do you think about removing it?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d2a522ccaa15e45f52461dd580ad1783efa70d61","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        help\u003d_(\u0027Controls whether neutron security group uses the latest \u0027"},{"line_number":46,"context_line":"               \u0027RPC methods, that reduce the message size and optimize \u0027"},{"line_number":47,"context_line":"               \u0027performance. This is recommended in general, and specially \u0027"},{"line_number":48,"context_line":"               \u0027for high density clouds.\u0027))"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":"cfg.CONF.register_opts(security_group_opts, \u0027SECURITYGROUP\u0027)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_030e4a34","line":48,"in_reply_to":"fa98f980_be394943","updated":"2014-09-02 18:48:58.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        return self.call(context,"},{"line_number":102,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"},{"line_number":103,"context_line":"                                       devices\u003ddevices),"},{"line_number":104,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def check_enhanced_rpc_is_supported_by_server(self, context):"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c3747fff","line":104,"updated":"2014-09-01 18:24:33.000000000","message":"the version should not change even if Security Group RPC version is bumped, so the version should be specified using an immediate value rather than a constant.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        return self.call(context,"},{"line_number":102,"context_line":"                         self.make_msg(\u0027security_group_info_for_devices\u0027,"},{"line_number":103,"context_line":"                                       devices\u003ddevices),"},{"line_number":104,"context_line":"                         version\u003dSG_RPC_VERSION)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def check_enhanced_rpc_is_supported_by_server(self, context):"},{"line_number":107,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_1e2175fb","line":104,"in_reply_to":"fa98f980_c3747fff","updated":"2014-09-01 23:02:46.000000000","message":"Makes sense\n+1","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self.call(context,"},{"line_number":109,"context_line":"                      self.make_msg("},{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_43608f32","line":111,"updated":"2014-09-01 18:24:33.000000000","message":"Ditto","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                      self.make_msg("},{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_ab1762a2","line":112,"updated":"2014-09-01 14:34:15.000000000","message":"why TODO and not applying in the current patch?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                      self.make_msg("},{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_6a89d425","line":112,"in_reply_to":"fa98f980_5eef7d87","updated":"2014-09-02 02:02:38.000000000","message":"yes, Ajo is right","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                      self.make_msg("},{"line_number":110,"context_line":"                          \u0027security_group_info_for_devices\u0027, devices\u003d[]),"},{"line_number":111,"context_line":"                      version\u003dSG_RPC_VERSION)"},{"line_number":112,"context_line":"        # TODO(shihanzhang) it should just catch the"},{"line_number":113,"context_line":"        # messaging.UnsupportedVersion exception"},{"line_number":114,"context_line":"        except Exception:"},{"line_number":115,"context_line":"            if cfg.CONF.SECURITYGROUP.enable_enhanced_rpc:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_5eef7d87","line":112,"in_reply_to":"fa98f980_ab1762a2","updated":"2014-09-01 23:02:46.000000000","message":"There is a corner case with a few third party tests that don\u0027t implement the rpc call response when using the fake_impl driver. I\u0027m looking into getting this addressed during tomorrow. Or I could do in a follow up patch.\n\nhttp://logs.openstack.org/76/111876/19/check/gate-neutron-python27/3379b83/testr_results.html.gz","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"},{"line_number":118,"context_line":"                                \u0027 rpc version yet\u0027))"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":"        return True"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_e34a6382","line":119,"updated":"2014-09-01 18:24:33.000000000","message":"Do we need enable_enhanced_rpc config in the agent side?\n\nIf the agent is upgraded, the agent tries to use check_enhanced_rpc_is_supported RPC. If it succeeds the enhanced version can be used. Otherwise the enhanced vesion cannot be used.\n\nIf the agent is before upgraded, the agent behaves in the old manner.\n\nThus I think the config variable is not needed in the agent side if the fallback mechanism works.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d2a522ccaa15e45f52461dd580ad1783efa70d61","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"},{"line_number":118,"context_line":"                                \u0027 rpc version yet\u0027))"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":"        return True"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_035c8a24","line":119,"in_reply_to":"fa98f980_00fae7bc","updated":"2014-09-02 18:48:58.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"},{"line_number":118,"context_line":"                                \u0027 rpc version yet\u0027))"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":"        return True"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_00fae7bc","line":119,"in_reply_to":"fa98f980_5e64dd21","updated":"2014-09-02 02:02:38.000000000","message":"I agree, I will communicate with you about this on IRC","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                LOG.warning(_LW(\u0027enable_enhanced_rpc is enabled in the agent,\u0027"},{"line_number":117,"context_line":"                                \u0027 but neutron-server does not support the new\u0027"},{"line_number":118,"context_line":"                                \u0027 rpc version yet\u0027))"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":"        return True"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_5e64dd21","line":119,"in_reply_to":"fa98f980_e34a6382","updated":"2014-09-01 23:02:46.000000000","message":"I start to agree with you, \n\nso +1","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def _update_security_group_info(self, security_groups,"},{"line_number":218,"context_line":"                                    security_group_member_ips):"},{"line_number":219,"context_line":"        LOG.debug(\"Update security group information\")"},{"line_number":220,"context_line":"        for sg_id, sg_rule in security_groups.items():"},{"line_number":221,"context_line":"            self.firewall.update_security_group_rules(sg_id, sg_rule)"},{"line_number":222,"context_line":"        for remote_sg_id, member_ips in security_group_member_ips.items():"},{"line_number":223,"context_line":"            self.firewall.update_security_group_members("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_ae04d015","line":220,"updated":"2014-09-01 14:34:15.000000000","message":"sg_rule -\u003e sg_rules?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def _update_security_group_info(self, security_groups,"},{"line_number":218,"context_line":"                                    security_group_member_ips):"},{"line_number":219,"context_line":"        LOG.debug(\"Update security group information\")"},{"line_number":220,"context_line":"        for sg_id, sg_rule in security_groups.items():"},{"line_number":221,"context_line":"            self.firewall.update_security_group_rules(sg_id, sg_rule)"},{"line_number":222,"context_line":"        for remote_sg_id, member_ips in security_group_member_ips.items():"},{"line_number":223,"context_line":"            self.firewall.update_security_group_members("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_eaca244e","line":220,"in_reply_to":"fa98f980_ae04d015","updated":"2014-09-02 02:02:38.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"}],"neutron/api/rpc/handlers/securitygroups_rpc.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"52dfbf78df47e2eb47b711b7af39b56e8b4dce71","unresolved":false,"context_lines":[{"line_number":69,"context_line":"          \u0027sg_member_ips\u0027: {sg_id: {\u0027IPv4\u0027: [], \u0027IPv6\u0027: []}}"},{"line_number":70,"context_line":"          \u0027devices\u0027: {device_id: {device_info}}"},{"line_number":71,"context_line":"        }"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":74,"context_line":"        ports \u003d {}"},{"line_number":75,"context_line":"        devices_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":28,"id":"1abeadc6_7dbb9ec3","line":72,"updated":"2014-08-29 23:07:41.000000000","message":"Refactor to avoid code duplication with security_group_rules_for_devices.","commit_id":"b0c311a6384917747669b4cf4fc7bcb118e958dc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                continue"},{"line_number":59,"context_line":"            ports[port[\u0027id\u0027]] \u003d port"},{"line_number":60,"context_line":"        return self.plugin.security_group_rules_for_ports(context, ports)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":63,"context_line":"        \"\"\"Return security group information for requested devices."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_46741d99","line":61,"updated":"2014-09-01 18:24:33.000000000","message":"ServerRpcApiMixin has check_enhanced_rpc_xxxx method.\nThis class needs to have the corresponding method.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d2a522ccaa15e45f52461dd580ad1783efa70d61","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                continue"},{"line_number":59,"context_line":"            ports[port[\u0027id\u0027]] \u003d port"},{"line_number":60,"context_line":"        return self.plugin.security_group_rules_for_ports(context, ports)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":63,"context_line":"        \"\"\"Return security group information for requested devices."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c364424b","line":61,"in_reply_to":"fa98f980_19350fda","updated":"2014-09-02 18:48:58.000000000","message":"Hmm probably that method with it\u0027s exception capture must be moved to the class that makes the check. Which is only one.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                continue"},{"line_number":59,"context_line":"            ports[port[\u0027id\u0027]] \u003d port"},{"line_number":60,"context_line":"        return self.plugin.security_group_rules_for_ports(context, ports)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":63,"context_line":"        \"\"\"Return security group information for requested devices."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_19350fda","line":61,"in_reply_to":"fa98f980_46741d99","updated":"2014-09-01 23:02:46.000000000","message":"It\u0027s not a method we want to expose, just an internal method in the agent to determine if \"security_group_info_for_devices\" is present, if the call fails with a version error, then we just call the old one.\n\nWe shouldn\u0027t be exposing the method here. Or am I missing something?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        :params devices: list of devices"},{"line_number":66,"context_line":"        :returns:"},{"line_number":67,"context_line":"        ports{"},{"line_number":68,"context_line":"          \u0027security_groups\u0027: {sg_id: [rule1, rule2]}"},{"line_number":69,"context_line":"          \u0027sg_member_ips\u0027: {sg_id: {\u0027IPv4\u0027: [], \u0027IPv6\u0027: []}}"},{"line_number":70,"context_line":"          \u0027devices\u0027: {device_id: {device_info}}"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_d557e700","line":67,"updated":"2014-09-01 14:34:15.000000000","message":"ports -\u003e info?","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        :params devices: list of devices"},{"line_number":66,"context_line":"        :returns:"},{"line_number":67,"context_line":"        ports{"},{"line_number":68,"context_line":"          \u0027security_groups\u0027: {sg_id: [rule1, rule2]}"},{"line_number":69,"context_line":"          \u0027sg_member_ips\u0027: {sg_id: {\u0027IPv4\u0027: [], \u0027IPv6\u0027: []}}"},{"line_number":70,"context_line":"          \u0027devices\u0027: {device_id: {device_info}}"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_a5084d92","line":67,"in_reply_to":"fa98f980_d557e700","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"0a74358c54bacbadc463cacbc135073acf58092b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"          \u0027devices\u0027: {device_id: {device_info}}"},{"line_number":71,"context_line":"        }"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":74,"context_line":"        ports \u003d {}"},{"line_number":75,"context_line":"        devices_info \u003d {}"},{"line_number":76,"context_line":"        for device in devices:"}],"source_content_type":"text/x-python","patch_set":30,"id":"1abeadc6_1bbd4db1","line":73,"updated":"2014-09-01 18:06:58.000000000","message":"I will refactor this to avoid code duplication with above.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"          \u0027devices\u0027: {device_id: {device_info}}"},{"line_number":71,"context_line":"        }"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":74,"context_line":"        ports \u003d {}"},{"line_number":75,"context_line":"        devices_info \u003d {}"},{"line_number":76,"context_line":"        for device in devices:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_e0cec3b3","line":73,"in_reply_to":"1abeadc6_1bbd4db1","updated":"2014-09-02 02:02:38.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":74,"context_line":"        ports \u003d {}"},{"line_number":75,"context_line":"        devices_info \u003d {}"},{"line_number":76,"context_line":"        for device in devices:"},{"line_number":77,"context_line":"            port \u003d self.plugin.get_port_from_device(device)"},{"line_number":78,"context_line":"            if not port:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_2e5b8055","line":75,"updated":"2014-09-01 14:34:15.000000000","message":"Seeing ports var with structure \"ports: {\u0027devices\u0027: {\u0027port_id\u0027: port}}\" is really confusing both here and inside security_group_info_for_ports(). Consider:\n        ports \u003d {}\n        for device in devices:\n            port \u003d self.plugin.get_port_from_device(device)\n            if not port:\n                continue\n            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):\n                continue\n            ports[port[\u0027id\u0027]] \u003d port\n        return self.plugin.security_group_info_for_ports(context, ports)","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":74,"context_line":"        ports \u003d {}"},{"line_number":75,"context_line":"        devices_info \u003d {}"},{"line_number":76,"context_line":"        for device in devices:"},{"line_number":77,"context_line":"            port \u003d self.plugin.get_port_from_device(device)"},{"line_number":78,"context_line":"            if not port:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_591317b8","line":75,"in_reply_to":"fa98f980_2e5b8055","updated":"2014-09-01 23:02:46.000000000","message":"Hmm, yes a refactor here won\u0027t do bad.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":74,"context_line":"        ports \u003d {}"},{"line_number":75,"context_line":"        devices_info \u003d {}"},{"line_number":76,"context_line":"        for device in devices:"},{"line_number":77,"context_line":"            port \u003d self.plugin.get_port_from_device(device)"},{"line_number":78,"context_line":"            if not port:"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_c0cb7fa3","line":75,"in_reply_to":"fa98f980_2e5b8055","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                continue"},{"line_number":80,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":81,"context_line":"                continue"},{"line_number":82,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":83,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":84,"context_line":"        return self.plugin.security_group_info_for_ports(context, ports)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_6bce4f85","line":82,"updated":"2014-09-01 18:24:33.000000000","message":"L.76-82 is exactly same as L.53-59. Consider sharing the code to clarify the logic.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                continue"},{"line_number":80,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":81,"context_line":"                continue"},{"line_number":82,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":83,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":84,"context_line":"        return self.plugin.security_group_info_for_ports(context, ports)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_a09f5bb3","line":82,"in_reply_to":"fa98f980_39b57331","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                continue"},{"line_number":80,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":81,"context_line":"                continue"},{"line_number":82,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":83,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":84,"context_line":"        return self.plugin.security_group_info_for_ports(context, ports)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_39b57331","line":82,"in_reply_to":"fa98f980_6bce4f85","updated":"2014-09-01 23:02:46.000000000","message":"I agree.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"ac9c4892456168e5fba0eac076141abbe69c5ef4","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        devices_info \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":77,"context_line":"        sg_info \u003d {}"},{"line_number":78,"context_line":"        sg_info[\u0027devices\u0027] \u003d self._get_devices_info(devices_info)"},{"line_number":79,"context_line":"        return self.plugin.security_group_info_for_ports(context, sg_info)"}],"source_content_type":"text/x-python","patch_set":31,"id":"fa98f980_ee1dc667","line":79,"updated":"2014-09-02 08:22:43.000000000","message":"I believe it\u0027s simper if we just pass device_info to the next call,\nand then the next call builds the sg_info dictionary with [\u0027devices\u0027] and then adds the rest.","commit_id":"4f1cd7de3b43e1c4cb6c31ec7798758d0d6e4e49"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d09ca6e195facc8e42c4971fc3b0dabbf49c372b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        devices_info \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":77,"context_line":"        sg_info \u003d {}"},{"line_number":78,"context_line":"        sg_info[\u0027devices\u0027] \u003d self._get_devices_info(devices_info)"},{"line_number":79,"context_line":"        return self.plugin.security_group_info_for_ports(context, sg_info)"}],"source_content_type":"text/x-python","patch_set":31,"id":"fa98f980_4986cc66","line":79,"in_reply_to":"fa98f980_ee1dc667","updated":"2014-09-02 08:36:33.000000000","message":"+1, also given the security_group_info_for_ports() name it would be more clear to name the var \u0027ports\u0027 (mapping port_id to port dict)","commit_id":"4f1cd7de3b43e1c4cb6c31ec7798758d0d6e4e49"},{"author":{"_account_id":13705,"name":"Felipe Alfaro Solana","email":"felipe.alfaro@gmail.com","username":"falfaro"},"change_message_id":"2e46beaa37086453494bd416b3472f8f2adfe92e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        :params devices: list of devices"},{"line_number":59,"context_line":"        :returns: port correspond to the devices with security group rules"},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        devices_info \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":62,"context_line":"        ports \u003d self._get_devices_info(devices_info)"},{"line_number":63,"context_line":"        return self.plugin.security_group_rules_for_ports(context, ports)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_17532618","line":61,"updated":"2014-10-21 07:11:37.000000000","message":"What happens if \u0027devices\u0027 is not a key to \"kwargs\"? I guess this will throw an non-handled \u0027NoneType\u0027 object is not iterable exception inside the call to _get_devices_info. If \u0027devices\u0027 is always guaranteed to by a key in the \"kwargs\" dict, please rewrite this line as:\n\ndevices_info \u003d kwargs[\u0027devices\u0027]\n\ninstead, to explicitly state that.","commit_id":"4253887a86bb10e57a8a4fc73c40ddeaf1e623fc"},{"author":{"_account_id":9911,"name":"Wei Wang","email":"wangwei@unitedstack.com","username":"DamonWang"},"change_message_id":"f19c0d236160ed9a7a9c2ce0dba7779a6f3ac1d6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        :params devices: list of devices"},{"line_number":59,"context_line":"        :returns: port correspond to the devices with security group rules"},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        devices_info \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":62,"context_line":"        ports \u003d self._get_devices_info(devices_info)"},{"line_number":63,"context_line":"        return self.plugin.security_group_rules_for_ports(context, ports)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5a890539_69232556","line":61,"in_reply_to":"9aa7fdbe_17532618","updated":"2014-11-17 06:20:03.000000000","message":"dict.get(\u0027key\u0027) will return \u0027None\u0027, instead of dict[\u0027key\u0027] will throw a exception.","commit_id":"4253887a86bb10e57a8a4fc73c40ddeaf1e623fc"}],"neutron/db/securitygroups_rpc_base.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"},{"line_number":162,"context_line":"        :returns: port correspond to the devices with security group"},{"line_number":163,"context_line":"        information"},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":166,"context_line":"        ports \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_efdfb764","line":163,"updated":"2014-08-06 12:28:08.000000000","message":"I would elaborate the \u0027returns\u0027 a bit.\n\nReturns a dictionary with X,Y,Z ...","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"},{"line_number":162,"context_line":"        :returns: port correspond to the devices with security group"},{"line_number":163,"context_line":"        information"},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        devices \u003d kwargs.get(\u0027devices\u0027)"},{"line_number":166,"context_line":"        ports \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_806368dd","line":163,"in_reply_to":"baada198_efdfb764","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":182,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":183,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":184,"context_line":"        # replace it"},{"line_number":185,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":186,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":187,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0f286b35","line":184,"updated":"2014-08-06 12:28:08.000000000","message":"replace it -\u003e \"to replace it\"","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":182,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":183,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":184,"context_line":"        # replace it"},{"line_number":185,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":186,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":187,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_209c5cbf","line":184,"in_reply_to":"baada198_0f286b35","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            remote_gid \u003d rule_in_db.get(\u0027remote_group_id\u0027)"},{"line_number":189,"context_line":"            security_group_id \u003d rule_in_db.get(\u0027security_group_id\u0027)"},{"line_number":190,"context_line":"            ethertype \u003d rule_in_db[\u0027ethertype\u0027]"},{"line_number":191,"context_line":"            if source_sgs not in ports[\u0027devices\u0027][port_id].keys():"},{"line_number":192,"context_line":"                ports[\u0027devices\u0027][port_id][source_sgs] \u003d []"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            if remote_gid:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_6fde4740","line":191,"updated":"2014-08-06 12:28:08.000000000","message":"\u0027.keys()\u0027 not needed and has performance penalty.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            remote_gid \u003d rule_in_db.get(\u0027remote_group_id\u0027)"},{"line_number":189,"context_line":"            security_group_id \u003d rule_in_db.get(\u0027security_group_id\u0027)"},{"line_number":190,"context_line":"            ethertype \u003d rule_in_db[\u0027ethertype\u0027]"},{"line_number":191,"context_line":"            if source_sgs not in ports[\u0027devices\u0027][port_id].keys():"},{"line_number":192,"context_line":"                ports[\u0027devices\u0027][port_id][source_sgs] \u003d []"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            if remote_gid:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_40a150f6","line":191,"in_reply_to":"baada198_6fde4740","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            if remote_gid:"},{"line_number":195,"context_line":"                if (remote_gid not in ports[\u0027devices\u0027][port_id][source_sgs]):"},{"line_number":196,"context_line":"                    ports[\u0027devices\u0027][port_id][source_sgs].append(remote_gid)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                if remote_gid not in remote_security_group_info.keys():"},{"line_number":199,"context_line":"                    remote_security_group_info[remote_gid] \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_cfa8337b","line":196,"updated":"2014-08-06 12:28:08.000000000","message":"I don\u0027t understand that last if, what\u0027s the reasoning/purpose? Thank you.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"15b07f101bcb5cccb850521a840a2f6e110c87b9","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            if remote_gid:"},{"line_number":195,"context_line":"                if (remote_gid not in ports[\u0027devices\u0027][port_id][source_sgs]):"},{"line_number":196,"context_line":"                    ports[\u0027devices\u0027][port_id][source_sgs].append(remote_gid)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                if remote_gid not in remote_security_group_info.keys():"},{"line_number":199,"context_line":"                    remote_security_group_info[remote_gid] \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0c5a1c51","line":196,"in_reply_to":"baada198_cfa8337b","updated":"2014-08-07 02:40:20.000000000","message":"which if do you mean, this \nif (remote_gid not in ports[\u0027devices\u0027][port_id][source_sgs]):\nor this:\nif ethertype not in remote_security_group_info[remote_gid]:","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                if (remote_gid not in ports[\u0027devices\u0027][port_id][source_sgs]):"},{"line_number":196,"context_line":"                    ports[\u0027devices\u0027][port_id][source_sgs].append(remote_gid)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                if remote_gid not in remote_security_group_info.keys():"},{"line_number":199,"context_line":"                    remote_security_group_info[remote_gid] \u003d {}"},{"line_number":200,"context_line":"                if (ethertype"},{"line_number":201,"context_line":"                    not in remote_security_group_info[remote_gid].keys()):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_cfbf53aa","line":198,"updated":"2014-08-06 12:28:08.000000000","message":".keys() not needed :)","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                if (remote_gid not in ports[\u0027devices\u0027][port_id][source_sgs]):"},{"line_number":196,"context_line":"                    ports[\u0027devices\u0027][port_id][source_sgs].append(remote_gid)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                if remote_gid not in remote_security_group_info.keys():"},{"line_number":199,"context_line":"                    remote_security_group_info[remote_gid] \u003d {}"},{"line_number":200,"context_line":"                if (ethertype"},{"line_number":201,"context_line":"                    not in remote_security_group_info[remote_gid].keys()):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_80aa88d1","line":198,"in_reply_to":"baada198_cfbf53aa","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                if remote_gid not in remote_security_group_info.keys():"},{"line_number":199,"context_line":"                    remote_security_group_info[remote_gid] \u003d {}"},{"line_number":200,"context_line":"                if (ethertype"},{"line_number":201,"context_line":"                    not in remote_security_group_info[remote_gid].keys()):"},{"line_number":202,"context_line":"                    remote_security_group_info[remote_gid][ethertype] \u003d []"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            direction \u003d rule_in_db[\u0027direction\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4fe343d8","line":201,"updated":"2014-08-06 12:28:08.000000000","message":".keys() not needed","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                if remote_gid not in remote_security_group_info.keys():"},{"line_number":199,"context_line":"                    remote_security_group_info[remote_gid] \u003d {}"},{"line_number":200,"context_line":"                if (ethertype"},{"line_number":201,"context_line":"                    not in remote_security_group_info[remote_gid].keys()):"},{"line_number":202,"context_line":"                    remote_security_group_info[remote_gid][ethertype] \u003d []"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            direction \u003d rule_in_db[\u0027direction\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c0b48038","line":201,"in_reply_to":"baada198_4fe343d8","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            direction \u003d rule_in_db[\u0027direction\u0027]"},{"line_number":205,"context_line":"            rule_dict \u003d {"},{"line_number":206,"context_line":"                \u0027security_group_id\u0027: rule_in_db[\u0027security_group_id\u0027],"},{"line_number":207,"context_line":"                \u0027direction\u0027: direction,"},{"line_number":208,"context_line":"                \u0027ethertype\u0027: ethertype}"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_5a0a1f21","line":206,"updated":"2014-08-06 12:28:08.000000000","message":"security_group_id is redundant with the fact that it will be \nunder the [\u0027security_groups\u0027][security_group_id]\n\ndo we need it somewhere else?, can we remove it?","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            direction \u003d rule_in_db[\u0027direction\u0027]"},{"line_number":205,"context_line":"            rule_dict \u003d {"},{"line_number":206,"context_line":"                \u0027security_group_id\u0027: rule_in_db[\u0027security_group_id\u0027],"},{"line_number":207,"context_line":"                \u0027direction\u0027: direction,"},{"line_number":208,"context_line":"                \u0027ethertype\u0027: ethertype}"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_80f448d1","line":206,"in_reply_to":"baada198_5a0a1f21","updated":"2014-08-06 13:13:39.000000000","message":"yes, it can be removed","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":229,"context_line":"        remote_group_ids \u003d ports[\u0027sg_member_ips\u0027].keys()"},{"line_number":230,"context_line":"        for remote_gid in remote_group_ids:"},{"line_number":231,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":232,"context_line":"            for ip in ips:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_bab41b37","line":229,"updated":"2014-08-06 12:28:08.000000000","message":".keys not needed, you can just do\n\nfor remote_gid in ports[\u0027sg_member_ips\u0027]:\n\nas long as you don\u0027t add new keys to the \u0027sg_member_ips\u0027 dictionary itself, which you don\u0027t.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":229,"context_line":"        remote_group_ids \u003d ports[\u0027sg_member_ips\u0027].keys()"},{"line_number":230,"context_line":"        for remote_gid in remote_group_ids:"},{"line_number":231,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":232,"context_line":"            for ip in ips:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_40223055","line":229,"in_reply_to":"baada198_bab41b37","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            ports[port[\u0027id\u0027]] \u003d port"},{"line_number":156,"context_line":"        return self._security_group_rules_for_ports(context, ports)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":159,"context_line":"        \"\"\"Return security group information for request devices."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_cfc56c3f","line":158,"updated":"2014-08-07 10:39:03.000000000","message":"I tend to think get_security_group_info_for_devices would be a better method name.\n\nThis is just an opinion.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"247b274b7e7e4e41b837810225b81f830a513113","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            ports[port[\u0027id\u0027]] \u003d port"},{"line_number":156,"context_line":"        return self._security_group_rules_for_ports(context, ports)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":159,"context_line":"        \"\"\"Return security group information for request devices."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_9a846c0f","line":158,"in_reply_to":"baada198_a845759c","updated":"2014-08-08 08:26:50.000000000","message":"sounds good to me.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            ports[port[\u0027id\u0027]] \u003d port"},{"line_number":156,"context_line":"        return self._security_group_rules_for_ports(context, ports)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":159,"context_line":"        \"\"\"Return security group information for request devices."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_a845759c","line":158,"in_reply_to":"baada198_cfc56c3f","updated":"2014-08-08 02:02:28.000000000","message":"I agree with you, does anyone have better idea?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        return self._security_group_rules_for_ports(context, ports)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":159,"context_line":"        \"\"\"Return security group information for request devices."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"},{"line_number":162,"context_line":"        :returns:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_0fc0442a","line":159,"updated":"2014-08-07 10:39:03.000000000","message":"request or requested?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        return self._security_group_rules_for_ports(context, ports)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def security_group_info_for_devices(self, context, **kwargs):"},{"line_number":159,"context_line":"        \"\"\"Return security group information for request devices."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :params devices: list of devices"},{"line_number":162,"context_line":"        :returns:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_e8c68d14","line":159,"in_reply_to":"baada198_0fc0442a","updated":"2014-08-08 02:02:28.000000000","message":"Done","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        ports \u003d {}"},{"line_number":171,"context_line":"        devices_info \u003d {}"},{"line_number":172,"context_line":"        for device in devices:"},{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_8fe374d7","line":173,"updated":"2014-08-07 10:39:03.000000000","message":"What would be a situation where we have a device but not a port?\n\nIt seems like an error condition which should be logged at least.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        ports \u003d {}"},{"line_number":171,"context_line":"        devices_info \u003d {}"},{"line_number":172,"context_line":"        for device in devices:"},{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_686efdff","line":173,"in_reply_to":"baada198_8fe374d7","updated":"2014-08-08 02:02:28.000000000","message":"when a port is deleted from neutron server, but the l2 agent does not receive the notify message","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4f5cfc80","line":176,"updated":"2014-08-07 10:39:03.000000000","message":"Can you explain the reason why these ports are being skipped?\nI seem to recall some \u0027service\u0027 ports should not have security groups enforced, so this is why you\u0027re doing that.\n\nHowever, device_owner in the neutron API is a tenant-controlled attribute and I\u0027m not sure what could happen if a tenant artificially sets network:something as device_owner on its ports.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"247b274b7e7e4e41b837810225b81f830a513113","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1ac69c4a","line":176,"in_reply_to":"baada198_28440572","updated":"2014-08-08 08:26:50.000000000","message":"This is how it\u0027s done in the old rpc API, I don\u0027t know the exact reasoning, but we may not want to change the behavior.\n\nMay be it\u0027s because we don\u0027t want to make the l2 agent set security group rules in dhcp or qrouter, and those have their own iptable rules?.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_28440572","line":176,"in_reply_to":"baada198_4f5cfc80","updated":"2014-08-08 02:02:28.000000000","message":"I am not sure whether should to consider this situation, what do other reviewer think","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":180,"context_line":"        return self._security_group_info_for_ports(context, ports)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _security_group_info_for_ports(self, context, ports):"},{"line_number":183,"context_line":"        rules_in_db \u003d self._select_rules_for_ports(context, ports[\u0027devices\u0027])"},{"line_number":184,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_6fed408d","line":182,"updated":"2014-08-07 10:39:03.000000000","message":"if you feel it\u0027s the case, prepend with _get","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"247b274b7e7e4e41b837810225b81f830a513113","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":180,"context_line":"        return self._security_group_info_for_ports(context, ports)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _security_group_info_for_ports(self, context, ports):"},{"line_number":183,"context_line":"        rules_in_db \u003d self._select_rules_for_ports(context, ports[\u0027devices\u0027])"},{"line_number":184,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_badcd018","line":182,"in_reply_to":"baada198_485a1952","updated":"2014-08-08 08:26:50.000000000","message":"+1","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":180,"context_line":"        return self._security_group_info_for_ports(context, ports)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _security_group_info_for_ports(self, context, ports):"},{"line_number":183,"context_line":"        rules_in_db \u003d self._select_rules_for_ports(context, ports[\u0027devices\u0027])"},{"line_number":184,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_485a1952","line":182,"in_reply_to":"baada198_6fed408d","updated":"2014-08-08 02:02:28.000000000","message":"yes, I agree with you","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":186,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":187,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":188,"context_line":"        #to replace it"},{"line_number":189,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":190,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":191,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_6f9460e7","line":188,"updated":"2014-08-07 10:39:03.000000000","message":"Is the above comment just about replacing a literal?\nIf yes, I would recommend go to the neutron security group extension and add a constant for it there. I would be ok with this change.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"2240d5a9310ff5651217e9481e56923b9a13caa3","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":186,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":187,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":188,"context_line":"        #to replace it"},{"line_number":189,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":190,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":191,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_3056e0cd","line":188,"in_reply_to":"baada198_5a1c94c2","updated":"2014-08-11 10:57:17.000000000","message":"yeah, why not?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":186,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":187,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":188,"context_line":"        #to replace it"},{"line_number":189,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":190,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":191,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_e8304d08","line":188,"in_reply_to":"baada198_6f9460e7","updated":"2014-08-08 02:02:28.000000000","message":"security_group_source_groups is too long, it will cause the length of the line is more than 80 charactor, I have no idea to resolve it, do you think this need to add a constant for it?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"247b274b7e7e4e41b837810225b81f830a513113","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":186,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":187,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":188,"context_line":"        #to replace it"},{"line_number":189,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":190,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":191,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_5a1c94c2","line":188,"in_reply_to":"baada198_e8304d08","updated":"2014-08-08 08:26:50.000000000","message":"@salvatore, do you mean adding the constant\n\nSOURCE_SGS \u003d \u0027security_group_source_groups\u0027\n\nin:\n\nneutron/extensions/securitygroup.py ?","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"28347c4b9c5f41d85a7c6961e68678b327d9be8f","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":232,"context_line":"        for remote_gid in ports[\u0027sg_member_ips\u0027]:"},{"line_number":233,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":234,"context_line":"            for ip in ips:"},{"line_number":235,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_0f54c420","line":232,"updated":"2014-08-07 10:39:03.000000000","message":"rather than doing a query for every security group id it seem like you can collect all of them and to a single query?\n\nIt would be good if this can be achieved.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"247b274b7e7e4e41b837810225b81f830a513113","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":232,"context_line":"        for remote_gid in ports[\u0027sg_member_ips\u0027]:"},{"line_number":233,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":234,"context_line":"            for ip in ips:"},{"line_number":235,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_ba7850f8","line":232,"in_reply_to":"baada198_083821ed","updated":"2014-08-08 08:26:50.000000000","message":"good optimization.","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"247d859957960197a4896303a2da838779db50b7","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":232,"context_line":"        for remote_gid in ports[\u0027sg_member_ips\u0027]:"},{"line_number":233,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":234,"context_line":"            for ip in ips:"},{"line_number":235,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_083821ed","line":232,"in_reply_to":"baada198_0f54c420","updated":"2014-08-08 02:02:28.000000000","message":"let me try!","commit_id":"4dcc35cf85eee8f7ec3e10b56aa4361f7ab80d77"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b219491f8b02061549849464b26424d02bf1e0ae","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":232,"context_line":"        for remote_gid in ports[\u0027sg_member_ips\u0027]:"},{"line_number":233,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":234,"context_line":"            for ip in ips:"},{"line_number":235,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_c819bf77","line":232,"updated":"2014-08-08 08:33:43.000000000","message":"try to get them all in one query (patchset 5 comments)","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9dde3b2eafcd2b315942951c574a848d520c3508","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return self._get_security_group_member_ips(context, ports)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _get_security_group_member_ips(self, context, ports):"},{"line_number":232,"context_line":"        for remote_gid in ports[\u0027sg_member_ips\u0027]:"},{"line_number":233,"context_line":"            ips \u003d self._select_ips_by_security_group_id(context, remote_gid)"},{"line_number":234,"context_line":"            for ip in ips:"},{"line_number":235,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_870a3476","line":232,"in_reply_to":"baada198_c819bf77","updated":"2014-08-09 03:57:27.000000000","message":"ok, I will modify it in next patch","commit_id":"47d1ad73dc2b0b56c83477aff33435f1d6337635"},{"author":{"_account_id":8282,"name":"Dong Liu","email":"willowd878@gmail.com","username":"liudong"},"change_message_id":"6af9dee56811a370d8af28cd05b61453e7f39bcc","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":186,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":187,"context_line":"        #the security_group_source_groups is too long, so use source_sgs"},{"line_number":188,"context_line":"        #to replace it"},{"line_number":189,"context_line":"        source_sgs \u003d \u0027security_group_source_groups\u0027"},{"line_number":190,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":191,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_5c445f9e","line":188,"updated":"2014-08-11 02:26:57.000000000","message":"Need a space after #.","commit_id":"2e4d3d82c8a80139549fb02fa5e12c8dfdf28d6c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f60b4fdcfee88865935f68a0182c6bf7129d42ee","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        for device in devices:"},{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_79c76365","line":175,"updated":"2014-08-11 12:33:37.000000000","message":"I\u0027ve read your comment on patch set 5. I still think it might be good to log here, with WARN severity. You also pointed out this could happen in case of missed notifications, which is a symptom of an error condition. Logging it would probably help us doing post-mortems from logs in case of failures.","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        for device in devices:"},{"line_number":173,"context_line":"            port \u003d self.get_port_from_device(device)"},{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9aa98227","line":175,"in_reply_to":"baada198_79c76365","updated":"2014-08-11 15:04:44.000000000","message":"agree","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f60b4fdcfee88865935f68a0182c6bf7129d42ee","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":180,"context_line":"        return self._get_security_group_info_for_ports(context, ports)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_79e043f8","line":177,"updated":"2014-08-11 12:33:37.000000000","message":"I read your comments regarding what to do with network owned ports.\nI agree that we should consider this issue separately and keep this piece of code as it is for this patch.","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7af59ef0c4712d3703f36b3b8913b526c352aade","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            if not port:"},{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            if port[\u0027device_owner\u0027].startswith(\u0027network:\u0027):"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            devices_info[port[\u0027id\u0027]] \u003d port"},{"line_number":179,"context_line":"        ports[\u0027devices\u0027] \u003d devices_info"},{"line_number":180,"context_line":"        return self._get_security_group_info_for_ports(context, ports)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9a70a2db","line":177,"in_reply_to":"baada198_79e043f8","updated":"2014-08-11 15:04:44.000000000","message":"thanks","commit_id":"5c095b7244e0ea556a5256257e66b02d41509466"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"424534b87b8f4549adb77b2af39396f282440d3d","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":186,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":187,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":188,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":189,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"},{"line_number":190,"context_line":"            remote_gid \u003d rule_in_db.get(\u0027remote_group_id\u0027)"},{"line_number":191,"context_line":"            security_group_id \u003d rule_in_db.get(\u0027security_group_id\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_6147d377","line":188,"updated":"2014-08-28 09:23:09.000000000","message":"why did you roll back the source_sgs change?","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f944c75076a38470042fb765e623bd6f11da4bab","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":186,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":187,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":188,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":189,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"},{"line_number":190,"context_line":"            remote_gid \u003d rule_in_db.get(\u0027remote_group_id\u0027)"},{"line_number":191,"context_line":"            security_group_id \u003d rule_in_db.get(\u0027security_group_id\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_b4c5a75d","line":188,"in_reply_to":"1abeadc6_6147d377","updated":"2014-08-28 09:36:18.000000000","message":"some reviewer do not agree define \u0027source_sgs \u0027 to replace \"security_group_source_groups\", so I modify it","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"fa9af5a64ffab5052cfb23c7ff7dd9cb6bc7720f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":186,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":187,"context_line":"        remote_security_group_info \u003d {}"},{"line_number":188,"context_line":"        for (binding, rule_in_db) in rules_in_db:"},{"line_number":189,"context_line":"            port_id \u003d binding[\u0027port_id\u0027]"},{"line_number":190,"context_line":"            remote_gid \u003d rule_in_db.get(\u0027remote_group_id\u0027)"},{"line_number":191,"context_line":"            security_group_id \u003d rule_in_db.get(\u0027security_group_id\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_88708c73","line":188,"in_reply_to":"1abeadc6_b4c5a75d","updated":"2014-08-28 11:27:37.000000000","message":"Ah, ok...\n\nI don\u0027t agree with him, but it\u0027s a nit, so I wouldn\u0027t spend more time at that unless there is an strong reason.\n\nThank you shihanzhang.","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"1cce456db021592bd056b1eebb3ace352633c295","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        for sg_id, member_ips in ips.items():"},{"line_number":237,"context_line":"            for ip in member_ips:"},{"line_number":238,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"},{"line_number":239,"context_line":"                if ip_addr.version \u003d\u003d 4:"},{"line_number":240,"context_line":"                    ethertype \u003d \u0027IPv4\u0027"},{"line_number":241,"context_line":"                else:"},{"line_number":242,"context_line":"                    ethertype \u003d \u0027IPv6\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_fb9b8370","line":239,"updated":"2014-08-28 13:57:00.000000000","message":"conditional not needed\n\nethertype \u003d \u0027IPv%d\u0027 % ip_addr.version","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"695c47aa12ddbbe0ed71748cf5305c24a9aafb68","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        for sg_id, member_ips in ips.items():"},{"line_number":237,"context_line":"            for ip in member_ips:"},{"line_number":238,"context_line":"                ip_addr \u003d netaddr.IPAddress(ip)"},{"line_number":239,"context_line":"                if ip_addr.version \u003d\u003d 4:"},{"line_number":240,"context_line":"                    ethertype \u003d \u0027IPv4\u0027"},{"line_number":241,"context_line":"                else:"},{"line_number":242,"context_line":"                    ethertype \u003d \u0027IPv6\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_dc3ebdb7","line":239,"in_reply_to":"1abeadc6_fb9b8370","updated":"2014-08-28 14:49:15.000000000","message":"Ack :)","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2cba889b843a79e7e4ca772c649a79c7d90a8dd9","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                context, port.get(ext_sg.SECURITYGROUPS))"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def security_group_info_for_ports(self, context, ports):"},{"line_number":153,"context_line":"        rules_in_db \u003d self._select_rules_for_ports(context, ports[\u0027devices\u0027])"},{"line_number":154,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":155,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":156,"context_line":"        remote_security_group_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_691d8266","line":153,"updated":"2014-09-01 14:34:15.000000000","message":"please see my previos comment on confusing ports dict structure.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c27207929a194921d3635ce5bb0b0ed5ca9d442","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                context, port.get(ext_sg.SECURITYGROUPS))"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def security_group_info_for_ports(self, context, ports):"},{"line_number":153,"context_line":"        rules_in_db \u003d self._select_rules_for_ports(context, ports[\u0027devices\u0027])"},{"line_number":154,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":155,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":156,"context_line":"        remote_security_group_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_79c0dbe0","line":153,"in_reply_to":"fa98f980_691d8266","updated":"2014-09-01 23:02:46.000000000","message":"+1","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                context, port.get(ext_sg.SECURITYGROUPS))"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def security_group_info_for_ports(self, context, ports):"},{"line_number":153,"context_line":"        rules_in_db \u003d self._select_rules_for_ports(context, ports[\u0027devices\u0027])"},{"line_number":154,"context_line":"        ports[\u0027security_groups\u0027] \u003d {}"},{"line_number":155,"context_line":"        ports[\u0027sg_member_ips\u0027] \u003d {}"},{"line_number":156,"context_line":"        remote_security_group_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_25929d9f","line":153,"in_reply_to":"fa98f980_79c0dbe0","updated":"2014-09-02 02:02:38.000000000","message":"agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"}],"neutron/tests/unit/test_security_groups_rpc.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        cfg.CONF.set_default(\u0027firewall_driver\u0027,"},{"line_number":936,"context_line":"                             \u0027neutron.agent.firewall.NoopFirewallDriver\u0027,"},{"line_number":937,"context_line":"                             group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":938,"context_line":"        cfg.CONF.set_default(\u0027enable_enhanced_rpc\u0027,"},{"line_number":939,"context_line":"                             False,"},{"line_number":940,"context_line":"                             group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":941,"context_line":"        self.agent \u003d sg_rpc.SecurityGroupAgentRpcMixin()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_dad38fff","line":938,"updated":"2014-08-06 12:28:08.000000000","message":"Can you refactor this test Case so we can pass it with enabled \u0026 disabled ?","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":935,"context_line":"        cfg.CONF.set_default(\u0027firewall_driver\u0027,"},{"line_number":936,"context_line":"                             \u0027neutron.agent.firewall.NoopFirewallDriver\u0027,"},{"line_number":937,"context_line":"                             group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":938,"context_line":"        cfg.CONF.set_default(\u0027enable_enhanced_rpc\u0027,"},{"line_number":939,"context_line":"                             False,"},{"line_number":940,"context_line":"                             group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":941,"context_line":"        self.agent \u003d sg_rpc.SecurityGroupAgentRpcMixin()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a0c6ac67","line":938,"in_reply_to":"baada198_dad38fff","updated":"2014-08-06 13:13:39.000000000","message":"let me try, can you give me some help","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b4d36418ae28f7b5593365ab900a1c7aa4e3fa89","unresolved":false,"context_lines":[{"line_number":1883,"context_line":"            self.FIREWALL_DRIVER,"},{"line_number":1884,"context_line":"            group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":1885,"context_line":""},{"line_number":1886,"context_line":"        set_enhanced_rpc_enable(False)"},{"line_number":1887,"context_line":"        self.agent \u003d sg_rpc.SecurityGroupAgentRpcMixin()"},{"line_number":1888,"context_line":"        self.agent.context \u003d None"},{"line_number":1889,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_3a080b80","line":1886,"updated":"2014-08-06 12:28:08.000000000","message":"Same here.","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"753c0fb321d5ea2476b32c0d29b16c396bd0c2fe","unresolved":false,"context_lines":[{"line_number":1883,"context_line":"            self.FIREWALL_DRIVER,"},{"line_number":1884,"context_line":"            group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":1885,"context_line":""},{"line_number":1886,"context_line":"        set_enhanced_rpc_enable(False)"},{"line_number":1887,"context_line":"        self.agent \u003d sg_rpc.SecurityGroupAgentRpcMixin()"},{"line_number":1888,"context_line":"        self.agent.context \u003d None"},{"line_number":1889,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_20a29cad","line":1886,"in_reply_to":"baada198_3a080b80","updated":"2014-08-06 13:13:39.000000000","message":"Done","commit_id":"7c18bb4e8713e0b390864fa48e1d025fafbe4398"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d5a66529053f7a5f39d9f762ec1e4403a8d0601a","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                         \u0027NoopFirewallDriver\u0027)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"class SecurityGroupAgentRpcTestCase(base.BaseTestCase):"},{"line_number":930,"context_line":"    def setUp(self, defer_refresh_firewall\u003dFalse):"},{"line_number":931,"context_line":"        super(SecurityGroupAgentRpcTestCase, self).setUp()"},{"line_number":932,"context_line":"        cfg.CONF.set_default(\u0027firewall_driver\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_218826c2","line":929,"updated":"2014-08-12 12:47:35.000000000","message":"My advice here, to take full advantage of RPC testing, leave the SecurityGroupAgentRpcTestCase like it is now, but add the set_enhanced_rpc_enable(False)\n\nThen extend this class with inheritance in a second one\n\nclass SecurityGroupAgentEnhancedRpcTestCase(SecurityGroupAgentRpcTestCase):\n\n    def setUp(...):\n        super(SecurityGroupAgentEnhancedRpcTestCase,self).setUp()      \n        \n         extra stuff\n\n\n   def extra_test_case1...\n   \n   def extra_test_case2\n\n\nThis way, we get the new RPC tested with the old unit tests (all), and also the whole old RPC keeps tested.\n\n\nNot sure if there are specific RPC tests that won\u0027t work for the new method.\n\n\nBtw, this unit tested will be extended with funcional testing on a second patchset, \nI\u0027m waiting for this test to be ready, to base my work on it: \n\nhttps://review.openstack.org/#/c/109860/\n\nWhile I\u0027m writing some more functional testing.","commit_id":"a3a59e94a2d5a44209f9b92b4d9d7ae83688f279"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"99245c79ce40d42710f456fb6c4d3e716101391f","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                         \u0027NoopFirewallDriver\u0027)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"class SecurityGroupAgentRpcTestCase(base.BaseTestCase):"},{"line_number":930,"context_line":"    def setUp(self, defer_refresh_firewall\u003dFalse):"},{"line_number":931,"context_line":"        super(SecurityGroupAgentRpcTestCase, self).setUp()"},{"line_number":932,"context_line":"        cfg.CONF.set_default(\u0027firewall_driver\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_e5717de1","line":929,"in_reply_to":"baada198_218826c2","updated":"2014-08-15 09:33:07.000000000","message":"thanks for your suggestion, I agree with you!","commit_id":"a3a59e94a2d5a44209f9b92b4d9d7ae83688f279"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"89ac03211ff4b3cf0da9ee61d6604210d2b3bae2","unresolved":false,"context_lines":[{"line_number":932,"context_line":"        cfg.CONF.set_default(\u0027firewall_driver\u0027,"},{"line_number":933,"context_line":"                             \u0027neutron.agent.firewall.NoopFirewallDriver\u0027,"},{"line_number":934,"context_line":"                             group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":935,"context_line":"        set_enhanced_rpc_enable(False)"},{"line_number":936,"context_line":"        self.agent \u003d sg_rpc.SecurityGroupAgentRpcMixin()"},{"line_number":937,"context_line":"        self.agent.context \u003d None"},{"line_number":938,"context_line":"        mock.patch(\u0027neutron.agent.linux.iptables_manager\u0027).start()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_4dd7bded","line":935,"updated":"2014-08-15 08:17:05.000000000","message":"I agree this looks a bit strange, you can do as Miguel suggests maybe.","commit_id":"a3a59e94a2d5a44209f9b92b4d9d7ae83688f279"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"99245c79ce40d42710f456fb6c4d3e716101391f","unresolved":false,"context_lines":[{"line_number":932,"context_line":"        cfg.CONF.set_default(\u0027firewall_driver\u0027,"},{"line_number":933,"context_line":"                             \u0027neutron.agent.firewall.NoopFirewallDriver\u0027,"},{"line_number":934,"context_line":"                             group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":935,"context_line":"        set_enhanced_rpc_enable(False)"},{"line_number":936,"context_line":"        self.agent \u003d sg_rpc.SecurityGroupAgentRpcMixin()"},{"line_number":937,"context_line":"        self.agent.context \u003d None"},{"line_number":938,"context_line":"        mock.patch(\u0027neutron.agent.linux.iptables_manager\u0027).start()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_057839c3","line":935,"in_reply_to":"7ac7a964_4dd7bded","updated":"2014-08-15 09:33:07.000000000","message":"agree","commit_id":"a3a59e94a2d5a44209f9b92b4d9d7ae83688f279"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"5003dd4b502e9f62f25c04c48e3ed0f9ef2a9dbb","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"        super(SecurityGroupAgentEnhancedRpcTestCase,self).setUp("},{"line_number":1028,"context_line":"            defer_refresh_firewall\u003dFalse)"},{"line_number":1029,"context_line":"        set_enhanced_rpc_enable(True)"},{"line_number":1030,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":1031,"context_line":"        fake_devices \u003d {\u0027fake_device\u0027: self.fake_device}"},{"line_number":1032,"context_line":"        fake_sg_info \u003d {"},{"line_number":1033,"context_line":"            \u0027security_groups\u0027: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_0b6a431a","line":1030,"updated":"2014-08-18 08:55:40.000000000","message":"self.agent.plugin_rpc \u003d rpc\n\nYou miss that ^ ,\n\nprobably is the reason why the tests are not getting your modified rpc response, and so failing.. I\u0027m going to send a new patchset with that.","commit_id":"afad8523807787dec9a123be02a6d0be57991918"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"c442c3c3c651232d63fb38c6b70dbf1197479987","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"        super(SecurityGroupAgentEnhancedRpcTestCase,self).setUp("},{"line_number":1028,"context_line":"            defer_refresh_firewall\u003dFalse)"},{"line_number":1029,"context_line":"        set_enhanced_rpc_enable(True)"},{"line_number":1030,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":1031,"context_line":"        fake_devices \u003d {\u0027fake_device\u0027: self.fake_device}"},{"line_number":1032,"context_line":"        fake_sg_info \u003d {"},{"line_number":1033,"context_line":"            \u0027security_groups\u0027: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_2e90ed94","line":1030,"in_reply_to":"1abeadc6_0b6a431a","updated":"2014-08-18 09:05:56.000000000","message":"I sent a new patchset with that corrected, to see what tests don\u0027t work as-is with the enhanced RPC (because they check the mock call order, or anything else, and we need either to fix the tests, or fix the new rpc code).\n\nIn that case, I would\n\nSecurityGroupRPCBase(..)\n\n   def _test_a_common(self):\n   def _test_b_common(self):\n\nSecurityGroupAgentRpcTestCase(SecurityGroupRPCBase)\n\n   def test_a(self):\n       self._test_a_common()\n   \n   def test_b(self):\n       self._test_b_common()\n\n  def test_c_specific(self):\n    ... ...\n\n\nSecurityGroupAgentEnhancedRpcTestCase(SecurityGroupRPCBase)\n\n   def test_a(self):\n       self._test_a_common()\n   \n   def test_b(self):\n       self._test_b_common()\n\n  def test_c_specific(self):\n    ... ...\n\n\n\n\n\nMay be there\u0027s a way to omit SecurityGroupRPCBase from getting it\u0027s \"test_\" function executed, but executed on inheritance, them we\u0027d seave the:\n\n   def test_a(self):\n       self._test_a_common()\n   \n   def test_b(self):\n       self._test_b_common()\n\n\nstuff.\n\n\nThoughts?\n\n\nBest regards,\nand good work!!!","commit_id":"afad8523807787dec9a123be02a6d0be57991918"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b522b95d2327734ce2b839402492bbbd674b78cf","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"            defer_refresh_firewall\u003dFalse)"},{"line_number":1029,"context_line":"        set_enhanced_rpc_enable(True)"},{"line_number":1030,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":1031,"context_line":"        self.agent.plugin_rpc \u003d rpc"},{"line_number":1032,"context_line":"        fake_devices \u003d {\u0027fake_device\u0027: self.fake_device}"},{"line_number":1033,"context_line":"        fake_sg_info \u003d {"},{"line_number":1034,"context_line":"            \u0027security_groups\u0027: {"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_eec35588","line":1031,"updated":"2014-08-18 09:08:44.000000000","message":"I added this patchset with the plugin_rpc fix to earn some time\n\nwe have to see what tests don\u0027t work as-is with the enhanced RPC (because they check the mock call order, or anything else, and we need either to fix the tests, or fix the new rpc code).\n\nIn that case, I would\n\nSecurityGroupRPCBase(..)\n\n   def _test_a_common(self):\n\n   def _test_b_common(self):\n\n\nSecurityGroupAgentRpcTestCase(SecurityGroupRPCBase)\n\n   def test_a(self):\n\n       self._test_a_common()\n\n   \n   def test_b(self):\n\n       self._test_b_common()\n\n\n  def test_c_specific(self):\n\n    ... ...\n\n\n\nSecurityGroupAgentEnhancedRpcTestCase(SecurityGroupRPCBase)\n\n   def test_a(self):\n\n       self._test_a_common()\n   \n\n   def test_b(self):\n\n       self._test_b_common()\n\n  def test_c_specific(self):\n\n    ... ...\n\n\nMay be there\u0027s a way to omit SecurityGroupRPCBase from getting it\u0027s \"test_\" function executed, but executed on inheritance, them we\u0027d seave the:\n\n   def test_a(self):\n\n       self._test_a_common()\n   \n\n   def test_b(self):\n\n       self._test_b_common()\n\nstuff.\n\nThoughts?\n\nBest regards, and good work!!!","commit_id":"1bd0337782a4865b042d6c36f7cefad6e83872b1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2cbb20314b21c6d34f3d14eb07a0bacabd8053af","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"            defer_refresh_firewall\u003dFalse)"},{"line_number":1029,"context_line":"        set_enhanced_rpc_enable(True)"},{"line_number":1030,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":1031,"context_line":"        self.agent.plugin_rpc \u003d rpc"},{"line_number":1032,"context_line":"        fake_devices \u003d {\u0027fake_device\u0027: self.fake_device}"},{"line_number":1033,"context_line":"        fake_sg_info \u003d {"},{"line_number":1034,"context_line":"            \u0027security_groups\u0027: {"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_64d8411e","line":1031,"in_reply_to":"1abeadc6_ae36b801","updated":"2014-08-18 12:31:16.000000000","message":"It should be ok, shihanzhang, but then you may duplicate the tests in SecurityGroupAgentEnhanceRpc to have the same test coverage that SecurityGroupAgentRpcTestCase provides.\n\nOtherwise there\u0027s going to be tests not happening for the new API.","commit_id":"1bd0337782a4865b042d6c36f7cefad6e83872b1"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"9786c20731c7cdbaa8d55ce9d94ce3ade84299c1","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"            defer_refresh_firewall\u003dFalse)"},{"line_number":1029,"context_line":"        set_enhanced_rpc_enable(True)"},{"line_number":1030,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":1031,"context_line":"        self.agent.plugin_rpc \u003d rpc"},{"line_number":1032,"context_line":"        fake_devices \u003d {\u0027fake_device\u0027: self.fake_device}"},{"line_number":1033,"context_line":"        fake_sg_info \u003d {"},{"line_number":1034,"context_line":"            \u0027security_groups\u0027: {"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_ae36b801","line":1031,"in_reply_to":"1abeadc6_eec35588","updated":"2014-08-18 11:42:18.000000000","message":"I think carefully, in next release, we may remove the old rpc, so SecurityGroupAgentEnhancedRpcTestCase should not inhreit from SecurityGroupAgentRpcTestCase, it is more better that SecurityGroupAgentEnhancedRpcTestCase  inhreit  from base.BaseTestCase!","commit_id":"1bd0337782a4865b042d6c36f7cefad6e83872b1"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ba09c6871f0c15f313c19d85f6c5e5c4c9e3750a","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"            defer_refresh_firewall\u003dFalse)"},{"line_number":1029,"context_line":"        set_enhanced_rpc_enable(True)"},{"line_number":1030,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":1031,"context_line":"        self.agent.plugin_rpc \u003d rpc"},{"line_number":1032,"context_line":"        fake_devices \u003d {\u0027fake_device\u0027: self.fake_device}"},{"line_number":1033,"context_line":"        fake_sg_info \u003d {"},{"line_number":1034,"context_line":"            \u0027security_groups\u0027: {"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_545e98ea","line":1031,"in_reply_to":"1abeadc6_eec35588","updated":"2014-08-18 09:57:55.000000000","message":"thanks, I got it, there are also other errors, I will commit as soon as possible","commit_id":"1bd0337782a4865b042d6c36f7cefad6e83872b1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"cb93eebd61f036aeb486840f2263454f336aa0af","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            4,"},{"line_number":152,"context_line":"            \u0027192.168.1.3\u0027)"},{"line_number":153,"context_line":"        self.assertFalse(mock_notifier.called)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_security_group_rules_for_devices_ipv4_ingress(self):"},{"line_number":156,"context_line":"        fake_prefix \u003d FAKE_PREFIX[const.IPv4]"},{"line_number":157,"context_line":"        with self.network() as n:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_8490cf44","line":154,"updated":"2014-08-19 10:07:10.000000000","message":"I\u0027m writting sets of tests (In a separate review dependent on this) that exercise the new rpc.security_group_info_for_devices which is not covered by this tests. (as far as I see, we\u0027re testing the agent side only).","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2bf51a6300f9f520edebafd34e0d318139fe80f6","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            4,"},{"line_number":152,"context_line":"            \u0027192.168.1.3\u0027)"},{"line_number":153,"context_line":"        self.assertFalse(mock_notifier.called)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_security_group_rules_for_devices_ipv4_ingress(self):"},{"line_number":156,"context_line":"        fake_prefix \u003d FAKE_PREFIX[const.IPv4]"},{"line_number":157,"context_line":"        with self.network() as n:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_bd36ba50","line":154,"in_reply_to":"1abeadc6_8490cf44","updated":"2014-08-19 11:31:08.000000000","message":"Done","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"e2b569cc39a5a4a9afdaa9291ec908c772f57f58","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            4,"},{"line_number":152,"context_line":"            \u0027192.168.1.3\u0027)"},{"line_number":153,"context_line":"        self.assertFalse(mock_notifier.called)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_security_group_rules_for_devices_ipv4_ingress(self):"},{"line_number":156,"context_line":"        fake_prefix \u003d FAKE_PREFIX[const.IPv4]"},{"line_number":157,"context_line":"        with self.network() as n:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_8790d144","line":154,"in_reply_to":"1abeadc6_8490cf44","updated":"2014-08-19 10:38:00.000000000","message":"Sorry, you actually *did*, not sure where I was looking at.\n\nChecking if those need to be extended.","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2bf51a6300f9f520edebafd34e0d318139fe80f6","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            4,"},{"line_number":152,"context_line":"            \u0027192.168.1.3\u0027)"},{"line_number":153,"context_line":"        self.assertFalse(mock_notifier.called)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_security_group_rules_for_devices_ipv4_ingress(self):"},{"line_number":156,"context_line":"        fake_prefix \u003d FAKE_PREFIX[const.IPv4]"},{"line_number":157,"context_line":"        with self.network() as n:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_5dee86b5","line":154,"in_reply_to":"1abeadc6_8790d144","updated":"2014-08-19 11:31:08.000000000","message":"I agree to extend these tests","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"cb93eebd61f036aeb486840f2263454f336aa0af","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"                  \u0027port_range_max\u0027: 22},"},{"line_number":2179,"context_line":"                 {\u0027direction\u0027: \u0027egress\u0027,"},{"line_number":2180,"context_line":"                  \u0027ethertype\u0027: const.IPv4}]"},{"line_number":2181,"context_line":"        self.devices4 \u003d {\u0027tap_port1\u0027: self._device(\u0027tap_port1\u0027,"},{"line_number":2182,"context_line":"                                                   \u002710.0.0.3\u0027,"},{"line_number":2183,"context_line":"                                                   \u002712:34:56:78:9a:bc\u0027,"},{"line_number":2184,"context_line":"                                                   [])}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_04faffbc","line":2181,"updated":"2014-08-19 10:07:10.000000000","message":"instead of self.devices4 why not using just self.devices?","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2bf51a6300f9f520edebafd34e0d318139fe80f6","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"                  \u0027port_range_max\u0027: 22},"},{"line_number":2179,"context_line":"                 {\u0027direction\u0027: \u0027egress\u0027,"},{"line_number":2180,"context_line":"                  \u0027ethertype\u0027: const.IPv4}]"},{"line_number":2181,"context_line":"        self.devices4 \u003d {\u0027tap_port1\u0027: self._device(\u0027tap_port1\u0027,"},{"line_number":2182,"context_line":"                                                   \u002710.0.0.3\u0027,"},{"line_number":2183,"context_line":"                                                   \u002712:34:56:78:9a:bc\u0027,"},{"line_number":2184,"context_line":"                                                   [])}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_bd9a3a61","line":2181,"in_reply_to":"1abeadc6_04faffbc","updated":"2014-08-19 11:31:08.000000000","message":"thanks, I will modify it in next patch","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"cb93eebd61f036aeb486840f2263454f336aa0af","unresolved":false,"context_lines":[{"line_number":2182,"context_line":"                                                   \u002710.0.0.3\u0027,"},{"line_number":2183,"context_line":"                                                   \u002712:34:56:78:9a:bc\u0027,"},{"line_number":2184,"context_line":"                                                   [])}"},{"line_number":2185,"context_line":"        self.devices5 \u003d {\u0027security_groups\u0027: {\u0027security_group1\u0027: rule1},"},{"line_number":2186,"context_line":"                         \u0027sg_member_ips\u0027: {"},{"line_number":2187,"context_line":"                             \u0027security_group1\u0027: {"},{"line_number":2188,"context_line":"                                 \u0027IPv4\u0027: [\u002710.0.0.3\u0027], \u0027IPv6\u0027: []}},"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_84060fcd","line":2185,"updated":"2014-08-19 10:07:10.000000000","message":"instead of .devices5 wouldn\u0027t it make more sense to use self.sg_info ?","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2bf51a6300f9f520edebafd34e0d318139fe80f6","unresolved":false,"context_lines":[{"line_number":2182,"context_line":"                                                   \u002710.0.0.3\u0027,"},{"line_number":2183,"context_line":"                                                   \u002712:34:56:78:9a:bc\u0027,"},{"line_number":2184,"context_line":"                                                   [])}"},{"line_number":2185,"context_line":"        self.devices5 \u003d {\u0027security_groups\u0027: {\u0027security_group1\u0027: rule1},"},{"line_number":2186,"context_line":"                         \u0027sg_member_ips\u0027: {"},{"line_number":2187,"context_line":"                             \u0027security_group1\u0027: {"},{"line_number":2188,"context_line":"                                 \u0027IPv4\u0027: [\u002710.0.0.3\u0027], \u0027IPv6\u0027: []}},"}],"source_content_type":"text/x-python","patch_set":13,"id":"1abeadc6_dd9d365b","line":2185,"in_reply_to":"1abeadc6_84060fcd","updated":"2014-08-19 11:31:08.000000000","message":"Done","commit_id":"89aa197be619a5fed601d42495b1fbf03d3db790"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"0ba4230b99e65b9cf0631c8903f1f9bab55200bb","unresolved":false,"context_lines":[{"line_number":433,"context_line":"                        \u0027IPv6\u0027: [],"},{"line_number":434,"context_line":"                    }}"},{"line_number":435,"context_line":"                }"},{"line_number":436,"context_line":"                self.assertEqual(ports_rpc[\u0027security_groups\u0027],"},{"line_number":437,"context_line":"                                 expected[\u0027security_groups\u0027])"},{"line_number":438,"context_line":"                self.assertEqual(ports_rpc[\u0027sg_member_ips\u0027][sg2_id][\u0027IPv4\u0027],"},{"line_number":439,"context_line":"                                 expected[\u0027sg_member_ips\u0027][sg2_id][\u0027IPv4\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_5a58e889","line":436,"updated":"2014-08-21 13:59:57.000000000","message":"nit: expected values should be first, actual second. These two.","commit_id":"367c9c4925e91ea5bc25813c73922b46e5901af7"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"230634d6434d8c6a006397259dcc76c86e0dde9c","unresolved":false,"context_lines":[{"line_number":1596,"context_line":"%(physdev_is_bridged)s -j %(bn)s-i_port1"},{"line_number":1597,"context_line":"[0:0] -A %(bn)s-i_port1 -m state --state INVALID -j DROP"},{"line_number":1598,"context_line":"[0:0] -A %(bn)s-i_port1 -m state --state RELATED,ESTABLISHED -j RETURN"},{"line_number":1599,"context_line":"[0:0] -A %(bn)s-i_port1 -s 10.0.0.2/32 -p udp -m udp --sport 67 --dport 68 \\"},{"line_number":1600,"context_line":"-j RETURN"},{"line_number":1601,"context_line":"[0:0] -A %(bn)s-i_port1 -p tcp -m tcp --dport 22 -j RETURN"},{"line_number":1602,"context_line":"[0:0] -A %(bn)s-i_port1 -s 10.0.0.4/32 -j RETURN"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_a7089b92","line":1599,"updated":"2014-08-25 15:55:54.000000000","message":"Why /32 is added?","commit_id":"3cb2f7508ea639226cf9bb28c17cede8812503cb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"a40e8e093384e9df4917cfe89558028c292c5cbe","unresolved":false,"context_lines":[{"line_number":433,"context_line":"                        \u0027IPv6\u0027: [],"},{"line_number":434,"context_line":"                    }}"},{"line_number":435,"context_line":"                }"},{"line_number":436,"context_line":"                self.assertEqual(ports_rpc[\u0027security_groups\u0027],"},{"line_number":437,"context_line":"                                 expected[\u0027security_groups\u0027])"},{"line_number":438,"context_line":"                self.assertEqual(ports_rpc[\u0027sg_member_ips\u0027][sg2_id][\u0027IPv4\u0027],"},{"line_number":439,"context_line":"                                 expected[\u0027sg_member_ips\u0027][sg2_id][\u0027IPv4\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_f407487f","line":436,"updated":"2014-08-27 11:30:42.000000000","message":"Still have nit from version 16, for these two assert lines.","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"90f0764df8179cc52a7dc817e142c2a0bf1b1328","unresolved":false,"context_lines":[{"line_number":433,"context_line":"                        \u0027IPv6\u0027: [],"},{"line_number":434,"context_line":"                    }}"},{"line_number":435,"context_line":"                }"},{"line_number":436,"context_line":"                self.assertEqual(ports_rpc[\u0027security_groups\u0027],"},{"line_number":437,"context_line":"                                 expected[\u0027security_groups\u0027])"},{"line_number":438,"context_line":"                self.assertEqual(ports_rpc[\u0027sg_member_ips\u0027][sg2_id][\u0027IPv4\u0027],"},{"line_number":439,"context_line":"                                 expected[\u0027sg_member_ips\u0027][sg2_id][\u0027IPv4\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_1a3cebe1","line":436,"in_reply_to":"1abeadc6_f407487f","updated":"2014-08-27 13:45:29.000000000","message":"expected vs actual inverted:\n\nself.assertEqual(expected[\u0027security_groups\u0027], ports_rpc[\u0027security_groups\u0027])","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"a40e8e093384e9df4917cfe89558028c292c5cbe","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"        self.rpc \u003d mock.Mock()"},{"line_number":2208,"context_line":"        self.agent.plugin_rpc \u003d self.rpc"},{"line_number":2209,"context_line":"        self.sg_info \u003d self.rpc.security_group_info_for_devices"},{"line_number":2210,"context_line":"        self.rpc.check_enhanced_rcp_is_supported_by_server.return_value \u003d \\"},{"line_number":2211,"context_line":"            True"},{"line_number":2212,"context_line":"        self.agent.init_firewall("},{"line_number":2213,"context_line":"            defer_refresh_firewall\u003ddefer_refresh_firewall)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_14368452","line":2210,"updated":"2014-08-27 11:30:42.000000000","message":"Use parens vs backslash for continuation. Here and L2221.","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c57c53a709405646cd03baa7300a90fe4e919438","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"        self.rpc \u003d mock.Mock()"},{"line_number":2208,"context_line":"        self.agent.plugin_rpc \u003d self.rpc"},{"line_number":2209,"context_line":"        self.sg_info \u003d self.rpc.security_group_info_for_devices"},{"line_number":2210,"context_line":"        self.rpc.check_enhanced_rcp_is_supported_by_server.return_value \u003d \\"},{"line_number":2211,"context_line":"            True"},{"line_number":2212,"context_line":"        self.agent.init_firewall("},{"line_number":2213,"context_line":"            defer_refresh_firewall\u003ddefer_refresh_firewall)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_f66bb1b6","line":2210,"in_reply_to":"1abeadc6_14368452","updated":"2014-08-28 00:58:12.000000000","message":"Done","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"90f0764df8179cc52a7dc817e142c2a0bf1b1328","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"        self.rpc \u003d mock.Mock()"},{"line_number":2208,"context_line":"        self.agent.plugin_rpc \u003d self.rpc"},{"line_number":2209,"context_line":"        self.sg_info \u003d self.rpc.security_group_info_for_devices"},{"line_number":2210,"context_line":"        self.rpc.check_enhanced_rcp_is_supported_by_server.return_value \u003d \\"},{"line_number":2211,"context_line":"            True"},{"line_number":2212,"context_line":"        self.agent.init_firewall("},{"line_number":2213,"context_line":"            defer_refresh_firewall\u003ddefer_refresh_firewall)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_da4a7382","line":2210,"in_reply_to":"1abeadc6_14368452","updated":"2014-08-27 13:45:29.000000000","message":"Paul, what do you mean?","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c57c53a709405646cd03baa7300a90fe4e919438","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"        self.rpc \u003d mock.Mock()"},{"line_number":2208,"context_line":"        self.agent.plugin_rpc \u003d self.rpc"},{"line_number":2209,"context_line":"        self.sg_info \u003d self.rpc.security_group_info_for_devices"},{"line_number":2210,"context_line":"        self.rpc.check_enhanced_rcp_is_supported_by_server.return_value \u003d \\"},{"line_number":2211,"context_line":"            True"},{"line_number":2212,"context_line":"        self.agent.init_firewall("},{"line_number":2213,"context_line":"            defer_refresh_firewall\u003ddefer_refresh_firewall)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_d67a3587","line":2210,"in_reply_to":"1abeadc6_c338c6f0","updated":"2014-08-28 00:58:12.000000000","message":"thanks, I got it!","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"c57c53a709405646cd03baa7300a90fe4e919438","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"        self.rpc \u003d mock.Mock()"},{"line_number":2208,"context_line":"        self.agent.plugin_rpc \u003d self.rpc"},{"line_number":2209,"context_line":"        self.sg_info \u003d self.rpc.security_group_info_for_devices"},{"line_number":2210,"context_line":"        self.rpc.check_enhanced_rcp_is_supported_by_server.return_value \u003d \\"},{"line_number":2211,"context_line":"            True"},{"line_number":2212,"context_line":"        self.agent.init_firewall("},{"line_number":2213,"context_line":"            defer_refresh_firewall\u003ddefer_refresh_firewall)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_16710da8","line":2210,"in_reply_to":"1abeadc6_da4a7382","updated":"2014-08-28 00:58:12.000000000","message":"Done","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"db198f919b032bf3c57cca44ad21b141d3a931fa","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"        self.rpc \u003d mock.Mock()"},{"line_number":2208,"context_line":"        self.agent.plugin_rpc \u003d self.rpc"},{"line_number":2209,"context_line":"        self.sg_info \u003d self.rpc.security_group_info_for_devices"},{"line_number":2210,"context_line":"        self.rpc.check_enhanced_rcp_is_supported_by_server.return_value \u003d \\"},{"line_number":2211,"context_line":"            True"},{"line_number":2212,"context_line":"        self.agent.init_firewall("},{"line_number":2213,"context_line":"            defer_refresh_firewall\u003ddefer_refresh_firewall)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1abeadc6_c338c6f0","line":2210,"in_reply_to":"1abeadc6_da4a7382","updated":"2014-08-27 17:19:46.000000000","message":"To use parenthesis to split the line instead of \u0027\\\u0027 :)","commit_id":"a3ede80dfc7bdd818302a5b9df08224d43333cf2"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"924a2099693469e2e83bcffa7c357564c056fc29","unresolved":false,"context_lines":[{"line_number":400,"context_line":"                    \u0027security_group_rules\u0027: [rule1[\u0027security_group_rule\u0027]]}"},{"line_number":401,"context_line":"                res \u003d self._create_security_group_rule(self.fmt, rules)"},{"line_number":402,"context_line":"                self.deserialize(self.fmt, res)"},{"line_number":403,"context_line":"                self.assertEqual(res.status_int, webob.exc.HTTPCreated.code)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"                res1 \u003d self._create_port("},{"line_number":406,"context_line":"                    self.fmt, n[\u0027network\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_94ad0bec","line":403,"updated":"2014-08-28 09:48:29.000000000","message":"nit: expected, observed","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2b9ba971e3d7a6d70ab51c96386573e52dc71855","unresolved":false,"context_lines":[{"line_number":400,"context_line":"                    \u0027security_group_rules\u0027: [rule1[\u0027security_group_rule\u0027]]}"},{"line_number":401,"context_line":"                res \u003d self._create_security_group_rule(self.fmt, rules)"},{"line_number":402,"context_line":"                self.deserialize(self.fmt, res)"},{"line_number":403,"context_line":"                self.assertEqual(res.status_int, webob.exc.HTTPCreated.code)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"                res1 \u003d self._create_port("},{"line_number":406,"context_line":"                    self.fmt, n[\u0027network\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_52b703f5","line":403,"in_reply_to":"1abeadc6_94ad0bec","updated":"2014-08-28 10:51:36.000000000","message":"I got it","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"924a2099693469e2e83bcffa7c357564c056fc29","unresolved":false,"context_lines":[{"line_number":1086,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"},{"line_number":1087,"context_line":"        self.agent.prepare_devices_filter([\u0027fake_port_id\u0027])"},{"line_number":1088,"context_line":"        self.agent.security_groups_rule_updated([\u0027fake_sgid1\u0027, \u0027fake_sgid3\u0027])"},{"line_number":1089,"context_line":"        self.agent.refresh_firewall.assert_has_calls("},{"line_number":1090,"context_line":"            [mock.call.refresh_firewall([self.fake_device[\u0027device\u0027]])])"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"    def test_security_groups_rule_not_updated_enhanced_rpc(self):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_d471430d","line":1089,"updated":"2014-08-28 09:48:29.000000000","message":"You might consider using assert_called_once_with to assert that refresh_firewall was called only once in addition to being called with right arguments","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2b9ba971e3d7a6d70ab51c96386573e52dc71855","unresolved":false,"context_lines":[{"line_number":1086,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"},{"line_number":1087,"context_line":"        self.agent.prepare_devices_filter([\u0027fake_port_id\u0027])"},{"line_number":1088,"context_line":"        self.agent.security_groups_rule_updated([\u0027fake_sgid1\u0027, \u0027fake_sgid3\u0027])"},{"line_number":1089,"context_line":"        self.agent.refresh_firewall.assert_has_calls("},{"line_number":1090,"context_line":"            [mock.call.refresh_firewall([self.fake_device[\u0027device\u0027]])])"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"    def test_security_groups_rule_not_updated_enhanced_rpc(self):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_b27e97ad","line":1089,"in_reply_to":"1abeadc6_d471430d","updated":"2014-08-28 10:51:36.000000000","message":"thanks for your review and good suggestion, I agree with you!","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"924a2099693469e2e83bcffa7c357564c056fc29","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"},{"line_number":1094,"context_line":"        self.agent.prepare_devices_filter([\u0027fake_port_id\u0027])"},{"line_number":1095,"context_line":"        self.agent.security_groups_rule_updated([\u0027fake_sgid3\u0027, \u0027fake_sgid4\u0027])"},{"line_number":1096,"context_line":"        self.agent.refresh_firewall.assert_has_calls([])"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def test_security_groups_member_updated_enhanced_rpc(self):"},{"line_number":1099,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_f489df26","line":1096,"updated":"2014-08-28 09:48:29.000000000","message":"I assume this was supposed to test that refresh_firewall wasn\u0027t called - but instead it doesn\u0027t check anything - instead use self.assertFalse(self.agent.refresh_firewall.called)","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2b9ba971e3d7a6d70ab51c96386573e52dc71855","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"},{"line_number":1094,"context_line":"        self.agent.prepare_devices_filter([\u0027fake_port_id\u0027])"},{"line_number":1095,"context_line":"        self.agent.security_groups_rule_updated([\u0027fake_sgid3\u0027, \u0027fake_sgid4\u0027])"},{"line_number":1096,"context_line":"        self.agent.refresh_firewall.assert_has_calls([])"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def test_security_groups_member_updated_enhanced_rpc(self):"},{"line_number":1099,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_d27b13bc","line":1096,"in_reply_to":"1abeadc6_f489df26","updated":"2014-08-28 10:51:36.000000000","message":"agree","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"924a2099693469e2e83bcffa7c357564c056fc29","unresolved":false,"context_lines":[{"line_number":1108,"context_line":"        self.agent.prepare_devices_filter([\u0027fake_port_id\u0027])"},{"line_number":1109,"context_line":"        self.agent.security_groups_member_updated("},{"line_number":1110,"context_line":"            [\u0027fake_sgid3\u0027, \u0027fake_sgid4\u0027])"},{"line_number":1111,"context_line":"        self.agent.refresh_firewall.assert_has_calls([])"},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"    def test_security_groups_provider_updated_enhanced_rpc(self):"},{"line_number":1114,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_747dcf1b","line":1111,"updated":"2014-08-28 09:48:29.000000000","message":"ditto","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"2b9ba971e3d7a6d70ab51c96386573e52dc71855","unresolved":false,"context_lines":[{"line_number":1108,"context_line":"        self.agent.prepare_devices_filter([\u0027fake_port_id\u0027])"},{"line_number":1109,"context_line":"        self.agent.security_groups_member_updated("},{"line_number":1110,"context_line":"            [\u0027fake_sgid3\u0027, \u0027fake_sgid4\u0027])"},{"line_number":1111,"context_line":"        self.agent.refresh_firewall.assert_has_calls([])"},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"    def test_security_groups_provider_updated_enhanced_rpc(self):"},{"line_number":1114,"context_line":"        self.agent.refresh_firewall \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_f24baf84","line":1111,"in_reply_to":"1abeadc6_747dcf1b","updated":"2014-08-28 10:51:36.000000000","message":"Done","commit_id":"62bdd5a7b890971da6ab1716f1699fea69165057"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        mock.patch(\u0027neutron.agent.linux.iptables_manager\u0027).start()"},{"line_number":955,"context_line":"        self.agent.root_helper \u003d \u0027sudo\u0027"},{"line_number":956,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":957,"context_line":"        self.agent.plugin_rpc \u003d rpc"},{"line_number":958,"context_line":"        rpc.check_enhanced_rpc_is_supported_by_server.return_value \u003d False"},{"line_number":959,"context_line":"        self.agent.init_firewall(defer_refresh_firewall\u003ddefer_refresh_firewall)"},{"line_number":960,"context_line":"        self.firewall \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_a6906996","line":957,"updated":"2014-09-01 18:24:33.000000000","message":"L.956-957 can be one line.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        mock.patch(\u0027neutron.agent.linux.iptables_manager\u0027).start()"},{"line_number":955,"context_line":"        self.agent.root_helper \u003d \u0027sudo\u0027"},{"line_number":956,"context_line":"        rpc \u003d mock.Mock()"},{"line_number":957,"context_line":"        self.agent.plugin_rpc \u003d rpc"},{"line_number":958,"context_line":"        rpc.check_enhanced_rpc_is_supported_by_server.return_value \u003d False"},{"line_number":959,"context_line":"        self.agent.init_firewall(defer_refresh_firewall\u003ddefer_refresh_firewall)"},{"line_number":960,"context_line":"        self.firewall \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_ca8720d6","line":957,"in_reply_to":"fa98f980_a6906996","updated":"2014-09-02 02:02:38.000000000","message":"Done","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"593fedd419868184f290c98606a7890d8ea5a878","unresolved":false,"context_lines":[{"line_number":2009,"context_line":"    cfg.CONF.set_override(\u0027firewall_driver\u0027, firewall_driver,"},{"line_number":2010,"context_line":"                          group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"def set_enhanced_rpc_enable(enable):"},{"line_number":2014,"context_line":"    cfg.CONF.set_override(\u0027enable_enhanced_rpc\u0027, enable,"},{"line_number":2015,"context_line":"                          group\u003d\u0027SECURITYGROUP\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_a6bea9fd","line":2012,"updated":"2014-09-01 18:24:33.000000000","message":"It is better to move this kind of utility methods at the top of the file. We can find them more easily.","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"41701b81c4ae05075e469e907411afaa67776fd5","unresolved":false,"context_lines":[{"line_number":2009,"context_line":"    cfg.CONF.set_override(\u0027firewall_driver\u0027, firewall_driver,"},{"line_number":2010,"context_line":"                          group\u003d\u0027SECURITYGROUP\u0027)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"def set_enhanced_rpc_enable(enable):"},{"line_number":2014,"context_line":"    cfg.CONF.set_override(\u0027enable_enhanced_rpc\u0027, enable,"},{"line_number":2015,"context_line":"                          group\u003d\u0027SECURITYGROUP\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa98f980_aaa01c44","line":2012,"in_reply_to":"fa98f980_a6bea9fd","updated":"2014-09-02 02:02:38.000000000","message":"I agree","commit_id":"c03e7ae8363a0ef6935671bd1291619661097857"}]}
