)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9396,"name":"igordcard","email":"igordcard@gmail.com","username":"igordcard"},"change_message_id":"dac0f50ed1169f483963b4c6fdfa577d759d5320","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add new protocols in Firewalls"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Firewall rules can now also filter DCCP and"},{"line_number":10,"context_line":"SCTP protocols."},{"line_number":11,"context_line":"Partial-Bug: #1669956"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ib7334655be3506aa6573954b36059cd7f875b320"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7ffa3b31_1af67564","line":10,"range":{"start_line":9,"start_character":35,"end_line":10,"end_character":4},"updated":"2017-04-21 10:35:52.000000000","message":"So would these be good candidates to have in the common classification framework?","commit_id":"d136fd4c62c1db4ac5760f1693dcd0fc38dae6fc"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6bc0f78434bba24fd8a47f3c9a1e07b703567a3d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add new protocols in Firewalls"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Firewall rules can now also filter DCCP and"},{"line_number":10,"context_line":"SCTP protocols."},{"line_number":11,"context_line":"Partial-Bug: #1669956"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ib7334655be3506aa6573954b36059cd7f875b320"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7ffa3b31_9006e11f","line":10,"range":{"start_line":9,"start_character":35,"end_line":10,"end_character":4},"in_reply_to":"7ffa3b31_1af67564","updated":"2017-04-21 13:42:22.000000000","message":"Hmm, interestingly yes ...because most of these are already there in the IPTables list","commit_id":"d136fd4c62c1db4ac5760f1693dcd0fc38dae6fc"}],"neutron_lib/api/definitions/constants.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"283c3b14ae14798a0b70206b22447317c4655ddf","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Firewall Protocol List"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"FW_PROTOCOL_VALUES \u003d list(constants.IPTABLES_PROTOCOL_MAP.keys()) + [None]"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_5831b659","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":74},"updated":"2017-04-11 01:58:31.000000000","message":"Why do you add [None]? I\u0027m confused KEY list is assigned to VALUES.","commit_id":"277250a55a3d48cc2080ebc66141877e2b80fc90"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"836e62fca07772399c464f534852ab50f8ef9022","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Firewall Protocol List"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"FW_PROTOCOL_VALUES \u003d list(constants.IPTABLES_PROTOCOL_MAP.keys()) + [None]"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_998a9667","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":74},"in_reply_to":"bff0334d_5831b659","updated":"2017-04-11 10:30:53.000000000","message":"When using the validator \u0027type:values\u0027, all possible values (including None value) must be in the validation list.\n\nPlease, take a look at this example: [1][2]. SGroups has a \"protocol\" parameter, that could be None. In this example, the value is converted. In this patch, there is no need for that, but we should add None to the possible parameter\u0027s value list.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/extensions/securitygroup.py#L146\n[2] https://github.com/openstack/neutron/blob/master/neutron/extensions/securitygroup.py#L203","commit_id":"277250a55a3d48cc2080ebc66141877e2b80fc90"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"13a73e40850aeeeac3b95c38322618aa9e023ca0","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Firewall Protocol List"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"FW_PROTOCOL_VALUES \u003d list(constants.IPTABLES_PROTOCOL_MAP.keys()) + [None]"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_f9bc0207","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":74},"in_reply_to":"bff0334d_998a9667","updated":"2017-04-11 10:33:13.000000000","message":"This dictionary contains the name of the protocols (used by SG and firewalls) and the conversion to iptables (as values). That\u0027s why Reedip is using the keys to create the list.","commit_id":"277250a55a3d48cc2080ebc66141877e2b80fc90"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"977f59310b17c70125ed6403cb2b83d54f1b0319","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Firewall Protocol List"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"FW_PROTOCOL_VALUES \u003d list(constants.IPTABLES_PROTOCOL_MAP.keys()) + [None]"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_9dc9575a","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":74},"in_reply_to":"bff0334d_f9bc0207","updated":"2017-04-11 15:54:42.000000000","message":"I see","commit_id":"277250a55a3d48cc2080ebc66141877e2b80fc90"}],"neutron_lib/api/definitions/firewall.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6548960dfc5337559d80d98ec21d9858c8500ab7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                     \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":69,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_protocol,"},{"line_number":70,"context_line":"                     \u0027validate\u0027: {"},{"line_number":71,"context_line":"            \u0027type:values\u0027: api_const.FW_PROTOCOL_VALUES}},"},{"line_number":72,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":73,"context_line":"                       \u0027default\u0027: 4, \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":74,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ff52f3f_97d7af24","line":71,"updated":"2017-04-13 09:38:09.000000000","message":"Why this change?","commit_id":"de7da1bceb6fd19cb75906e062420f28470c9f0c"}],"neutron_lib/api/definitions/firewall_v2.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6548960dfc5337559d80d98ec21d9858c8500ab7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                     \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":70,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_protocol,"},{"line_number":71,"context_line":"                     \u0027validate\u0027: {"},{"line_number":72,"context_line":"            \u0027type:values\u0027: api_const. FW_PROTOCOL_VALUES}},"},{"line_number":73,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":74,"context_line":"                       \u0027default\u0027: 4, \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":75,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ff52f3f_57e127fe","line":72,"updated":"2017-04-13 09:38:09.000000000","message":"ditto","commit_id":"de7da1bceb6fd19cb75906e062420f28470c9f0c"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"3654220a7fe3abc650f27974f9a19c50ca3cbb48","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                     \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":70,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_protocol,"},{"line_number":71,"context_line":"                     \u0027validate\u0027: {"},{"line_number":72,"context_line":"            \u0027type:values\u0027: api_const. FW_PROTOCOL_VALUES}},"},{"line_number":73,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":74,"context_line":"                       \u0027default\u0027: 4, \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":75,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_243cddc6","line":72,"range":{"start_line":72,"start_character":27,"end_line":72,"end_character":56},"updated":"2017-04-18 14:37:34.000000000","message":"api_const.FW_PROTOCOL_VALUES","commit_id":"5f44597b27559cc540a5b53c3386d30ddfbcae10"}]}
