)]}'
{"doc/source/guides/l7-cookbook.rst":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    neutron lbaas-l7rule-create --type HOST_NAME --compare-type ENDS_WITH --value example.com policy1"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Send unauthenticated users to *login_pool* (secenario 1)"},{"line_number":168,"context_line":"--------------------------------------------------------"},{"line_number":169,"context_line":"**Scenario description**:"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_6220d8f8","line":167,"range":{"start_line":167,"start_character":44,"end_line":167,"end_character":53},"updated":"2016-09-02 20:03:55.000000000","message":"scenario","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    neutron lbaas-l7rule-create --type HOST_NAME --compare-type ENDS_WITH --value example.com policy1"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Send unauthenticated users to *login_pool* (secenario 1)"},{"line_number":168,"context_line":"--------------------------------------------------------"},{"line_number":169,"context_line":"**Scenario description**:"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_f4865415","line":167,"range":{"start_line":167,"start_character":44,"end_line":167,"end_character":53},"in_reply_to":"9a89bdaa_6220d8f8","updated":"2016-09-09 05:47:24.000000000","message":"Done","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":184,"context_line":"to set session variables to which the default_pool servers will have access"},{"line_number":185,"context_line":"outside the data path with the web client. There may be other security concerns"},{"line_number":186,"context_line":"as well. This example is not meant to address how these are to be"},{"line_number":187,"context_line":"accomplished-- it\u0027s mainly meant to show how L7 application routing can be done"},{"line_number":188,"context_line":"based on a browser cookie."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"**Solution**:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_a25f4074","line":187,"updated":"2016-09-02 20:03:55.000000000","message":"space","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":184,"context_line":"to set session variables to which the default_pool servers will have access"},{"line_number":185,"context_line":"outside the data path with the web client. There may be other security concerns"},{"line_number":186,"context_line":"as well. This example is not meant to address how these are to be"},{"line_number":187,"context_line":"accomplished-- it\u0027s mainly meant to show how L7 application routing can be done"},{"line_number":188,"context_line":"based on a browser cookie."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"**Solution**:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_74a2449c","line":187,"in_reply_to":"9a89bdaa_a25f4074","updated":"2016-09-09 05:47:24.000000000","message":"Done","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    neutron lbaas-l7rule-create --type COOKIE --key auth_token --compare-type REGEX --value \u0027.*\u0027 --invert policy1"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Send unauthenticated users to *login_pool* (secenario 2)"},{"line_number":210,"context_line":"--------------------------------------------------------"},{"line_number":211,"context_line":"**Scenario description**:"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_02d62cc5","line":209,"range":{"start_line":209,"start_character":44,"end_line":209,"end_character":53},"updated":"2016-09-02 20:03:55.000000000","message":"scenario","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    neutron lbaas-l7rule-create --type COOKIE --key auth_token --compare-type REGEX --value \u0027.*\u0027 --invert policy1"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Send unauthenticated users to *login_pool* (secenario 2)"},{"line_number":210,"context_line":"--------------------------------------------------------"},{"line_number":211,"context_line":"**Scenario description**:"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_b4accc8d","line":209,"range":{"start_line":209,"start_character":44,"end_line":209,"end_character":53},"in_reply_to":"9a89bdaa_02d62cc5","updated":"2016-09-09 05:47:24.000000000","message":"Done","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"}],"doc/source/guides/l7.rst":[{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"643eb8a43ab19098f28884936a5837483afc42bb","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Layer 7 load balancing takes its name from the OSI model, indicating that the"},{"line_number":23,"context_line":"load balancer distributes requests to back-end pools based on layer 7"},{"line_number":24,"context_line":"(application) data. Layer 7 load balancing is also known as \"request"},{"line_number":25,"context_line":"switching,\" \"application load balancing,\" and \"content based routing.\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A layer 7 load balancer consists of a listener that accepts requests on behalf"},{"line_number":28,"context_line":"of a number of back-end pools and distributes those requests based on policies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_256ec2c9","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":70},"updated":"2016-08-26 08:16:16.000000000","message":"switching\",  \u0026  balancing\",  \u0026  routing\".","commit_id":"a2bfd684a35bd8a86ded5eb4c787fa99a2e9a9b9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0c9953f2bd15cabd9a514b59a8ac88a4febd0df7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Layer 7 load balancing takes its name from the OSI model, indicating that the"},{"line_number":23,"context_line":"load balancer distributes requests to back-end pools based on layer 7"},{"line_number":24,"context_line":"(application) data. Layer 7 load balancing is also known as \"request"},{"line_number":25,"context_line":"switching,\" \"application load balancing,\" and \"content based routing.\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A layer 7 load balancer consists of a listener that accepts requests on behalf"},{"line_number":28,"context_line":"of a number of back-end pools and distributes those requests based on policies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_e3a108ab","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":70},"in_reply_to":"fa7ab95a_256ec2c9","updated":"2016-08-26 18:14:31.000000000","message":"Done","commit_id":"a2bfd684a35bd8a86ded5eb4c787fa99a2e9a9b9"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"643eb8a43ab19098f28884936a5837483afc42bb","unresolved":false,"context_lines":[{"line_number":181,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":182,"context_line":"* :doc:`../api/octaviaapi`"},{"line_number":183,"context_line":"* https://github.com/openstack/neutron-specs/blob/master/specs/mitaka/lbaas-l7-rules.rst"},{"line_number":184,"context_line":"* http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#7"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_4a3af537","line":184,"range":{"start_line":184,"start_character":0,"end_line":184,"end_character":64},"updated":"2016-08-26 08:16:16.000000000","message":"This page has a deprecated warning.\nMaybe http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#7 is better.","commit_id":"a2bfd684a35bd8a86ded5eb4c787fa99a2e9a9b9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0c9953f2bd15cabd9a514b59a8ac88a4febd0df7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":182,"context_line":"* :doc:`../api/octaviaapi`"},{"line_number":183,"context_line":"* https://github.com/openstack/neutron-specs/blob/master/specs/mitaka/lbaas-l7-rules.rst"},{"line_number":184,"context_line":"* http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#7"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_c3724449","line":184,"range":{"start_line":184,"start_character":0,"end_line":184,"end_character":64},"in_reply_to":"fa7ab95a_4a3af537","updated":"2016-08-26 18:14:31.000000000","message":"Done","commit_id":"a2bfd684a35bd8a86ded5eb4c787fa99a2e9a9b9"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"L7 load balancing in Octavia"},{"line_number":46,"context_line":"----------------------------"},{"line_number":47,"context_line":"The layer 7 load balancing capabilities described in this document were added"},{"line_number":48,"context_line":"to added to Neutron LBaaS and Octavia in the Mitaka release cycle (Octavia"},{"line_number":49,"context_line":"0.8)."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"While layer 7 load balancing in general can in theory be done for any"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_3fd8a7ef","line":48,"range":{"start_line":47,"start_character":72,"end_line":48,"end_character":8},"updated":"2016-09-02 20:03:55.000000000","message":"To many added","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"L7 load balancing in Octavia"},{"line_number":46,"context_line":"----------------------------"},{"line_number":47,"context_line":"The layer 7 load balancing capabilities described in this document were added"},{"line_number":48,"context_line":"to added to Neutron LBaaS and Octavia in the Mitaka release cycle (Octavia"},{"line_number":49,"context_line":"0.8)."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"While layer 7 load balancing in general can in theory be done for any"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_b4c3ec37","line":48,"range":{"start_line":47,"start_character":72,"end_line":48,"end_character":8},"in_reply_to":"9a89bdaa_3fd8a7ef","updated":"2016-09-09 05:47:24.000000000","message":"Done","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":48,"context_line":"to added to Neutron LBaaS and Octavia in the Mitaka release cycle (Octavia"},{"line_number":49,"context_line":"0.8)."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"While layer 7 load balancing in general can in theory be done for any"},{"line_number":52,"context_line":"well-defined layer 7 application interface, for the purposes of Octavia, L7"},{"line_number":53,"context_line":"functionality refers only to the HTTP protocol and its semantics."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_bf991722","line":51,"range":{"start_line":51,"start_character":29,"end_line":51,"end_character":53},"updated":"2016-09-02 20:03:55.000000000","message":"It must be rephrased","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"to added to Neutron LBaaS and Octavia in the Mitaka release cycle (Octavia"},{"line_number":49,"context_line":"0.8)."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"While layer 7 load balancing in general can in theory be done for any"},{"line_number":52,"context_line":"well-defined layer 7 application interface, for the purposes of Octavia, L7"},{"line_number":53,"context_line":"functionality refers only to the HTTP protocol and its semantics."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_74d084f8","line":51,"range":{"start_line":51,"start_character":29,"end_line":51,"end_character":53},"in_reply_to":"9a89bdaa_bf991722","updated":"2016-09-09 05:47:24.000000000","message":"Done","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":56,"context_line":"How does it work?"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":58,"context_line":"Neutron LBaaS and Octavia accomplish the logic of layer 7 load balancing"},{"line_number":59,"context_line":"through the use of L7 Rules and L7 Policies. An L7 Rule is a single, simple"},{"line_number":60,"context_line":"logical test which returns either true or false. An L7 Policy is a collection"},{"line_number":61,"context_line":"of L7 rules, as well as a defined action that should be taken if all the rules"},{"line_number":62,"context_line":"associated with the policy match."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_7f906fed","line":60,"range":{"start_line":59,"start_character":45,"end_line":60,"end_character":47},"updated":"2016-09-02 20:03:55.000000000","message":"The same phrase is next section.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":56,"context_line":"How does it work?"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":58,"context_line":"Neutron LBaaS and Octavia accomplish the logic of layer 7 load balancing"},{"line_number":59,"context_line":"through the use of L7 Rules and L7 Policies. An L7 Rule is a single, simple"},{"line_number":60,"context_line":"logical test which returns either true or false. An L7 Policy is a collection"},{"line_number":61,"context_line":"of L7 rules, as well as a defined action that should be taken if all the rules"},{"line_number":62,"context_line":"associated with the policy match."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_141658a7","line":60,"range":{"start_line":59,"start_character":45,"end_line":60,"end_character":47},"in_reply_to":"9a89bdaa_7f906fed","updated":"2016-09-09 05:47:24.000000000","message":"That\u0027s mostly deliberate. Though I\u0027ll adjust the wording slightly.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"An L7 Policy is a collection of L7 rules associated with a Listener, and which"},{"line_number":115,"context_line":"may also have an association to a back-end pool. Policies describe actions that"},{"line_number":116,"context_line":"should be taken by the load balancing software if all of the rules in the"},{"line_number":117,"context_line":"policy return true / match."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"See also: :doc:`../api/octaviaapi`"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_625538c5","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":26},"updated":"2016-09-02 20:03:55.000000000","message":"there was info that rule can only return true/false not any match","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"An L7 Policy is a collection of L7 rules associated with a Listener, and which"},{"line_number":115,"context_line":"may also have an association to a back-end pool. Policies describe actions that"},{"line_number":116,"context_line":"should be taken by the load balancing software if all of the rules in the"},{"line_number":117,"context_line":"policy return true / match."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"See also: :doc:`../api/octaviaapi`"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_9450a860","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":26},"in_reply_to":"9a89bdaa_625538c5","updated":"2016-09-09 05:47:24.000000000","message":"Technically \"match\" is a true result. But I agree that this is possibly confusing.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Policy Actions"},{"line_number":132,"context_line":"______________"},{"line_number":133,"context_line":"If an L7 policy matches a given request, then that policy\u0027s action is executed."},{"line_number":134,"context_line":"The following are the actions an L7 Policy may take:"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* ``REJECT``: The request is denied with an appropriate response code, and not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_a204a0c6","line":133,"range":{"start_line":133,"start_character":57,"end_line":133,"end_character":60},"updated":"2016-09-02 20:03:55.000000000","message":"Without that \u0027s if I\u0027m right","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Policy Actions"},{"line_number":132,"context_line":"______________"},{"line_number":133,"context_line":"If an L7 policy matches a given request, then that policy\u0027s action is executed."},{"line_number":134,"context_line":"The following are the actions an L7 Policy may take:"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* ``REJECT``: The request is denied with an appropriate response code, and not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_34d0bcc9","line":133,"range":{"start_line":133,"start_character":57,"end_line":133,"end_character":60},"in_reply_to":"9a89bdaa_a204a0c6","updated":"2016-09-09 05:47:24.000000000","message":"No, the apostrophe is needed here:  \"policy\u0027s\" is meant to be possessive in this sentence.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* ``REJECT``: The request is denied with an appropriate response code, and not"},{"line_number":137,"context_line":"  forwarded on to any back-end pool."},{"line_number":138,"context_line":"* ``REDIRECT_TO_URL``: The request is sent an HTTP redirect to the URL defined"},{"line_number":139,"context_line":"  in the ``redirect_url`` parameter."},{"line_number":140,"context_line":"* ``REDIRECT_TO_POOL``: The request is forwarded to the back-end pool"},{"line_number":141,"context_line":"  associated with the L7 policy (which is usually not the default pool"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_42f674d8","line":138,"range":{"start_line":138,"start_character":43,"end_line":138,"end_character":45},"updated":"2016-09-02 20:03:55.000000000","message":"as","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* ``REJECT``: The request is denied with an appropriate response code, and not"},{"line_number":137,"context_line":"  forwarded on to any back-end pool."},{"line_number":138,"context_line":"* ``REDIRECT_TO_URL``: The request is sent an HTTP redirect to the URL defined"},{"line_number":139,"context_line":"  in the ``redirect_url`` parameter."},{"line_number":140,"context_line":"* ``REDIRECT_TO_POOL``: The request is forwarded to the back-end pool"},{"line_number":141,"context_line":"  associated with the L7 policy (which is usually not the default pool"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_74da44eb","line":138,"range":{"start_line":138,"start_character":43,"end_line":138,"end_character":45},"in_reply_to":"9a89bdaa_42f674d8","updated":"2016-09-09 05:47:24.000000000","message":"No, \"an\" is correct here.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":138,"context_line":"* ``REDIRECT_TO_URL``: The request is sent an HTTP redirect to the URL defined"},{"line_number":139,"context_line":"  in the ``redirect_url`` parameter."},{"line_number":140,"context_line":"* ``REDIRECT_TO_POOL``: The request is forwarded to the back-end pool"},{"line_number":141,"context_line":"  associated with the L7 policy (which is usually not the default pool"},{"line_number":142,"context_line":"  associated with the listener)."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Policy Position"},{"line_number":145,"context_line":"_______________"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_62c8d875","line":142,"range":{"start_line":141,"start_character":31,"end_line":142,"end_character":31},"updated":"2016-09-02 20:03:55.000000000","message":"Do we really need this here? It\u0027s just complicating that definition in my opinion.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":138,"context_line":"* ``REDIRECT_TO_URL``: The request is sent an HTTP redirect to the URL defined"},{"line_number":139,"context_line":"  in the ``redirect_url`` parameter."},{"line_number":140,"context_line":"* ``REDIRECT_TO_POOL``: The request is forwarded to the back-end pool"},{"line_number":141,"context_line":"  associated with the L7 policy (which is usually not the default pool"},{"line_number":142,"context_line":"  associated with the listener)."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Policy Position"},{"line_number":145,"context_line":"_______________"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_d4e1509c","line":142,"range":{"start_line":141,"start_character":31,"end_line":142,"end_character":31},"in_reply_to":"9a89bdaa_62c8d875","updated":"2016-09-09 05:47:24.000000000","message":"I think the clarification is useful here, but I agree it\u0027s a bit wordy.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Policy Position"},{"line_number":145,"context_line":"_______________"},{"line_number":146,"context_line":"When multiple L7 Policies are associated with a listener, then the policies\u0027"},{"line_number":147,"context_line":"``position`` parameter becomes important. Here are a few notes about how"},{"line_number":148,"context_line":"policy position affects listener behavior:"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_c2a524b6","line":146,"range":{"start_line":146,"start_character":75,"end_line":146,"end_character":76},"updated":"2016-09-02 20:03:55.000000000","message":"\u0027","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Policy Position"},{"line_number":145,"context_line":"_______________"},{"line_number":146,"context_line":"When multiple L7 Policies are associated with a listener, then the policies\u0027"},{"line_number":147,"context_line":"``position`` parameter becomes important. Here are a few notes about how"},{"line_number":148,"context_line":"policy position affects listener behavior:"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_54a3804f","line":146,"range":{"start_line":146,"start_character":75,"end_line":146,"end_character":76},"in_reply_to":"9a89bdaa_c2a524b6","updated":"2016-09-09 05:47:24.000000000","message":"Again, \"policies\u0027\" is the plural possessive form and is correct English in this sentence.","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"116fc3acb3c58c2413d3b7072570b462d5568ddc","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  attribute), and the first policy that matches a given request will be the one"},{"line_number":161,"context_line":"  whose action is followed."},{"line_number":162,"context_line":"* If no policy matches a given request, then the request is routed to the"},{"line_number":163,"context_line":"  listener\u0027s default pool (if it exists)."},{"line_number":164,"context_line":"* Policy position numbering starts with 1."},{"line_number":165,"context_line":"* If a new policy is created with a position that matches that of an existing"},{"line_number":166,"context_line":"  policy, then the new policy is inserted at the given position."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_e28148fd","line":163,"range":{"start_line":163,"start_character":10,"end_line":163,"end_character":12},"updated":"2016-09-02 20:03:55.000000000","message":"without","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"b94148eddfb956b11cb3d1c3a2a979c564e307eb","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  attribute), and the first policy that matches a given request will be the one"},{"line_number":161,"context_line":"  whose action is followed."},{"line_number":162,"context_line":"* If no policy matches a given request, then the request is routed to the"},{"line_number":163,"context_line":"  listener\u0027s default pool (if it exists)."},{"line_number":164,"context_line":"* Policy position numbering starts with 1."},{"line_number":165,"context_line":"* If a new policy is created with a position that matches that of an existing"},{"line_number":166,"context_line":"  policy, then the new policy is inserted at the given position."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a89bdaa_d48f90ca","line":163,"range":{"start_line":163,"start_character":10,"end_line":163,"end_character":12},"in_reply_to":"9a89bdaa_e28148fd","updated":"2016-09-09 05:47:24.000000000","message":"Nope. Again, we are after the possessive form of \"listener\" which is \"listener\u0027s\"","commit_id":"28f6f470f46ab95adc1fa35f91181eaa3479de6a"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e06e71a463feb261af3c7a4d50cb66141607b3e4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"all pools behind the load balancing service have the same content. In fact, it"},{"line_number":39,"context_line":"is generally expected that a layer 7 load balancer expects the back-end servers"},{"line_number":40,"context_line":"from different pools will have different content. Layer 7 load balancers are"},{"line_number":41,"context_line":"capable of directing requests based on URI, host, HTTP headers, and many other"},{"line_number":42,"context_line":"data in the application message."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"L7 load balancing in Octavia"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_46b594cb","line":42,"range":{"start_line":41,"start_character":68,"end_line":42,"end_character":4},"updated":"2016-09-14 05:21:46.000000000","message":"\"many other data\" is awkward.  Maybe \"other data\"?","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0b4d71ae1c5fc3fd3f291a4f68b480467379d11f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"all pools behind the load balancing service have the same content. In fact, it"},{"line_number":39,"context_line":"is generally expected that a layer 7 load balancer expects the back-end servers"},{"line_number":40,"context_line":"from different pools will have different content. Layer 7 load balancers are"},{"line_number":41,"context_line":"capable of directing requests based on URI, host, HTTP headers, and many other"},{"line_number":42,"context_line":"data in the application message."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"L7 load balancing in Octavia"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_a5bf00fa","line":42,"range":{"start_line":41,"start_character":68,"end_line":42,"end_character":4},"in_reply_to":"7a8ec9b2_46b594cb","updated":"2016-09-14 17:05:54.000000000","message":"Done","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e06e71a463feb261af3c7a4d50cb66141607b3e4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"Policy Position"},{"line_number":143,"context_line":"_______________"},{"line_number":144,"context_line":"When multiple L7 Policies are associated with a listener, then the policies\u0027"},{"line_number":145,"context_line":"``position`` parameter becomes important. Here are a few notes about how"},{"line_number":146,"context_line":"policy position affects listener behavior:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* In the reference implementation (haproxy amphorae) of Octavia, haproxy"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_660c5043","line":145,"range":{"start_line":145,"start_character":0,"end_line":145,"end_character":12},"updated":"2016-09-14 05:21:46.000000000","message":"Maybe we need to define this?","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0b4d71ae1c5fc3fd3f291a4f68b480467379d11f","unresolved":false,"context_lines":[{"line_number":142,"context_line":"Policy Position"},{"line_number":143,"context_line":"_______________"},{"line_number":144,"context_line":"When multiple L7 Policies are associated with a listener, then the policies\u0027"},{"line_number":145,"context_line":"``position`` parameter becomes important. Here are a few notes about how"},{"line_number":146,"context_line":"policy position affects listener behavior:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* In the reference implementation (haproxy amphorae) of Octavia, haproxy"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_e5d3c836","line":145,"range":{"start_line":145,"start_character":0,"end_line":145,"end_character":12},"in_reply_to":"7a8ec9b2_660c5043","updated":"2016-09-14 17:05:54.000000000","message":"Done","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e06e71a463feb261af3c7a4d50cb66141607b3e4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"  * ``REDIRECT_TO_POOL`` policies are only evaluated after all of the above,"},{"line_number":155,"context_line":"    and in the order specified by the \u0027position\u0027 of the policy."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* L7 Policies are evaluated in a specific order (as defined by the ``position``"},{"line_number":158,"context_line":"  attribute), and the first policy that matches a given request will be the one"},{"line_number":159,"context_line":"  whose action is followed."},{"line_number":160,"context_line":"* If no policy matches a given request, then the request is routed to the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_e6178052","line":157,"range":{"start_line":157,"start_character":67,"end_line":157,"end_character":79},"updated":"2016-09-14 05:21:46.000000000","message":"Um, I don\u0027t see this referenced above.  Where is it defined?","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0b4d71ae1c5fc3fd3f291a4f68b480467379d11f","unresolved":false,"context_lines":[{"line_number":154,"context_line":"  * ``REDIRECT_TO_POOL`` policies are only evaluated after all of the above,"},{"line_number":155,"context_line":"    and in the order specified by the \u0027position\u0027 of the policy."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* L7 Policies are evaluated in a specific order (as defined by the ``position``"},{"line_number":158,"context_line":"  attribute), and the first policy that matches a given request will be the one"},{"line_number":159,"context_line":"  whose action is followed."},{"line_number":160,"context_line":"* If no policy matches a given request, then the request is routed to the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_65e898e3","line":157,"range":{"start_line":157,"start_character":67,"end_line":157,"end_character":79},"in_reply_to":"7a8ec9b2_e6178052","updated":"2016-09-14 17:05:54.000000000","message":"Done","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e06e71a463feb261af3c7a4d50cb66141607b3e4","unresolved":false,"context_lines":[{"line_number":158,"context_line":"  attribute), and the first policy that matches a given request will be the one"},{"line_number":159,"context_line":"  whose action is followed."},{"line_number":160,"context_line":"* If no policy matches a given request, then the request is routed to the"},{"line_number":161,"context_line":"  listener\u0027s default pool (if it exists)."},{"line_number":162,"context_line":"* Policy position numbering starts with 1."},{"line_number":163,"context_line":"* If a new policy is created with a position that matches that of an existing"},{"line_number":164,"context_line":"  policy, then the new policy is inserted at the given position."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_c603640e","line":161,"range":{"start_line":161,"start_character":27,"end_line":161,"end_character":39},"updated":"2016-09-14 05:21:46.000000000","message":"What happens if it doesn\u0027t?  503?","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0b4d71ae1c5fc3fd3f291a4f68b480467379d11f","unresolved":false,"context_lines":[{"line_number":158,"context_line":"  attribute), and the first policy that matches a given request will be the one"},{"line_number":159,"context_line":"  whose action is followed."},{"line_number":160,"context_line":"* If no policy matches a given request, then the request is routed to the"},{"line_number":161,"context_line":"  listener\u0027s default pool (if it exists)."},{"line_number":162,"context_line":"* Policy position numbering starts with 1."},{"line_number":163,"context_line":"* If a new policy is created with a position that matches that of an existing"},{"line_number":164,"context_line":"  policy, then the new policy is inserted at the given position."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_65cfb87f","line":161,"range":{"start_line":161,"start_character":27,"end_line":161,"end_character":39},"in_reply_to":"7a8ec9b2_c603640e","updated":"2016-09-14 17:05:54.000000000","message":"Yes. I\u0027ll add a note explaining this.","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e06e71a463feb261af3c7a4d50cb66141607b3e4","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  policy, then the new policy is inserted at the given position."},{"line_number":165,"context_line":"* If a new policy is created without specifying a position, or specifying a"},{"line_number":166,"context_line":"  position that is greater than the number of policies already in the list, the"},{"line_number":167,"context_line":"  new policy will just be appended to the list."},{"line_number":168,"context_line":"* When policies are inserted, deleted, or appended to the list, the policy"},{"line_number":169,"context_line":"  position values are re-ordered from 1 without skipping numbers. For example,"},{"line_number":170,"context_line":"  if policy A, B, and C have position values of 1, 2 and 3 respectively, if you"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_41257ea9","line":167,"range":{"start_line":167,"start_character":2,"end_line":167,"end_character":46},"updated":"2016-09-14 05:21:46.000000000","message":"bumping the existing policy down?\nJust trying to be overly explicit..","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0b4d71ae1c5fc3fd3f291a4f68b480467379d11f","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  policy, then the new policy is inserted at the given position."},{"line_number":165,"context_line":"* If a new policy is created without specifying a position, or specifying a"},{"line_number":166,"context_line":"  position that is greater than the number of policies already in the list, the"},{"line_number":167,"context_line":"  new policy will just be appended to the list."},{"line_number":168,"context_line":"* When policies are inserted, deleted, or appended to the list, the policy"},{"line_number":169,"context_line":"  position values are re-ordered from 1 without skipping numbers. For example,"},{"line_number":170,"context_line":"  if policy A, B, and C have position values of 1, 2 and 3 respectively, if you"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a8ec9b2_455e3c77","line":167,"range":{"start_line":167,"start_character":2,"end_line":167,"end_character":46},"in_reply_to":"7a8ec9b2_41257ea9","updated":"2016-09-14 17:05:54.000000000","message":"That\u0027s explained in the previous bullet point. Er... do you think I need to explain what \"inserted\" means?","commit_id":"14f2b2ba43edca155e140aa1a3f6281da91e491e"}]}
