)]}'
{"api-ref/source/parameters.yaml":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":249,"context_line":"  type: string"},{"line_number":250,"context_line":"default_pool_id:"},{"line_number":251,"context_line":"  description: |"},{"line_number":252,"context_line":"    The ID of the pool used by the listener if no L7 policies match. Thel pool"},{"line_number":253,"context_line":"    has some restrictions. See :ref:`valid_protocol`."},{"line_number":254,"context_line":"  in: body"},{"line_number":255,"context_line":"  required: true"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"3f79a3b5_2268e486","line":252,"range":{"start_line":252,"start_character":69,"end_line":252,"end_character":73},"updated":"2018-12-11 07:36:21.000000000","message":"typo","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":249,"context_line":"  type: string"},{"line_number":250,"context_line":"default_pool_id:"},{"line_number":251,"context_line":"  description: |"},{"line_number":252,"context_line":"    The ID of the pool used by the listener if no L7 policies match. Thel pool"},{"line_number":253,"context_line":"    has some restrictions. See :ref:`valid_protocol`."},{"line_number":254,"context_line":"  in: body"},{"line_number":255,"context_line":"  required: true"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"3f79a3b5_9c7277ae","line":252,"range":{"start_line":252,"start_character":69,"end_line":252,"end_character":73},"in_reply_to":"3f79a3b5_2268e486","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":256,"context_line":"  type: uuid"},{"line_number":257,"context_line":"default_pool_id-optional:"},{"line_number":258,"context_line":"  description: |"},{"line_number":259,"context_line":"    The ID of the pool used by the listener if no L7 policies match. Thel pool"},{"line_number":260,"context_line":"    has some restrictions. See :ref:`valid_protocol`."},{"line_number":261,"context_line":"  in: body"},{"line_number":262,"context_line":"  required: false"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"3f79a3b5_e25d0ce5","line":259,"range":{"start_line":259,"start_character":69,"end_line":259,"end_character":73},"updated":"2018-12-11 07:36:21.000000000","message":"ditto","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":256,"context_line":"  type: uuid"},{"line_number":257,"context_line":"default_pool_id-optional:"},{"line_number":258,"context_line":"  description: |"},{"line_number":259,"context_line":"    The ID of the pool used by the listener if no L7 policies match. Thel pool"},{"line_number":260,"context_line":"    has some restrictions. See :ref:`valid_protocol`."},{"line_number":261,"context_line":"  in: body"},{"line_number":262,"context_line":"  required: false"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"3f79a3b5_5c685fb9","line":259,"range":{"start_line":259,"start_character":69,"end_line":259,"end_character":73},"in_reply_to":"3f79a3b5_e25d0ce5","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"}],"api-ref/source/v2/general.inc":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ab6221d8d66f0369dfbd0573b7fc1b695a083229","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":".. _valid_protocol:"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Protocol combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement reverse proxy for load"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_0c1c2463","line":520,"range":{"start_line":520,"start_character":9,"end_line":520,"end_character":10},"updated":"2018-11-26 22:29:31.000000000","message":"nit: C","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"17ef7f56296fe8ed99d6563c31b84c6d3bf8cfb4","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":".. _valid_protocol:"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Protocol combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement reverse proxy for load"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_3e9d7f54","line":520,"range":{"start_line":520,"start_character":9,"end_line":520,"end_character":10},"in_reply_to":"3f79a3b5_0c1c2463","updated":"2018-12-10 05:35:29.000000000","message":"Done","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ab6221d8d66f0369dfbd0573b7fc1b695a083229","unresolved":false,"context_lines":[{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Protocol combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement reverse proxy for load"},{"line_number":524,"context_line":"balancer. They are called listener and pool. The listener and pool can be"},{"line_number":525,"context_line":"associated through the listener\u0027s ``default_pool_id`` or l7policy\u0027s"},{"line_number":526,"context_line":"``redirect_pool_id``. Then the listener used to receive user\u0027s requests, the pool"},{"line_number":527,"context_line":"used to redirect these requests to real servers. Both listener and pool must"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_49120eb5","line":524,"range":{"start_line":522,"start_character":0,"end_line":524,"end_character":10},"updated":"2018-11-26 22:29:31.000000000","message":"I would delete this whole sentence. It has a typo and we really aren\u0027t providing a reverse proxy with all of the drivers.","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"17ef7f56296fe8ed99d6563c31b84c6d3bf8cfb4","unresolved":false,"context_lines":[{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Protocol combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement reverse proxy for load"},{"line_number":524,"context_line":"balancer. They are called listener and pool. The listener and pool can be"},{"line_number":525,"context_line":"associated through the listener\u0027s ``default_pool_id`` or l7policy\u0027s"},{"line_number":526,"context_line":"``redirect_pool_id``. Then the listener used to receive user\u0027s requests, the pool"},{"line_number":527,"context_line":"used to redirect these requests to real servers. Both listener and pool must"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_deb1ebe4","line":524,"range":{"start_line":522,"start_character":0,"end_line":524,"end_character":10},"in_reply_to":"3f79a3b5_49120eb5","updated":"2018-12-10 05:35:29.000000000","message":"Done","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"c1574f336947419386732aaffd529f2806009278","unresolved":false,"context_lines":[{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Protocol combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement reverse proxy for load"},{"line_number":524,"context_line":"balancer. They are called listener and pool. The listener and pool can be"},{"line_number":525,"context_line":"associated through the listener\u0027s ``default_pool_id`` or l7policy\u0027s"},{"line_number":526,"context_line":"``redirect_pool_id``. Then the listener used to receive user\u0027s requests, the pool"},{"line_number":527,"context_line":"used to redirect these requests to real servers. Both listener and pool must"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_b022bab6","line":524,"range":{"start_line":522,"start_character":0,"end_line":524,"end_character":10},"in_reply_to":"3f79a3b5_49120eb5","updated":"2018-12-01 07:02:53.000000000","message":"How do you think if I delete \"reverse proxy for\". Just like this: \"The Octavia API v2 provides tow entities to implement load balancer.\"","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ab6221d8d66f0369dfbd0573b7fc1b695a083229","unresolved":false,"context_lines":[{"line_number":524,"context_line":"balancer. They are called listener and pool. The listener and pool can be"},{"line_number":525,"context_line":"associated through the listener\u0027s ``default_pool_id`` or l7policy\u0027s"},{"line_number":526,"context_line":"``redirect_pool_id``. Then the listener used to receive user\u0027s requests, the pool"},{"line_number":527,"context_line":"used to redirect these requests to real servers. Both listener and pool must"},{"line_number":528,"context_line":"set the protocol parameter. But the association between the listener and the"},{"line_number":529,"context_line":"pool has some limitations at the protocol aspect."},{"line_number":530,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_89f9061e","line":527,"range":{"start_line":527,"start_character":35,"end_line":527,"end_character":39},"updated":"2018-11-26 22:29:31.000000000","message":"member","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"17ef7f56296fe8ed99d6563c31b84c6d3bf8cfb4","unresolved":false,"context_lines":[{"line_number":524,"context_line":"balancer. They are called listener and pool. The listener and pool can be"},{"line_number":525,"context_line":"associated through the listener\u0027s ``default_pool_id`` or l7policy\u0027s"},{"line_number":526,"context_line":"``redirect_pool_id``. Then the listener used to receive user\u0027s requests, the pool"},{"line_number":527,"context_line":"used to redirect these requests to real servers. Both listener and pool must"},{"line_number":528,"context_line":"set the protocol parameter. But the association between the listener and the"},{"line_number":529,"context_line":"pool has some limitations at the protocol aspect."},{"line_number":530,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_feb4e7d4","line":527,"range":{"start_line":527,"start_character":35,"end_line":527,"end_character":39},"in_reply_to":"3f79a3b5_89f9061e","updated":"2018-12-10 05:35:29.000000000","message":"Done","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ab6221d8d66f0369dfbd0573b7fc1b695a083229","unresolved":false,"context_lines":[{"line_number":532,"context_line":"---------------------------"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"+------------------+-----+------+-------+------------------------+"},{"line_number":535,"context_line":"| pool\\listener    | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| TCP              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_a922c200","line":535,"updated":"2018-11-26 22:29:31.000000000","message":"Maybe add another line before the \u0027\u003d\u0027 line for the pool title. It\u0027s confusing with it together.","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"17ef7f56296fe8ed99d6563c31b84c6d3bf8cfb4","unresolved":false,"context_lines":[{"line_number":532,"context_line":"---------------------------"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"+------------------+-----+------+-------+------------------------+"},{"line_number":535,"context_line":"| pool\\listener    | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| TCP              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_7ec0d72c","line":535,"in_reply_to":"3f79a3b5_a922c200","updated":"2018-12-10 05:35:29.000000000","message":"Done","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"c1574f336947419386732aaffd529f2806009278","unresolved":false,"context_lines":[{"line_number":532,"context_line":"---------------------------"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"+------------------+-----+------+-------+------------------------+"},{"line_number":535,"context_line":"| pool\\listener    | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| TCP              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_709182f6","line":535,"in_reply_to":"3f79a3b5_a922c200","updated":"2018-12-01 07:02:53.000000000","message":"Yes, How to build this table is also a place I have been confused.\nReference the below URL.\nhttp://paste.openstack.org/show/736540/\nWhich one you think is better?","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ab6221d8d66f0369dfbd0573b7fc1b695a083229","unresolved":false,"context_lines":[{"line_number":534,"context_line":"+------------------+-----+------+-------+------------------------+"},{"line_number":535,"context_line":"| pool\\listener    | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| TCP              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+------------------+-----+------+-------+------------------+-----+"},{"line_number":539,"context_line":"| HTTP             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":540,"context_line":"+------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_0940965d","line":537,"range":{"start_line":537,"start_character":35,"end_line":537,"end_character":38},"updated":"2018-11-26 22:29:31.000000000","message":"Y","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"17ef7f56296fe8ed99d6563c31b84c6d3bf8cfb4","unresolved":false,"context_lines":[{"line_number":534,"context_line":"+------------------+-----+------+-------+------------------------+"},{"line_number":535,"context_line":"| pool\\listener    | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| TCP              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+------------------+-----+------+-------+------------------+-----+"},{"line_number":539,"context_line":"| HTTP             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":540,"context_line":"+------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_5ec5db3c","line":537,"range":{"start_line":537,"start_character":35,"end_line":537,"end_character":38},"in_reply_to":"3f79a3b5_0940965d","updated":"2018-12-10 05:35:29.000000000","message":"Done","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"c1574f336947419386732aaffd529f2806009278","unresolved":false,"context_lines":[{"line_number":534,"context_line":"+------------------+-----+------+-------+------------------------+"},{"line_number":535,"context_line":"| pool\\listener    | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| TCP              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+------------------+-----+------+-------+------------------+-----+"},{"line_number":539,"context_line":"| HTTP             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":540,"context_line":"+------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":20,"id":"3f79a3b5_f0f7d25a","line":537,"range":{"start_line":537,"start_character":35,"end_line":537,"end_character":38},"in_reply_to":"3f79a3b5_0940965d","updated":"2018-12-01 07:02:53.000000000","message":"The haproxy in amphora can\u0027t start when the listener\u0027s protocol is HTTPS and the pool\u0027s protocol is TCP. So I think we mustn\u0027t pass this case.","commit_id":"78e84296d9be21fd2a89cc917293b6bb323fdf04"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":536,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":537,"context_line":"| pool             |          |     |      |       |                  |     |"},{"line_number":538,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":539,"context_line":"| TCP              |          |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":540,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":541,"context_line":"| HTTP             |          |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":542,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"3f79a3b5_62525cdb","line":539,"range":{"start_line":539,"start_character":46,"end_line":539,"end_character":48},"updated":"2018-12-11 07:36:21.000000000","message":"Hmm, I still not fullly agree with this table. Could you please tell us how you test? I bring a example here, as the listener protocol \"HTTPS\" will treat as \u0027tcp\u0027 mode, that means we configure the haproxy mode tcp in frontend part, and here \"N\" means we create HTTPS listener(mode tcp), TCP pool(mode tcp). So I cannot see it doesn\u0027t work... So I think this table is just haproxy related, am I right? if we want to figure out how to validate, we could say the reference driver (haproxy) can support the couple parameters in the table showed, and list the way of the current reference driver treat these protocols. If we do it in API layer, I\u0027m not sure that is suitable for other backends.\n\nhttp://git.openstack.org/cgit/openstack/octavia/tree/octavia/common/jinja/haproxy/jinja_cfg.py#n25","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":536,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":537,"context_line":"| pool             |          |     |      |       |                  |     |"},{"line_number":538,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":539,"context_line":"| TCP              |          |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":540,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":541,"context_line":"| HTTP             |          |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":542,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"3f79a3b5_b162fca6","line":539,"range":{"start_line":539,"start_character":46,"end_line":539,"end_character":48},"in_reply_to":"3f79a3b5_62525cdb","updated":"2018-12-11 12:13:43.000000000","message":"Sorry, This is my fault, I make an error at copy our QA team test result. You are right, The listener\u0027s protocol \"HTTPS\" will treat as \u0027TCP\u0027 mode. But, I still think \"N\" is more suitable here. Because, it is not appropriate to treat HTTPS as TCP, in semantic. Moreover, we can\u0027t explain why HTTPS and TCP\u0027s combination is allowed but HTTP and TCP\u0027s combination is not allowed.","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"6fa1b49bd64061a1ff22b370214c9c66cdc3d32f","unresolved":false,"context_lines":[{"line_number":536,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":537,"context_line":"| pool             |          |     |      |       |                  |     |"},{"line_number":538,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":539,"context_line":"| TCP              |          |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":540,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":541,"context_line":"| HTTP             |          |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":542,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"3f79a3b5_899f7fb1","line":539,"range":{"start_line":539,"start_character":46,"end_line":539,"end_character":48},"in_reply_to":"3f79a3b5_b13d072c","updated":"2018-12-12 12:00:24.000000000","message":"Yes, The table is about an API limitation, Not just for haproxy driver specified.\nAbout the above two ways, you mentioned:\n1. I think users can set both listener and pool protocols to HTTPS or set both to TCP.\n2. I think if listener protocol is TERMINATED_HTTPS the pool protocol should set to HTTP or TERMINATED_HTTPS\nSo, I think the listener\u0027s protocol is https but the pool\u0027s protocol is TCP\u0027s combination is a bit weird and not is necessary.","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"7759b4948d0e9a78e17ee3051581e2f97f6a2f1d","unresolved":false,"context_lines":[{"line_number":536,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":537,"context_line":"| pool             |          |     |      |       |                  |     |"},{"line_number":538,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":539,"context_line":"| TCP              |          |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":540,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"},{"line_number":541,"context_line":"| HTTP             |          |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":542,"context_line":"+------------------+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"3f79a3b5_b13d072c","line":539,"range":{"start_line":539,"start_character":46,"end_line":539,"end_character":48},"in_reply_to":"3f79a3b5_b162fca6","updated":"2018-12-12 07:23:11.000000000","message":"Haproxy can proxy HTTPS in 2 ways:\n1. the backend servers support https, this way doesn\u0027t need recompile the traffic, so haproxy need to proxy TCP to TCP.\n2. TLS TERMINATED.. we offload the certs used by SSL traffic on haproxy, the backend servers might be Http servers. It needs to recompile the traffic this way. That\u0027s the reason for current design, I think. \n\nSo like your mentioned, is this a API limitation? Not just for haproxy driver specified?","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"6326634b651d533122943355043d38cf29674f69","unresolved":false,"context_lines":[{"line_number":520,"context_line":"Protocol Combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement loadbalancer. They are"},{"line_number":524,"context_line":"called listener and pool. The listener and pool can be associated through the"},{"line_number":525,"context_line":"listener\u0027s ``default_pool_id`` or l7policy\u0027s ``redirect_pool_id``. Then the"},{"line_number":526,"context_line":"listener used to receive user\u0027s requests, the pool used to redirect these"}],"source_content_type":"text/x-c++src","patch_set":30,"id":"ffd0ebdf_ba32a3a6","line":523,"updated":"2019-01-03 23:06:24.000000000","message":"tow should be two - the whole paragraph is difficult to understand maybe try rewording.","commit_id":"2bd30e0ccba76ea93a5b62d22b527a18fe3b1192"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"e60131b38c50944fb6a62690e1cae99ce677e21b","unresolved":false,"context_lines":[{"line_number":520,"context_line":"Protocol Combinations"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"The Octavia API v2 provides tow entities to implement loadbalancer. They are"},{"line_number":524,"context_line":"called listener and pool. The listener and pool can be associated through the"},{"line_number":525,"context_line":"listener\u0027s ``default_pool_id`` or l7policy\u0027s ``redirect_pool_id``. Then the"},{"line_number":526,"context_line":"listener used to receive user\u0027s requests, the pool used to redirect these"}],"source_content_type":"text/x-c++src","patch_set":30,"id":"ffd0ebdf_87dc2347","line":523,"in_reply_to":"ffd0ebdf_ba32a3a6","updated":"2019-01-04 02:22:05.000000000","message":"Thanks for your review. I am so sorry for my English language skills. I will try to reword the paragraph.","commit_id":"2bd30e0ccba76ea93a5b62d22b527a18fe3b1192"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"9bca40bd8265ee944c280966ac6d45f4bdf223d9","unresolved":false,"context_lines":[{"line_number":531,"context_line":"Valid protocol combinations"},{"line_number":532,"context_line":"---------------------------"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":535,"context_line":"|   Pool  \u0026  Listener  | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":536,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":537,"context_line":"| **TCP**              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":538,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":539,"context_line":"| **HTTP**             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":540,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":541,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":542,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":543,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":544,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":545,"context_line":"| **PROXY**            |  Y  |  Y   |   Y   |        Y         |  N  |"},{"line_number":546,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":547,"context_line":"| **UDP**              |  N  |  N   |   N   |        N         |  Y  |"},{"line_number":548,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"The first row is the value range of the listener\u0027s protocol and the first"},{"line_number":551,"context_line":"column is the value range of the pool\u0027s protocol. \"Y\" means the combination is"}],"source_content_type":"text/x-c++src","patch_set":30,"id":"1f769fc5_61544fcb","line":548,"range":{"start_line":534,"start_character":0,"end_line":548,"end_character":70},"updated":"2019-01-02 02:31:34.000000000","message":"About the table\u0027s contents, would you have other suggestions?\nAbout the table\u0027s form, Which one do you think would be better? http://paste.openstack.org/show/739807 or do you have any other better suggestion? Thank you very much.","commit_id":"2bd30e0ccba76ea93a5b62d22b527a18fe3b1192"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"d2cd525d7c7be0884bd27a1b978253d4f82badc4","unresolved":false,"context_lines":[{"line_number":523,"context_line":"The listener and pool can be associated through the listener\u0027s"},{"line_number":524,"context_line":"``default_pool_id`` or l7policy\u0027s ``redirect_pool_id``. Both listener and pool"},{"line_number":525,"context_line":"must set the protocol parameter. But the association between the listener and"},{"line_number":526,"context_line":"the pool isn\u0027t arbitrarily that has some constraints at the protocol aspect."},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"Valid protocol combinations"},{"line_number":529,"context_line":"---------------------------"}],"source_content_type":"text/x-c++src","patch_set":31,"id":"ffd0ebdf_755c3b4b","line":526,"updated":"2019-01-04 19:11:04.000000000","message":"replace that with and -- it should be good","commit_id":"b4f94cd6b203e53ea6a9452154ef583e4a9cabfb"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"a8210d644fb8d79b19f3fc2c3d1d6fdaf2baf235","unresolved":false,"context_lines":[{"line_number":523,"context_line":"The listener and pool can be associated through the listener\u0027s"},{"line_number":524,"context_line":"``default_pool_id`` or l7policy\u0027s ``redirect_pool_id``. Both listener and pool"},{"line_number":525,"context_line":"must set the protocol parameter. But the association between the listener and"},{"line_number":526,"context_line":"the pool isn\u0027t arbitrarily that has some constraints at the protocol aspect."},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"Valid protocol combinations"},{"line_number":529,"context_line":"---------------------------"}],"source_content_type":"text/x-c++src","patch_set":31,"id":"dfd5e7cf_371260b3","line":526,"in_reply_to":"ffd0ebdf_755c3b4b","updated":"2019-01-05 03:38:46.000000000","message":"Done","commit_id":"b4f94cd6b203e53ea6a9452154ef583e4a9cabfb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bed9a85b4a5f29f3cfc99740674fc6fd7b8d8768","unresolved":false,"context_lines":[{"line_number":585,"context_line":"---------------------------"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":588,"context_line":"|   Pool  \u0026  Listener  | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **TCP**              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":591,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_a5657647","line":588,"updated":"2019-03-08 01:05:48.000000000","message":"This can be a lot more clear by adding a row on top and to the left for the titles.","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"d584d3fe5d5f654d12d6e68b419e1e1fd0fd02a5","unresolved":false,"context_lines":[{"line_number":585,"context_line":"---------------------------"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":588,"context_line":"|   Pool  \u0026  Listener  | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **TCP**              |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":591,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_e941f90c","line":588,"in_reply_to":"5fc1f717_a5657647","updated":"2019-03-10 07:59:40.000000000","message":"Done","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bed9a85b4a5f29f3cfc99740674fc6fd7b8d8768","unresolved":false,"context_lines":[{"line_number":591,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| **HTTP**             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":593,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":595,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":596,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":597,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_655f8e72","line":594,"updated":"2019-03-08 01:05:48.000000000","message":"This is not valid for pools","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"d584d3fe5d5f654d12d6e68b419e1e1fd0fd02a5","unresolved":false,"context_lines":[{"line_number":591,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| **HTTP**             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":593,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":595,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":596,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":597,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_09456517","line":594,"in_reply_to":"5fc1f717_21f39b0c","updated":"2019-03-10 07:59:40.000000000","message":"Done","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"b557899ffe84532e5f984f9ea963680d8b6f1d37","unresolved":false,"context_lines":[{"line_number":591,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| **HTTP**             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":593,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":595,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":596,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":597,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_703733b2","line":594,"in_reply_to":"5fc1f717_655f8e72","updated":"2019-03-09 09:05:23.000000000","message":"Hi, Michael:\nI don\u0027t understand your mean. I know it is not valid for haproxy driver. http://git.openstack.org/cgit/openstack/octavia/tree/octavia/common/jinja/haproxy/jinja_cfg.py#n25\nBut, These constraints are acting on in the API layer.","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f9f1c462838e89e3cb2392da5bd1e0de708b3397","unresolved":false,"context_lines":[{"line_number":591,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| **HTTP**             |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":593,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":595,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":596,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":597,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_21f39b0c","line":594,"in_reply_to":"5fc1f717_703733b2","updated":"2019-03-10 00:58:00.000000000","message":"Both HTTPS and TERMINATED_HTTPS are not valid protocols for pools. They should not be accepted as valid.","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bed9a85b4a5f29f3cfc99740674fc6fd7b8d8768","unresolved":false,"context_lines":[{"line_number":593,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":595,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":596,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":597,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":598,"context_line":"| **PROXY**            |  Y  |  Y   |   Y   |        Y         |  N  |"},{"line_number":599,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_455cd27d","line":596,"updated":"2019-03-08 01:05:48.000000000","message":"This is not valid for pools.","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"d584d3fe5d5f654d12d6e68b419e1e1fd0fd02a5","unresolved":false,"context_lines":[{"line_number":593,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| **HTTPS**            |  Y  |  N   |   Y   |        N         |  N  |"},{"line_number":595,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":596,"context_line":"| **TERMINATED_HTTPS** |  N  |  N   |   N   |        Y         |  N  |"},{"line_number":597,"context_line":"+----------------------+-----+------+-------+------------------+-----+"},{"line_number":598,"context_line":"| **PROXY**            |  Y  |  Y   |   Y   |        Y         |  N  |"},{"line_number":599,"context_line":"+----------------------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5fc1f717_a94bf128","line":596,"in_reply_to":"5fc1f717_455cd27d","updated":"2019-03-10 07:59:40.000000000","message":"Done","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"24cd5074995f89d725541b3657fd2c6c4dd4e5c0","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"5fc1f717_0b4d5099","line":592,"range":{"start_line":592,"start_character":41,"end_line":592,"end_character":42},"updated":"2019-03-11 13:40:54.000000000","message":"Isn\u0027t this also a valid combination?","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"24cd5074995f89d725541b3657fd2c6c4dd4e5c0","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"5fc1f717_e16d8504","line":592,"range":{"start_line":592,"start_character":20,"end_line":592,"end_character":21},"updated":"2019-03-11 13:40:54.000000000","message":"Isn\u0027t this also a valid combination?","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"bee1ed04a628420a2b4df9232ec342548fcccfe4","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"5fc1f717_a9d0d120","line":592,"range":{"start_line":592,"start_character":28,"end_line":592,"end_character":29},"updated":"2019-03-10 08:44:56.000000000","message":"Thanks Carlos!\nBut, I have some doubt: Whether the HTTPS listener only combines with PROXY pool? Should we also constrain the pool protocol\u0027s valid value range in octavia/api/v2/types/pool.py?","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d227a6e193619cb5a151a8ad2bcde34a05c1b352","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"3fa7e38b_dd9ebd67","line":592,"range":{"start_line":592,"start_character":20,"end_line":592,"end_character":21},"in_reply_to":"3fa7e38b_b76b15b5","updated":"2020-01-08 23:08:12.000000000","message":"+1, HTTPS (pass through) is valid on pools.","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"ce67bdaf9cd1bba71af93b59852722d09a5d1c3e","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"5fc1f717_612402b0","line":592,"range":{"start_line":592,"start_character":20,"end_line":592,"end_character":21},"in_reply_to":"5fc1f717_45dd736e","updated":"2019-03-13 13:33:19.000000000","message":"I understand your point but I have a different view. There could be optimizations/layers skipped provided by the load balancer where TCP pool could offer better performances than HTTP pool, for example.\n\nIf we were now to invalidate HTTP listener/TCP pool (as an example), it would most likely break for users.\n\nWhat do others think?","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"16dd28466d21232eeca0f7761f2e6afe94d46505","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"3fa7e38b_b76b15b5","line":592,"range":{"start_line":592,"start_character":20,"end_line":592,"end_character":21},"in_reply_to":"5fc1f717_612402b0","updated":"2019-09-25 08:00:01.000000000","message":"Isn\u0027t HTTPS a valid protocol for pools? If not, we should update basic-cookbook example that combines HTTPS listener with HTTPS pool","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"24cd5074995f89d725541b3657fd2c6c4dd4e5c0","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"5fc1f717_cb9f4801","line":592,"range":{"start_line":592,"start_character":28,"end_line":592,"end_character":29},"in_reply_to":"5fc1f717_a9d0d120","updated":"2019-03-11 13:40:54.000000000","message":"Listener HTTPS and pool TCP is valid, yes. In fact, HTTPS listeners are translated in to TCP protocol in haproxy configuration.\n\nhttps://github.com/openstack/octavia/blob/6362aa4a2aae0ff1528fc5c4d4eb5f0a01e91c50/octavia/common/jinja/haproxy/jinja_cfg.py#L27\n\n\nAbout constraining the pool protocol: that would also be great to have, indeed. I might have not have called that out in hopes this patch could have gotten merged in Stein -- maybe if we frame it well (in release note as a fix) we still can and even backport to previous stable releases? Open for comments.","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"df8f9988c349411046090931af08e4f8d7b68086","unresolved":false,"context_lines":[{"line_number":589,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d+"},{"line_number":590,"context_line":"| **Pool** | TCP | HTTP | HTTPS | TERMINATED_HTTPS | UDP |"},{"line_number":591,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":592,"context_line":"| TCP      |  Y  |  N   |   N   |        N         |  N  |"},{"line_number":593,"context_line":"+----------+-----+------+-------+------------------+-----+"},{"line_number":594,"context_line":"| HTTP     |  Y  |  Y   |   N   |        Y         |  N  |"},{"line_number":595,"context_line":"+----------+-----+------+-------+------------------+-----+"}],"source_content_type":"text/x-c++src","patch_set":38,"id":"5fc1f717_45dd736e","line":592,"range":{"start_line":592,"start_character":20,"end_line":592,"end_character":21},"in_reply_to":"5fc1f717_e16d8504","updated":"2019-03-12 07:03:22.000000000","message":"Hi all:\nJust demonstrate my personal viewpoint. Put haproxy driver aside, just consider Octavia\u0027s semantic, I think the listener is a user-oriented component, the value of listener protocol represents the capacity of the load_balancer provides to users, the pool is a backend-oriented component, it\u0027s protocol represents that the load balancer how to access backend member. The backend member can be a TCP, HTTP, HTTPS, UDP service，So the pool should support TCP, HTTP, HTTPS, UDP and PROXXY.\nAbout the protocol combination, I think we should follow the below criterion: The listener\u0027s protocol should more basic protocols. For example, the TCP listener can be combined with HTTP pool, but the HTTP listener can\u0027t be combined with TCP pool.","commit_id":"7c2f603884a4587869b93e8e73ec16714c26937f"}],"octavia/api/v2/controllers/base.py":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"211ff917670000f3371a5af34dfa0f57f31a6682","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        for valid_pool_proto in proto_map[listener_protocol]:"},{"line_number":225,"context_line":"            if pool_protocol \u003d\u003d valid_pool_proto:"},{"line_number":226,"context_line":"                return"},{"line_number":227,"context_line":"        raise exceptions.InvalidProtocol(listner_proto\u003dlistener_protocol,"},{"line_number":228,"context_line":"                                         pool_proto\u003dpool_protocol)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_abc67a9b","line":227,"range":{"start_line":227,"start_character":41,"end_line":227,"end_character":54},"updated":"2018-09-17 09:00:28.000000000","message":"nit:listener_proto","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"1da96811f2b6206bd5bada7fe060400afb76fb7f","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        for valid_pool_proto in proto_map[listener_protocol]:"},{"line_number":225,"context_line":"            if pool_protocol \u003d\u003d valid_pool_proto:"},{"line_number":226,"context_line":"                return"},{"line_number":227,"context_line":"        raise exceptions.InvalidProtocol(listner_proto\u003dlistener_protocol,"},{"line_number":228,"context_line":"                                         pool_proto\u003dpool_protocol)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_654f0d92","line":227,"range":{"start_line":227,"start_character":41,"end_line":227,"end_character":54},"in_reply_to":"3f79a3b5_abc67a9b","updated":"2018-09-18 15:05:40.000000000","message":"Thanks","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            if pool_protocol \u003d\u003d valid_pool_proto:"},{"line_number":227,"context_line":"                return"},{"line_number":228,"context_line":"        detail \u003d _(\"The pool protocol \u0027%(pool_protocol)s\u0027 is invalid while \""},{"line_number":229,"context_line":"                   \"the listener potocol is \u0027%(listener_protocol)s\u0027.\") % {"},{"line_number":230,"context_line":"                       \"pool_protocol\": pool_protocol,"},{"line_number":231,"context_line":"                       \"listener_protocol\": listener_protocol}"},{"line_number":232,"context_line":"        raise exceptions.ValidationException(detail\u003ddetail)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_62d57c18","line":229,"range":{"start_line":229,"start_character":33,"end_line":229,"end_character":40},"updated":"2018-12-11 07:36:21.000000000","message":"typo","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            if pool_protocol \u003d\u003d valid_pool_proto:"},{"line_number":227,"context_line":"                return"},{"line_number":228,"context_line":"        detail \u003d _(\"The pool protocol \u0027%(pool_protocol)s\u0027 is invalid while \""},{"line_number":229,"context_line":"                   \"the listener potocol is \u0027%(listener_protocol)s\u0027.\") % {"},{"line_number":230,"context_line":"                       \"pool_protocol\": pool_protocol,"},{"line_number":231,"context_line":"                       \"listener_protocol\": listener_protocol}"},{"line_number":232,"context_line":"        raise exceptions.ValidationException(detail\u003ddetail)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_5c9dbfb6","line":229,"range":{"start_line":229,"start_character":33,"end_line":229,"end_character":40},"in_reply_to":"3f79a3b5_62d57c18","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"83d94fcd471dc83bfd8e0119fd96a33a9b20c9f0","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            getattr(obj, attr)) and not attr.startswith(\"_\")]"},{"line_number":231,"context_line":"        return attrs"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def _validate_protocol(self, listener_protocol, pool_protocol):"},{"line_number":234,"context_line":"        proto_map \u003d constants.VALID_LISTENER_POOL_PROTOCOL_MAP"},{"line_number":235,"context_line":"        for valid_pool_proto in proto_map[listener_protocol]:"},{"line_number":236,"context_line":"            if pool_protocol \u003d\u003d valid_pool_proto:"}],"source_content_type":"text/x-python","patch_set":35,"id":"5fc1f717_21d2df5d","line":233,"updated":"2019-03-07 22:40:11.000000000","message":"can be a @staticmethod","commit_id":"3e7a1aee24ac4d7f69b4f80fe916ff2cdcb43b77"}],"octavia/api/v2/controllers/l7policy.py":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"211ff917670000f3371a5af34dfa0f57f31a6682","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        if l7policy.redirect_pool_id:"},{"line_number":132,"context_line":"            db_pool \u003d self._get_db_pool("},{"line_number":133,"context_line":"                context.session, l7policy.redirect_pool_id)"},{"line_number":134,"context_line":"            self._validate_protocol(listener.protocol, db_pool.protocol)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._auth_validate_action(context, l7policy.project_id,"},{"line_number":137,"context_line":"                                   constants.RBAC_POST)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_0b3bee9b","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":72},"updated":"2018-09-17 09:00:28.000000000","message":"if you want listener obj, why not move this part after L127?","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"1da96811f2b6206bd5bada7fe060400afb76fb7f","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        if l7policy.redirect_pool_id:"},{"line_number":132,"context_line":"            db_pool \u003d self._get_db_pool("},{"line_number":133,"context_line":"                context.session, l7policy.redirect_pool_id)"},{"line_number":134,"context_line":"            self._validate_protocol(listener.protocol, db_pool.protocol)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        self._auth_validate_action(context, l7policy.project_id,"},{"line_number":137,"context_line":"                                   constants.RBAC_POST)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_e5c6bd49","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":72},"in_reply_to":"3f79a3b5_0b3bee9b","updated":"2018-09-18 15:05:40.000000000","message":"I also need pool obj. And l7policy not always have redirct_pool_id. So I thank the current solution is better.","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"}],"octavia/common/constants.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d3ea36125d9dd3845911f5590aaa18a5b42715dc","unresolved":false,"context_lines":[{"line_number":212,"context_line":"PROTOCOL_TERMINATED_HTTPS \u003d \u0027TERMINATED_HTTPS\u0027"},{"line_number":213,"context_line":"PROTOCOL_PROXY \u003d \u0027PROXY\u0027"},{"line_number":214,"context_line":"SUPPORTED_PROTOCOLS \u003d (PROTOCOL_TCP, PROTOCOL_HTTPS, PROTOCOL_HTTP,"},{"line_number":215,"context_line":"                       PROTOCOL_TERMINATED_HTTPS, PROTOCOL_PROXY, PROTOCOL_UDP)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"VALID_LISTENER_POOL_PROTOCOL_MAP \u003d {PROTOCOL_TCP: [PROTOCOL_TCP,"},{"line_number":218,"context_line":"                                                   PROTOCOL_HTTP,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3fa7e38b_29d4701e","line":215,"updated":"2020-01-08 23:28:34.000000000","message":"These are all duplicates from line 152","commit_id":"29864a17a8c14f987907f61faa0a6141a75da6ff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d3ea36125d9dd3845911f5590aaa18a5b42715dc","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"VALID_LISTENER_POOL_PROTOCOL_MAP \u003d {PROTOCOL_TCP: [PROTOCOL_TCP,"},{"line_number":218,"context_line":"                                                   PROTOCOL_HTTP,"},{"line_number":219,"context_line":"                                                   PROTOCOL_HTTPS],"},{"line_number":220,"context_line":"                                    PROTOCOL_HTTP: [PROTOCOL_HTTP,"},{"line_number":221,"context_line":"                                                    PROTOCOL_PROXY],"},{"line_number":222,"context_line":"                                    PROTOCOL_HTTPS: [PROTOCOL_PROXY],"}],"source_content_type":"text/x-python","patch_set":39,"id":"3fa7e38b_c9d6fc26","line":219,"updated":"2020-01-08 23:28:34.000000000","message":"PROXY is missing here.","commit_id":"29864a17a8c14f987907f61faa0a6141a75da6ff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d3ea36125d9dd3845911f5590aaa18a5b42715dc","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                   PROTOCOL_HTTPS],"},{"line_number":220,"context_line":"                                    PROTOCOL_HTTP: [PROTOCOL_HTTP,"},{"line_number":221,"context_line":"                                                    PROTOCOL_PROXY],"},{"line_number":222,"context_line":"                                    PROTOCOL_HTTPS: [PROTOCOL_PROXY],"},{"line_number":223,"context_line":"                                    PROTOCOL_TERMINATED_HTTPS:"},{"line_number":224,"context_line":"                                        [PROTOCOL_HTTP,"},{"line_number":225,"context_line":"                                         PROTOCOL_PROXY],"}],"source_content_type":"text/x-python","patch_set":39,"id":"3fa7e38b_89e4840f","line":222,"updated":"2020-01-08 23:28:34.000000000","message":"HTTPS and TCP are valid here.","commit_id":"29864a17a8c14f987907f61faa0a6141a75da6ff"}],"octavia/common/exceptions.py":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"211ff917670000f3371a5af34dfa0f57f31a6682","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    code \u003d 400"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class InvalidProtocol(APIException):"},{"line_number":318,"context_line":"    msg \u003d _(\"It\u0027s invalid that listener\u0027s protocol is \u0027%(listner_proto)s\u0027 \""},{"line_number":319,"context_line":"            \"while pool\u0027s protocol is \u0027%(pool_proto)s\u0027.\")"},{"line_number":320,"context_line":"    code \u003d 400"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_6b20624a","line":317,"range":{"start_line":317,"start_character":6,"end_line":317,"end_character":21},"updated":"2018-09-17 09:00:28.000000000","message":"why not just using ValidationException?","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"1da96811f2b6206bd5bada7fe060400afb76fb7f","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    code \u003d 400"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class InvalidProtocol(APIException):"},{"line_number":318,"context_line":"    msg \u003d _(\"It\u0027s invalid that listener\u0027s protocol is \u0027%(listner_proto)s\u0027 \""},{"line_number":319,"context_line":"            \"while pool\u0027s protocol is \u0027%(pool_proto)s\u0027.\")"},{"line_number":320,"context_line":"    code \u003d 400"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_05e179cf","line":317,"range":{"start_line":317,"start_character":6,"end_line":317,"end_character":21},"in_reply_to":"3f79a3b5_6b20624a","updated":"2018-09-18 15:05:40.000000000","message":"Yes, It\u0027s a good suggestion.","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"211ff917670000f3371a5af34dfa0f57f31a6682","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class InvalidProtocol(APIException):"},{"line_number":318,"context_line":"    msg \u003d _(\"It\u0027s invalid that listener\u0027s protocol is \u0027%(listner_proto)s\u0027 \""},{"line_number":319,"context_line":"            \"while pool\u0027s protocol is \u0027%(pool_proto)s\u0027.\")"},{"line_number":320,"context_line":"    code \u003d 400"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_8bf4ded0","line":318,"range":{"start_line":318,"start_character":57,"end_line":318,"end_character":70},"updated":"2018-09-17 09:00:28.000000000","message":"nit","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"}],"octavia/tests/common/constants.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d3ea36125d9dd3845911f5590aaa18a5b42715dc","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                              constants.PROTOCOL_HTTPS,"},{"line_number":225,"context_line":"                              constants.PROTOCOL_TERMINATED_HTTPS,"},{"line_number":226,"context_line":"                              constants.PROTOCOL_UDP],"},{"line_number":227,"context_line":"    constants.PROTOCOL_HTTPS: [constants.PROTOCOL_TCP,"},{"line_number":228,"context_line":"                               constants.PROTOCOL_HTTP,"},{"line_number":229,"context_line":"                               constants.PROTOCOL_TERMINATED_HTTPS,"},{"line_number":230,"context_line":"                               constants.PROTOCOL_UDP],"}],"source_content_type":"text/x-python","patch_set":39,"id":"3fa7e38b_29a230ae","line":227,"updated":"2020-01-08 23:28:34.000000000","message":"TCP is valid.","commit_id":"29864a17a8c14f987907f61faa0a6141a75da6ff"}],"octavia/tests/functional/api/v2/base.py":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"9ee288533709f0ecf3bc4ef7e3ceaf8c991b0083","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                        status\u003dNone, **optionals):"},{"line_number":226,"context_line":"        req_dict \u003d {\u0027protocol\u0027: protocol, \u0027protocol_port\u0027: protocol_port,"},{"line_number":227,"context_line":"                    \u0027loadbalancer_id\u0027: lb_id}"},{"line_number":228,"context_line":"        if protocol \u003d\u003d constants.PROTOCOL_TERMINATED_HTTPS:"},{"line_number":229,"context_line":"            req_dict.update("},{"line_number":230,"context_line":"                {\u0027sni_container_refs\u0027: [uuidutils.generate_uuid()]})"},{"line_number":231,"context_line":"        req_dict.update(optionals)"}],"source_content_type":"text/x-python","patch_set":36,"id":"5fc1f717_45b85275","line":228,"updated":"2019-03-07 23:38:49.000000000","message":"Oops, this doesn\u0027t look like the right place.","commit_id":"ac8c56fdaeee1f02e0fae265108354f40fea8729"}],"octavia/tests/functional/api/v2/test_listener.py":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"211ff917670000f3371a5af34dfa0f57f31a6682","unresolved":false,"context_lines":[{"line_number":586,"context_line":"                       \u0027protocol\u0027: constants.PROTOCOL_HTTP,"},{"line_number":587,"context_line":"                       \u0027protocol_port\u0027: 80,"},{"line_number":588,"context_line":"                       \u0027loadbalancer_id\u0027: self.lb_id}"},{"line_number":589,"context_line":"        expect_error_msg \u003d (\"It\u0027s invalid that listener\u0027s protocol \""},{"line_number":590,"context_line":"                            \"is \u0027%s\u0027 while pool\u0027s protocol \""},{"line_number":591,"context_line":"                            \"is \u0027%s\u0027.\") % (lb_listener[\u0027protocol\u0027],"},{"line_number":592,"context_line":"                                           constants.PROTOCOL_UDP)"},{"line_number":593,"context_line":"        res \u003d self.post(self.LISTENERS_PATH, self._build_body(lb_listener),"},{"line_number":594,"context_line":"                        status\u003d400, expect_errors\u003dTrue)"},{"line_number":595,"context_line":"        self.assertEqual(expect_error_msg, res.json[\u0027faultstring\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_cbaad682","line":592,"range":{"start_line":589,"start_character":28,"end_line":592,"end_character":66},"updated":"2018-09-17 09:00:28.000000000","message":"So users can not know which one is correct, as you just show that\u0027s wrong, so maybe, you also need to add the from to the cookbook or something, which you introduced in the storyboard.","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"1da96811f2b6206bd5bada7fe060400afb76fb7f","unresolved":false,"context_lines":[{"line_number":586,"context_line":"                       \u0027protocol\u0027: constants.PROTOCOL_HTTP,"},{"line_number":587,"context_line":"                       \u0027protocol_port\u0027: 80,"},{"line_number":588,"context_line":"                       \u0027loadbalancer_id\u0027: self.lb_id}"},{"line_number":589,"context_line":"        expect_error_msg \u003d (\"It\u0027s invalid that listener\u0027s protocol \""},{"line_number":590,"context_line":"                            \"is \u0027%s\u0027 while pool\u0027s protocol \""},{"line_number":591,"context_line":"                            \"is \u0027%s\u0027.\") % (lb_listener[\u0027protocol\u0027],"},{"line_number":592,"context_line":"                                           constants.PROTOCOL_UDP)"},{"line_number":593,"context_line":"        res \u003d self.post(self.LISTENERS_PATH, self._build_body(lb_listener),"},{"line_number":594,"context_line":"                        status\u003d400, expect_errors\u003dTrue)"},{"line_number":595,"context_line":"        self.assertEqual(expect_error_msg, res.json[\u0027faultstring\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_451211b6","line":592,"range":{"start_line":589,"start_character":28,"end_line":592,"end_character":66},"in_reply_to":"3f79a3b5_cbaad682","updated":"2018-09-18 15:05:40.000000000","message":"OK","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                       \u0027protocol_port\u0027: 80,"},{"line_number":588,"context_line":"                       \u0027loadbalancer_id\u0027: self.lb_id}"},{"line_number":589,"context_line":"        expect_error_msg \u003d (\"Validation failure: The pool protocol \u0027%s\u0027 is \""},{"line_number":590,"context_line":"                            \"invalid while the listener potocol is \u0027%s\u0027.\") % ("},{"line_number":591,"context_line":"                                constants.PROTOCOL_UDP,"},{"line_number":592,"context_line":"                                lb_listener[\u0027protocol\u0027])"},{"line_number":593,"context_line":"        res \u003d self.post(self.LISTENERS_PATH, self._build_body(lb_listener),"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_029cc859","line":590,"range":{"start_line":590,"start_character":56,"end_line":590,"end_character":63},"updated":"2018-12-11 07:36:21.000000000","message":"here","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                       \u0027protocol_port\u0027: 80,"},{"line_number":588,"context_line":"                       \u0027loadbalancer_id\u0027: self.lb_id}"},{"line_number":589,"context_line":"        expect_error_msg \u003d (\"Validation failure: The pool protocol \u0027%s\u0027 is \""},{"line_number":590,"context_line":"                            \"invalid while the listener potocol is \u0027%s\u0027.\") % ("},{"line_number":591,"context_line":"                                constants.PROTOCOL_UDP,"},{"line_number":592,"context_line":"                                lb_listener[\u0027protocol\u0027])"},{"line_number":593,"context_line":"        res \u003d self.post(self.LISTENERS_PATH, self._build_body(lb_listener),"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_bcadf3e8","line":590,"range":{"start_line":590,"start_character":56,"end_line":590,"end_character":63},"in_reply_to":"3f79a3b5_029cc859","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":1584,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1585,"context_line":"                expect_error_msg \u003d (\"Validation failure: The pool protocol \""},{"line_number":1586,"context_line":"                                    \"\u0027%s\u0027 is invalid while the listener \""},{"line_number":1587,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1588,"context_line":"                                                           listener_proto)"},{"line_number":1589,"context_line":"                listener \u003d {\u0027protocol\u0027: listener_proto,"},{"line_number":1590,"context_line":"                            \u0027protocol_port\u0027: port,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_e29c2c5a","line":1587,"range":{"start_line":1587,"start_character":37,"end_line":1587,"end_character":44},"updated":"2018-12-11 07:36:21.000000000","message":"here","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":1584,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1585,"context_line":"                expect_error_msg \u003d (\"Validation failure: The pool protocol \""},{"line_number":1586,"context_line":"                                    \"\u0027%s\u0027 is invalid while the listener \""},{"line_number":1587,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1588,"context_line":"                                                           listener_proto)"},{"line_number":1589,"context_line":"                listener \u003d {\u0027protocol\u0027: listener_proto,"},{"line_number":1590,"context_line":"                            \u0027protocol_port\u0027: port,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_7c7d1b6e","line":1587,"range":{"start_line":1587,"start_character":37,"end_line":1587,"end_character":44},"in_reply_to":"3f79a3b5_e29c2c5a","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"                expect_error_msg \u003d (\"Validation failure: The pool protocol \""},{"line_number":1625,"context_line":"                                    \"\u0027%s\u0027 is invalid while the listener \""},{"line_number":1626,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1627,"context_line":"                                                           listener_proto)"},{"line_number":1628,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1629,"context_line":"                pool \u003d self.create_pool("}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_82b1b8e5","line":1626,"range":{"start_line":1626,"start_character":37,"end_line":1626,"end_character":44},"updated":"2018-12-11 07:36:21.000000000","message":"here","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"                expect_error_msg \u003d (\"Validation failure: The pool protocol \""},{"line_number":1625,"context_line":"                                    \"\u0027%s\u0027 is invalid while the listener \""},{"line_number":1626,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1627,"context_line":"                                                           listener_proto)"},{"line_number":1628,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1629,"context_line":"                pool \u003d self.create_pool("}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_9c80374a","line":1626,"range":{"start_line":1626,"start_character":37,"end_line":1626,"end_character":44},"in_reply_to":"3f79a3b5_82b1b8e5","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"}],"octavia/tests/functional/api/v2/test_load_balancer.py":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"211ff917670000f3371a5af34dfa0f57f31a6682","unresolved":false,"context_lines":[{"line_number":2539,"context_line":"            expected_members\u003d[expected_member],"},{"line_number":2540,"context_line":"            create_hm\u003dcreate_hm,"},{"line_number":2541,"context_line":"            expected_hm\u003dexpected_hm,"},{"line_number":2542,"context_line":"            protocol\u003dconstants.PROTOCOL_HTTP)"},{"line_number":2543,"context_line":"        create_sni_containers, expected_sni_containers \u003d ("},{"line_number":2544,"context_line":"            self._get_sni_container_bodies())"},{"line_number":2545,"context_line":"        create_l7rules, expected_l7rules \u003d self._get_l7rules_bodies()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_2bc02a2b","line":2542,"range":{"start_line":2542,"start_character":21,"end_line":2542,"end_character":44},"updated":"2018-09-17 09:00:28.000000000","message":"why change this, and the default value of protocol in _get_pool_bodies is constants.PROTOCOL_HTTP.","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"1da96811f2b6206bd5bada7fe060400afb76fb7f","unresolved":false,"context_lines":[{"line_number":2539,"context_line":"            expected_members\u003d[expected_member],"},{"line_number":2540,"context_line":"            create_hm\u003dcreate_hm,"},{"line_number":2541,"context_line":"            expected_hm\u003dexpected_hm,"},{"line_number":2542,"context_line":"            protocol\u003dconstants.PROTOCOL_HTTP)"},{"line_number":2543,"context_line":"        create_sni_containers, expected_sni_containers \u003d ("},{"line_number":2544,"context_line":"            self._get_sni_container_bodies())"},{"line_number":2545,"context_line":"        create_l7rules, expected_l7rules \u003d self._get_l7rules_bodies()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_256cb505","line":2542,"range":{"start_line":2542,"start_character":21,"end_line":2542,"end_character":44},"in_reply_to":"3f79a3b5_2bc02a2b","updated":"2018-09-18 15:05:40.000000000","message":"In some other test cases, the protocol of the listener is set to HTTP. Then, if the protocol of pool is still set to TCP, In my patch, this is an invalid case.","commit_id":"3d3e59c3811498948cd0786efb27e9690dd93c43"}],"octavia/tests/functional/api/v2/test_pool.py":[{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"                port \u003d port + 1"},{"line_number":1732,"context_line":"                expect_error_msg \u003d (\"Validation failure: The pool protocol \""},{"line_number":1733,"context_line":"                                    \"\u0027%s\u0027 is invalid while the listener \""},{"line_number":1734,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1735,"context_line":"                                                           listener_proto)"},{"line_number":1736,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1737,"context_line":"                li \u003d self.create_listener("}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_82b538f2","line":1734,"range":{"start_line":1734,"start_character":37,"end_line":1734,"end_character":44},"updated":"2018-12-11 07:36:21.000000000","message":"Ah, the test case is also write wrong. ;-). Just a Nit.","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"                port \u003d port + 1"},{"line_number":1732,"context_line":"                expect_error_msg \u003d (\"Validation failure: The pool protocol \""},{"line_number":1733,"context_line":"                                    \"\u0027%s\u0027 is invalid while the listener \""},{"line_number":1734,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1735,"context_line":"                                                           listener_proto)"},{"line_number":1736,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1737,"context_line":"                li \u003d self.create_listener("}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_fc904b99","line":1734,"range":{"start_line":1734,"start_character":37,"end_line":1734,"end_character":44},"in_reply_to":"3f79a3b5_82b538f2","updated":"2018-12-11 12:13:43.000000000","message":"thanks","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"fb3d701928f1c710f3540fbf6d275433229e6266","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1735,"context_line":"                                                           listener_proto)"},{"line_number":1736,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1737,"context_line":"                li \u003d self.create_listener("},{"line_number":1738,"context_line":"                    listener_proto, port, self.lb_id).get(\u0027listener\u0027)"},{"line_number":1739,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1740,"context_line":"                if li[\u0027default_pool_id\u0027] is None:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_c26c906d","line":1737,"range":{"start_line":1737,"start_character":16,"end_line":1737,"end_character":18},"updated":"2018-12-11 07:36:21.000000000","message":"Nit: if make this name from \"li\" to \"test_listener\"/\"listener\" which are good for readable.","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"15cc88381bc076d6f52ef7c5679f6534f4035bfd","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"                                    \"potocol is \u0027%s\u0027.\") % (pool_proto,"},{"line_number":1735,"context_line":"                                                           listener_proto)"},{"line_number":1736,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1737,"context_line":"                li \u003d self.create_listener("},{"line_number":1738,"context_line":"                    listener_proto, port, self.lb_id).get(\u0027listener\u0027)"},{"line_number":1739,"context_line":"                self.set_lb_status(self.lb_id)"},{"line_number":1740,"context_line":"                if li[\u0027default_pool_id\u0027] is None:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f79a3b5_1c8c277f","line":1737,"range":{"start_line":1737,"start_character":16,"end_line":1737,"end_character":18},"in_reply_to":"3f79a3b5_c26c906d","updated":"2018-12-11 12:13:43.000000000","message":"OK","commit_id":"a82a37011b10f8bd695f6b041ec7eaed8069a678"}]}
