)]}'
{"doc/source/api/octaviaapi.rst":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"84cb7f062d05d866b1e31c0f0b7ec69405a851b7","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        \u0027description\u0027: \u0027listener_description\u0027,"},{"line_number":667,"context_line":"        \u0027default_pool_id\u0027: \u0027uuid\u0027,"},{"line_number":668,"context_line":"        \u0027enabled\u0027: true,"},{"line_number":669,"context_line":"        insert_headers: {\u0027X-Forwarded-For\u0027: \u0027true\u0027, \u0027X-Forwarded-Port\u0027: \u0027true\u0027}"},{"line_number":670,"context_line":"    }"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"**Response Example**::"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba0121b8_eddabc77","line":669,"updated":"2016-03-29 14:59:58.000000000","message":"\"insert_headers\" needs to be quoted.","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"},{"author":{"_account_id":13438,"name":"Kobi Samoray","email":"kobi.samoray@broadcom.com","username":"ksamoray"},"change_message_id":"48a3f8344097a3b0b0bbbac0b9188a38f8a1faf7","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        \u0027description\u0027: \u0027listener_description\u0027,"},{"line_number":667,"context_line":"        \u0027default_pool_id\u0027: \u0027uuid\u0027,"},{"line_number":668,"context_line":"        \u0027enabled\u0027: true,"},{"line_number":669,"context_line":"        insert_headers: {\u0027X-Forwarded-For\u0027: \u0027true\u0027, \u0027X-Forwarded-Port\u0027: \u0027true\u0027}"},{"line_number":670,"context_line":"    }"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"**Response Example**::"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba0121b8_e1ce4359","line":669,"in_reply_to":"ba0121b8_eddabc77","updated":"2016-03-29 15:49:00.000000000","message":"Done","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"66958d688e65a80bd739e3fd4f3de1517a694bd6","unresolved":false,"context_lines":[{"line_number":519,"context_line":"| provisioning_status | String     | Physical status of a listener       |"},{"line_number":520,"context_line":"+---------------------+------------+-------------------------------------+"},{"line_number":521,"context_line":"| insert_headers      | Dictionary | Dictionary of additional headers \\  |"},{"line_number":522,"context_line":"|                     |            | insertion into HTTP header          |"},{"line_number":523,"context_line":"+---------------------+------------+-------------------------------------+"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"List Listeners"}],"source_content_type":"text/x-rst","patch_set":23,"id":"bab6814e_62ca7870","line":522,"updated":"2016-05-24 04:51:18.000000000","message":"I feel like this wording is awkward but I think it\u0027s hopefully clear enough.","commit_id":"2194758bcf4cfc8aae2e632e94b0ab27616af10b"}],"octavia/common/data_models.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"84cb7f062d05d866b1e31c0f0b7ec69405a851b7","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        self.sni_containers \u003d sni_containers or []"},{"line_number":283,"context_line":"        self.peer_port \u003d peer_port"},{"line_number":284,"context_line":"        self.l7policies \u003d l7policies or []"},{"line_number":285,"context_line":"        self.insert_headers \u003d insert_headers"},{"line_number":286,"context_line":"        self.pools \u003d pools or []"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def update(self, update_dict):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba0121b8_adec44c8","line":285,"updated":"2016-03-29 14:59:58.000000000","message":"This is a list, right? Shouldn\u0027t we code defensively here and use \"or { }\" to ensure it gets initialized to a list type?","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"},{"author":{"_account_id":13438,"name":"Kobi Samoray","email":"kobi.samoray@broadcom.com","username":"ksamoray"},"change_message_id":"48a3f8344097a3b0b0bbbac0b9188a38f8a1faf7","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        self.sni_containers \u003d sni_containers or []"},{"line_number":283,"context_line":"        self.peer_port \u003d peer_port"},{"line_number":284,"context_line":"        self.l7policies \u003d l7policies or []"},{"line_number":285,"context_line":"        self.insert_headers \u003d insert_headers"},{"line_number":286,"context_line":"        self.pools \u003d pools or []"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def update(self, update_dict):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba0121b8_21f03b90","line":285,"in_reply_to":"ba0121b8_adec44c8","updated":"2016-03-29 15:49:00.000000000","message":"Dict. And yeah, you\u0027re right. Done :)","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"}],"octavia/common/jinja/haproxy/templates/macros.j2":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"84cb7f062d05d866b1e31c0f0b7ec69405a851b7","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        {% endif %}"},{"line_number":197,"context_line":"    {% endif %}"},{"line_number":198,"context_line":"    {% if pool.protocol.lower() \u003d\u003d constants.PROTOCOL_HTTP.lower() %}"},{"line_number":199,"context_line":"        {% if listener.insert_headers.get(\u0027X-Forwarded-For\u0027,"},{"line_number":200,"context_line":"                                          \u0027False\u0027).lower() \u003d\u003d \u0027true\u0027 %}"},{"line_number":201,"context_line":"    option forwardfor"},{"line_number":202,"context_line":"        {% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"ba0121b8_d0582bfd","line":199,"updated":"2016-03-29 14:59:58.000000000","message":"I believe these checks will get a NoneType exception if insert_headers isn\u0027t initialized defensively with \"or { }\" in the data_model?","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"},{"author":{"_account_id":13438,"name":"Kobi Samoray","email":"kobi.samoray@broadcom.com","username":"ksamoray"},"change_message_id":"48a3f8344097a3b0b0bbbac0b9188a38f8a1faf7","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        {% endif %}"},{"line_number":197,"context_line":"    {% endif %}"},{"line_number":198,"context_line":"    {% if pool.protocol.lower() \u003d\u003d constants.PROTOCOL_HTTP.lower() %}"},{"line_number":199,"context_line":"        {% if listener.insert_headers.get(\u0027X-Forwarded-For\u0027,"},{"line_number":200,"context_line":"                                          \u0027False\u0027).lower() \u003d\u003d \u0027true\u0027 %}"},{"line_number":201,"context_line":"    option forwardfor"},{"line_number":202,"context_line":"        {% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"ba0121b8_211e7bba","line":199,"in_reply_to":"ba0121b8_d0582bfd","updated":"2016-03-29 15:49:00.000000000","message":"Fixed the data model","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"}],"octavia/db/models.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"47e498ba8cf27735be0f312be5401723486334a4","unresolved":false,"context_lines":[{"line_number":371,"context_line":"                                                        uselist\u003dTrue))"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    peer_port \u003d sa.Column(sa.Integer(), nullable\u003dTrue)"},{"line_number":374,"context_line":"    insert_headers \u003d sa.Column(sa.PickleType())"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    # This property should be a unique list of the default_pool and anything"},{"line_number":377,"context_line":"    # referenced by enabled L7Policies with at least one rule that also"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a122d0e_18a43749","line":374,"updated":"2016-05-05 05:46:39.000000000","message":"not a big fan of storing things that way; wonder if adding a boolean for each header might be better?","commit_id":"409b3529199ea63567bd09d2f1e9dd3a9d6c08d5"},{"author":{"_account_id":13438,"name":"Kobi Samoray","email":"kobi.samoray@broadcom.com","username":"ksamoray"},"change_message_id":"9e660c22dc435f3c54b464c46c4d1241db91623a","unresolved":false,"context_lines":[{"line_number":371,"context_line":"                                                        uselist\u003dTrue))"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    peer_port \u003d sa.Column(sa.Integer(), nullable\u003dTrue)"},{"line_number":374,"context_line":"    insert_headers \u003d sa.Column(sa.PickleType())"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    # This property should be a unique list of the default_pool and anything"},{"line_number":377,"context_line":"    # referenced by enabled L7Policies with at least one rule that also"}],"source_content_type":"text/x-python","patch_set":21,"id":"dab17558_2d305156","line":374,"in_reply_to":"1a122d0e_18a43749","updated":"2016-05-06 13:53:25.000000000","message":"In the last midcycle we were discussing a support-any-header model. That means that we won\u0027t necessarily have a boolean here but could also have strings etc. I guess that adding another lbaas_insert_header would be the cleanest - model wise. Yet I don\u0027t think that this feature worths cluttering the DB with another table - and we never have to do any lookups by these values or anything so overall I believe that this is more than good enough.","commit_id":"409b3529199ea63567bd09d2f1e9dd3a9d6c08d5"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"66958d688e65a80bd739e3fd4f3de1517a694bd6","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                                                        uselist\u003dTrue))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    peer_port \u003d sa.Column(sa.Integer(), nullable\u003dTrue)"},{"line_number":383,"context_line":"    insert_headers \u003d sa.Column(sa.PickleType())"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    # This property should be a unique list of the default_pool and anything"},{"line_number":386,"context_line":"    # referenced by enabled L7Policies with at least one rule that also"}],"source_content_type":"text/x-python","patch_set":23,"id":"bab6814e_02a0cca4","line":383,"updated":"2016-05-24 04:51:18.000000000","message":"In response to comments on patch 21, I\u0027m normally not a fan of taking the easy way out, but I\u0027m tempted to agree that this SHOULDN\u0027T cause a problem. I just hope it doesn\u0027t come back to bite us later.","commit_id":"2194758bcf4cfc8aae2e632e94b0ab27616af10b"}],"octavia/tests/unit/common/sample_configs/sample_configs.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"84cb7f062d05d866b1e31c0f0b7ec69405a851b7","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    topology \u003d \u0027SINGLE\u0027 if topology is None else topology"},{"line_number":356,"context_line":"    port \u003d \u0027443\u0027 if proto is \u0027HTTPS\u0027 or proto is \u0027TERMINATED_HTTPS\u0027 else \u002780\u0027"},{"line_number":357,"context_line":"    peer_port \u003d 1024 if peer_port is None else peer_port"},{"line_number":358,"context_line":"    insert_headers \u003d {} if insert_headers is None else insert_headers"},{"line_number":359,"context_line":"    in_listener \u003d collections.namedtuple("},{"line_number":360,"context_line":"        \u0027listener\u0027, \u0027id, project_id, protocol_port, protocol, default_pool, \u0027"},{"line_number":361,"context_line":"                    \u0027connection_limit, tls_certificate_id, \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba0121b8_2d2dd4a7","line":358,"updated":"2016-03-29 14:59:58.000000000","message":"more concise/consistent to use:\n\ninsert_headers \u003d insert_headers or {}","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"},{"author":{"_account_id":13438,"name":"Kobi Samoray","email":"kobi.samoray@broadcom.com","username":"ksamoray"},"change_message_id":"48a3f8344097a3b0b0bbbac0b9188a38f8a1faf7","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    topology \u003d \u0027SINGLE\u0027 if topology is None else topology"},{"line_number":356,"context_line":"    port \u003d \u0027443\u0027 if proto is \u0027HTTPS\u0027 or proto is \u0027TERMINATED_HTTPS\u0027 else \u002780\u0027"},{"line_number":357,"context_line":"    peer_port \u003d 1024 if peer_port is None else peer_port"},{"line_number":358,"context_line":"    insert_headers \u003d {} if insert_headers is None else insert_headers"},{"line_number":359,"context_line":"    in_listener \u003d collections.namedtuple("},{"line_number":360,"context_line":"        \u0027listener\u0027, \u0027id, project_id, protocol_port, protocol, default_pool, \u0027"},{"line_number":361,"context_line":"                    \u0027connection_limit, tls_certificate_id, \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba0121b8_214cbbc6","line":358,"in_reply_to":"ba0121b8_2d2dd4a7","updated":"2016-03-29 15:49:00.000000000","message":"Done","commit_id":"44ff8e0a5e2cddce7ad72ada51181534084c71aa"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"0e5882af6e0e07ff7430fc3088981d52324692f2","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \u0027pools\u0027: [RET_POOL_1],"},{"line_number":206,"context_line":"    \u0027l7policies\u0027: [],"},{"line_number":207,"context_line":"    \u0027enabled\u0027: True,"},{"line_number":208,"context_line":"    \u0027insert_headers\u0027: {}}"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"RET_LISTENER_L7 \u003d {"},{"line_number":211,"context_line":"    \u0027id\u0027: \u0027sample_listener_id_1\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_07384aed","line":208,"range":{"start_line":208,"start_character":22,"end_line":208,"end_character":24},"updated":"2016-04-27 03:31:05.000000000","message":"do we need to have the some values in here?","commit_id":"ae7bf6f2e141388c17be444621be23771c1372aa"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4c9ce6509ab6fa77546935ab42cb1ad279aef090","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \u0027pools\u0027: [RET_POOL_1],"},{"line_number":206,"context_line":"    \u0027l7policies\u0027: [],"},{"line_number":207,"context_line":"    \u0027enabled\u0027: True,"},{"line_number":208,"context_line":"    \u0027insert_headers\u0027: {}}"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"RET_LISTENER_L7 \u003d {"},{"line_number":211,"context_line":"    \u0027id\u0027: \u0027sample_listener_id_1\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_79efc4e8","line":208,"range":{"start_line":208,"start_character":22,"end_line":208,"end_character":24},"in_reply_to":"1a122d0e_07384aed","updated":"2016-04-29 20:57:23.000000000","message":"I don\u0027t know that we need settings here.  The unit tests that cover the case when there are settings should override these samples.","commit_id":"ae7bf6f2e141388c17be444621be23771c1372aa"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"f49f3c57f3ddc07471d5b3119abbac05d025bbfd","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \u0027pools\u0027: [RET_POOL_1],"},{"line_number":206,"context_line":"    \u0027l7policies\u0027: [],"},{"line_number":207,"context_line":"    \u0027enabled\u0027: True,"},{"line_number":208,"context_line":"    \u0027insert_headers\u0027: {}}"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"RET_LISTENER_L7 \u003d {"},{"line_number":211,"context_line":"    \u0027id\u0027: \u0027sample_listener_id_1\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_c90c173e","line":208,"range":{"start_line":208,"start_character":22,"end_line":208,"end_character":24},"in_reply_to":"1a122d0e_79efc4e8","updated":"2016-05-03 03:49:54.000000000","message":"ok, got it.","commit_id":"ae7bf6f2e141388c17be444621be23771c1372aa"}]}
