)]}'
{"neutron_lib/api/definitions/disable_zero_for_fip_port_forwarding.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"71dde2e3ce8e59911e84524d1ca6bcafb6fca2cf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"parameters[pf_api.EXTERNAL_PORT] \u003d {"},{"line_number":33,"context_line":"    \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":34,"context_line":"    \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":35,"context_line":"    \u0027validate\u0027: {\u0027type:range\u0027: [1, 65535]},"},{"line_number":36,"context_line":"    \u0027is_visible\u0027: True,"},{"line_number":37,"context_line":"    \u0027is_sort_key\u0027: True,"},{"line_number":38,"context_line":"    \u0027is_filter\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cef4aed2","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":41},"updated":"2018-10-30 10:18:32.000000000","message":"Sorry but I don\u0027t understand this bug. PortForwarding object has \u0027external_port\u0027 and \u0027externa_port\u0027, both common_types.PortRangeField(nullable\u003dFalse). PortRangeField is valid between 1 and 65535, that means this is already cover in the object itself. Why do we need to introduce this extension? If a user tries to add \u00270\u0027 as internal/external port, he/she will receive this value error you talk about in the bug, but this is something expected.","commit_id":"0afb2a051ed3eb2a9e7c8ea86aea317abdc14b59"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dfb419a1c933c208020244d4265f7d6e15a01712","unresolved":false,"context_lines":[{"line_number":32,"context_line":"parameters[pf_api.EXTERNAL_PORT] \u003d {"},{"line_number":33,"context_line":"    \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":34,"context_line":"    \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":35,"context_line":"    \u0027validate\u0027: {\u0027type:range\u0027: [1, 65535]},"},{"line_number":36,"context_line":"    \u0027is_visible\u0027: True,"},{"line_number":37,"context_line":"    \u0027is_sort_key\u0027: True,"},{"line_number":38,"context_line":"    \u0027is_filter\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_dd053f18","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":41},"in_reply_to":"3f79a3b5_142dd4fb","updated":"2018-10-30 14:07:04.000000000","message":"OK, I see the current API definition uses validate_port_range_or_none (0 - 64K) to validate this data.\n\nBut IMO this new API is an overhead. Just changing the current \u0027port_forwardings\u0027 definition is enough:\n- You don\u0027t modify the type (int type).\n- You are reducing the the valid interval, if any test fails is because it was introducing an invalid number (0).\n- Two services with different APIs will be compatible. If a service with an old API interval 0-64K tries to introduce \"0\" as internal/external port will fail.","commit_id":"0afb2a051ed3eb2a9e7c8ea86aea317abdc14b59"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"1801258a5692188a581eee495c12be4a3532a50a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"parameters[pf_api.EXTERNAL_PORT] \u003d {"},{"line_number":33,"context_line":"    \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":34,"context_line":"    \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":35,"context_line":"    \u0027validate\u0027: {\u0027type:range\u0027: [1, 65535]},"},{"line_number":36,"context_line":"    \u0027is_visible\u0027: True,"},{"line_number":37,"context_line":"    \u0027is_sort_key\u0027: True,"},{"line_number":38,"context_line":"    \u0027is_filter\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_142dd4fb","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":41},"in_reply_to":"3f79a3b5_cef4aed2","updated":"2018-10-30 11:27:03.000000000","message":"0 should not be one valid input from the begining, aka API. This is inconsistent between API and object.","commit_id":"0afb2a051ed3eb2a9e7c8ea86aea317abdc14b59"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"1029766039201110af36cbb61301bf17cf486560","unresolved":false,"context_lines":[{"line_number":32,"context_line":"parameters[pf_api.EXTERNAL_PORT] \u003d {"},{"line_number":33,"context_line":"    \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":34,"context_line":"    \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":35,"context_line":"    \u0027validate\u0027: {\u0027type:range\u0027: [1, 65535]},"},{"line_number":36,"context_line":"    \u0027is_visible\u0027: True,"},{"line_number":37,"context_line":"    \u0027is_sort_key\u0027: True,"},{"line_number":38,"context_line":"    \u0027is_filter\u0027: True}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c83d7f2a","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":41},"in_reply_to":"3f79a3b5_dd053f18","updated":"2018-10-30 14:24:39.000000000","message":"Yes, in patch set 1 I\u0027ve done it by directly modifying the original extension. But, others may want to change the API behavior by this way, here is an example:\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/subnet_segmentid_enforce.py","commit_id":"0afb2a051ed3eb2a9e7c8ea86aea317abdc14b59"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"d98c10dbb18c8cae9eccfa923d504c1bf0b92c60","unresolved":false,"context_lines":[{"line_number":24,"context_line":"UPDATED_TIMESTAMP \u003d \u00272018-10-30T10:00:00-00:00\u0027"},{"line_number":25,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"SUB_RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":28,"context_line":"    pf_api.COLLECTION_NAME: {"},{"line_number":29,"context_line":"        \u0027parameters\u0027: {"},{"line_number":30,"context_line":"            pf_api.EXTERNAL_PORT: {"},{"line_number":31,"context_line":"                \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":32,"context_line":"                \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":33,"context_line":"                \u0027validate\u0027: {\u0027type:range\u0027: [1, 65535]},"},{"line_number":34,"context_line":"                \u0027is_visible\u0027: True,"},{"line_number":35,"context_line":"                \u0027is_sort_key\u0027: True,"},{"line_number":36,"context_line":"                \u0027is_filter\u0027: True},"},{"line_number":37,"context_line":"            pf_api.INTERNAL_PORT: {"},{"line_number":38,"context_line":"                \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":39,"context_line":"                \u0027convert_to\u0027: converters.convert_to_int,"},{"line_number":40,"context_line":"                \u0027validate\u0027: {\u0027type:range\u0027: [1, 65535]},"},{"line_number":41,"context_line":"                \u0027is_visible\u0027: True},"},{"line_number":42,"context_line":"        }"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"ACTION_MAP \u003d {}"},{"line_number":47,"context_line":"REQUIRED_EXTENSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_6a74359c","line":44,"range":{"start_line":27,"start_character":0,"end_line":44,"end_character":1},"updated":"2018-11-01 10:22:58.000000000","message":"I think you guys will like this change now!!","commit_id":"09d4866d043761558b785b190010fbc2179bd583"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"47646b1876c31e40cca60c6f029d7c83fa18e5ef","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from neutron_lib.api.definitions import floating_ip_port_forwarding as pf_api"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"ALIAS \u003d \u0027disable_zero_for_fip_port_forwarding\u0027"},{"line_number":19,"context_line":"IS_SHIM_EXTENSION \u003d False"},{"line_number":20,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":21,"context_line":"NAME \u003d \u0027Disable Zero Port Number For Floating IP Port Forwarding API\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_e473944e","line":18,"range":{"start_line":18,"start_character":9,"end_line":18,"end_character":45},"updated":"2018-11-01 16:21:18.000000000","message":"Two optional suggestions below.\n\nUsing \u0027-\u0027 instead of \u0027_\u0027 might align better to the naming convention because the original extension is using \u0027-\u0027 (\u0027floating-ip-port-forwarding\u0027).\n\nAlso, it looks the general pattern of extension name is \u003cresource\u003e-\u003cattribute\u003e-\u003cothers\u003e. For example, \"port-resource-request\", \"subnet-segmentid-enforce\", etc. Therefore, renaming this extension to something like \u0027port-forwarding-port-disallow-zero\u0027 might be more consistent (although it might look odd..)","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"efdb0b82f2d7663299e1520708907cbbb144bd74","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from neutron_lib.api.definitions import floating_ip_port_forwarding as pf_api"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"ALIAS \u003d \u0027disable_zero_for_fip_port_forwarding\u0027"},{"line_number":19,"context_line":"IS_SHIM_EXTENSION \u003d False"},{"line_number":20,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":21,"context_line":"NAME \u003d \u0027Disable Zero Port Number For Floating IP Port Forwarding API\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_10d91cf0","line":18,"range":{"start_line":18,"start_character":9,"end_line":18,"end_character":45},"in_reply_to":"3f79a3b5_e473944e","updated":"2018-11-02 07:39:28.000000000","message":"Let\u0027s make thing easy to read, there are still a lot of underline \u0027_\u0027 extension name, and I don\u0027t see a generic name rule there, the file name, extension name, alias are baiclly for well understanding, so I think the current is enough.","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"47646b1876c31e40cca60c6f029d7c83fa18e5ef","unresolved":false,"context_lines":[{"line_number":19,"context_line":"IS_SHIM_EXTENSION \u003d False"},{"line_number":20,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":21,"context_line":"NAME \u003d \u0027Disable Zero Port Number For Floating IP Port Forwarding API\u0027"},{"line_number":22,"context_line":"DESCRIPTION \u003d (\u0027Forbidden input zero port number for \u0027"},{"line_number":23,"context_line":"               \u0027floating IP port forwarding\u0027)"},{"line_number":24,"context_line":"UPDATED_TIMESTAMP \u003d \u00272018-10-30T10:00:00-00:00\u0027"},{"line_number":25,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_e44b94af","line":22,"range":{"start_line":22,"start_character":16,"end_line":22,"end_character":25},"updated":"2018-11-01 16:21:18.000000000","message":"Disallow","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"}],"releasenotes/notes/disable-port-number-zero-2fb484a802f099a7.yaml":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"47646b1876c31e40cca60c6f029d7c83fa18e5ef","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron API should not allow user set zero for floating IP port"},{"line_number":5,"context_line":"    forwarding internal or external port number. Adds a new extension"},{"line_number":6,"context_line":"    to change the external_port and internal_port minimum value to 1."},{"line_number":7,"context_line":"    Then API and port forwarding object will make consistence for these"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_24caec9f","line":4,"range":{"start_line":4,"start_character":38,"end_line":4,"end_character":41},"updated":"2018-11-01 16:21:18.000000000","message":"to set","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"efdb0b82f2d7663299e1520708907cbbb144bd74","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron API should not allow user set zero for floating IP port"},{"line_number":5,"context_line":"    forwarding internal or external port number. Adds a new extension"},{"line_number":6,"context_line":"    to change the external_port and internal_port minimum value to 1."},{"line_number":7,"context_line":"    Then API and port forwarding object will make consistence for these"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_cbba196f","line":4,"range":{"start_line":4,"start_character":38,"end_line":4,"end_character":41},"in_reply_to":"3f79a3b5_24caec9f","updated":"2018-11-02 07:39:28.000000000","message":"Done","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"47646b1876c31e40cca60c6f029d7c83fa18e5ef","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Neutron API should not allow user set zero for floating IP port"},{"line_number":5,"context_line":"    forwarding internal or external port number. Adds a new extension"},{"line_number":6,"context_line":"    to change the external_port and internal_port minimum value to 1."},{"line_number":7,"context_line":"    Then API and port forwarding object will make consistence for these"},{"line_number":8,"context_line":"    attributes."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_84b8a012","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":61},"updated":"2018-11-01 16:21:18.000000000","message":"consistent","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"efdb0b82f2d7663299e1520708907cbbb144bd74","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Neutron API should not allow user set zero for floating IP port"},{"line_number":5,"context_line":"    forwarding internal or external port number. Adds a new extension"},{"line_number":6,"context_line":"    to change the external_port and internal_port minimum value to 1."},{"line_number":7,"context_line":"    Then API and port forwarding object will make consistence for these"},{"line_number":8,"context_line":"    attributes."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_abb79d88","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":61},"in_reply_to":"3f79a3b5_84b8a012","updated":"2018-11-02 07:39:28.000000000","message":"Done","commit_id":"cd6a54ec7179d4fce3c8d214b40b9312589432a6"}]}
