)]}'
{"octavia/api/v2/controllers/health_monitor.py":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"81534e16b5bab76b669c19cb1cf9c7ce815dba94","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                \"Associated Pool is support for UDP protocol, so \""},{"line_number":159,"context_line":"                \"healthmonitor only support UDP_CONNECT type, accept \""},{"line_number":160,"context_line":"                \"delay, max_retries_down, timeout fields in \""},{"line_number":161,"context_line":"                \"HealthMonitor request. \"))"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _set_default_values_for_L7_fields(self, request):"},{"line_number":164,"context_line":"        attrs_list \u003d [\u0027http_method\u0027, \u0027url_path\u0027, \u0027expected_codes\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_54b3930a","line":161,"range":{"start_line":161,"start_character":39,"end_line":161,"end_character":40},"updated":"2018-05-14 08:56:05.000000000","message":"a redundant space?","commit_id":"9a97665a1fcfc41b686b3799b3fd3c7e58e6db26"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"4f67b0adb3ca82d80027936f9f336d6609506e23","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                \"Associated Pool is support for UDP protocol, so \""},{"line_number":159,"context_line":"                \"healthmonitor only support UDP_CONNECT type, accept \""},{"line_number":160,"context_line":"                \"delay, max_retries_down, timeout fields in \""},{"line_number":161,"context_line":"                \"HealthMonitor request. \"))"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _set_default_values_for_L7_fields(self, request):"},{"line_number":164,"context_line":"        attrs_list \u003d [\u0027http_method\u0027, \u0027url_path\u0027, \u0027expected_codes\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_257c9f1d","line":161,"range":{"start_line":161,"start_character":39,"end_line":161,"end_character":40},"in_reply_to":"5f7c97a3_54b3930a","updated":"2018-05-14 11:11:09.000000000","message":"Done","commit_id":"9a97665a1fcfc41b686b3799b3fd3c7e58e6db26"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01a2ed65a8c1139fd40e00f852dde28802719d5a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        if is_create or is_update:"},{"line_number":160,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":161,"context_line":"                \"Associated Pool is support for UDP protocol, so \""},{"line_number":162,"context_line":"                \"healthmonitor only support UDP_CONNECT type, accept \""},{"line_number":163,"context_line":"                \"delay, max_retries_down, timeout fields in \""},{"line_number":164,"context_line":"                \"HealthMonitor request.\"))"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_5e81cef9","line":162,"range":{"start_line":162,"start_character":44,"end_line":162,"end_character":55},"updated":"2018-07-25 23:51:43.000000000","message":"UDP_CONNECT -\u003e UDP-CONNECT","commit_id":"038e74f63a9952981976da8d208e40696666d848"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01a2ed65a8c1139fd40e00f852dde28802719d5a","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        self._validate_update_hm(db_hm, health_monitor)"},{"line_number":282,"context_line":"        # Currently, we force let users to create a udp healthmonitor with"},{"line_number":283,"context_line":"        # UDP_CONNECT type."},{"line_number":284,"context_line":"        if (pool.protocol \u003d\u003d consts.PROTOCOL_UDP and"},{"line_number":285,"context_line":"                db_hm.type \u003d\u003d consts.HEALTH_MONITOR_UDP_CONNECT):"},{"line_number":286,"context_line":"            self._validate_healthmonitor_request_for_udp(health_monitor)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_be710248","line":283,"range":{"start_line":283,"start_character":10,"end_line":283,"end_character":21},"updated":"2018-07-25 23:51:43.000000000","message":"UDP_CONNECT -\u003e UDP-CONNECT","commit_id":"038e74f63a9952981976da8d208e40696666d848"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        is_update \u003d not hasattr(request, \u0027type\u0027) and invalid_fields"},{"line_number":159,"context_line":"        if is_create or is_update:"},{"line_number":160,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":161,"context_line":"                \"Associated Pool is support for UDP protocol, so \""},{"line_number":162,"context_line":"                \"healthmonitor only support %ss type, accept \""},{"line_number":163,"context_line":"                \"delay, max_retries_down, timeout fields in \""},{"line_number":164,"context_line":"                \"HealthMonitor request.\") % consts.HEALTH_MONITOR_UDP_CONNECT)"},{"line_number":165,"context_line":"        # if the logic arrives here, that means the validation of request above"},{"line_number":166,"context_line":"        # is OK. type is UDP-CONNECT, then here we check the healthmonitor"},{"line_number":167,"context_line":"        # delay value is matched."}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_dafb2e77","line":164,"range":{"start_line":161,"start_character":17,"end_line":164,"end_character":40},"updated":"2018-08-01 04:49:25.000000000","message":"Reword?\nThe associated pool protocol is UDP, so only a UDP-CONNECT health monitor is supported.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        if request.delay:"},{"line_number":169,"context_line":"            conf_set \u003d (CONF.api_settings."},{"line_number":170,"context_line":"                        udp_connect_min_interval_health_monitor)"},{"line_number":171,"context_line":"            if conf_set \u003d\u003d \u0027infinite\u0027 or int(conf_set) \u003c 0:"},{"line_number":172,"context_line":"                return"},{"line_number":173,"context_line":"            elif request.delay \u003c int(conf_set):"},{"line_number":174,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_9a36164f","line":171,"range":{"start_line":171,"start_character":41,"end_line":171,"end_character":45},"updated":"2018-08-01 04:49:25.000000000","message":"IntOpt type will make this int, so we can remove this.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        if request.delay:"},{"line_number":169,"context_line":"            conf_set \u003d (CONF.api_settings."},{"line_number":170,"context_line":"                        udp_connect_min_interval_health_monitor)"},{"line_number":171,"context_line":"            if conf_set \u003d\u003d \u0027infinite\u0027 or int(conf_set) \u003c 0:"},{"line_number":172,"context_line":"                return"},{"line_number":173,"context_line":"            elif request.delay \u003c int(conf_set):"},{"line_number":174,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_ba2d12fd","line":171,"range":{"start_line":171,"start_character":15,"end_line":171,"end_character":37},"updated":"2018-08-01 04:49:25.000000000","message":"Let\u0027s get rid of \"infinite\"","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            elif request.delay \u003c int(conf_set):"},{"line_number":174,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":175,"context_line":"                    \"The request delay value %(delay)s should be larger than \""},{"line_number":176,"context_line":"                    \"%(conf_set)s of the configuration option \""},{"line_number":177,"context_line":"                    \"%(option)s\") % {"},{"line_number":178,"context_line":"                    \u0027delay\u0027: request.delay,"},{"line_number":179,"context_line":"                    \u0027conf_set\u0027: conf_set,"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_3a4102a8","line":176,"range":{"start_line":176,"start_character":34,"end_line":176,"end_character":61},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nfor UDP-CONNECT health monitor type.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        else:"},{"line_number":202,"context_line":"            if health_monitor.type \u003d\u003d consts.HEALTH_MONITOR_UDP_CONNECT:"},{"line_number":203,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":204,"context_line":"                    \"The %s type is only for UDP protocol in \""},{"line_number":205,"context_line":"                    \"HealthMonitor request. The associated Pool \""},{"line_number":206,"context_line":"                    \"resource doesn\u0027t support \""},{"line_number":207,"context_line":"                    \"UDP.\") % health_monitor.type)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self._auth_validate_action(context, health_monitor.project_id,"},{"line_number":210,"context_line":"                                   consts.RBAC_POST)"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_da09ee82","line":207,"range":{"start_line":204,"start_character":21,"end_line":207,"end_character":26},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nThe %s type is only supported for pools of type UDP.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        self._auth_validate_action(context, project_id, consts.RBAC_PUT)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        self._validate_update_hm(db_hm, health_monitor)"},{"line_number":299,"context_line":"        # Currently, we force let users to create a udp healthmonitor with"},{"line_number":300,"context_line":"        # UDP-CONNECT type."},{"line_number":301,"context_line":"        if (pool.protocol \u003d\u003d consts.PROTOCOL_UDP and"},{"line_number":302,"context_line":"                db_hm.type \u003d\u003d consts.HEALTH_MONITOR_UDP_CONNECT):"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_9a1ff6b6","line":299,"range":{"start_line":299,"start_character":10,"end_line":299,"end_character":74},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nValidate health monitor update options for UDP-CONNECT type.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"}],"octavia/api/v2/controllers/listener.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                resource\u003ddata_models.Pool._name(), id\u003dpool_id)"},{"line_number":124,"context_line":"        if (db_pool.protocol \u003d\u003d constants.PROTOCOL_UDP and"},{"line_number":125,"context_line":"                db_pool.protocol !\u003d listener_protocol):"},{"line_number":126,"context_line":"            msg \u003d _(\"Requested the protocol of default_pool should be \""},{"line_number":127,"context_line":"                    \"same as associated Listener.\")"},{"line_number":128,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _reset_lb_status(self, session, lb_id):"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_1a79a6f9","line":127,"range":{"start_line":126,"start_character":21,"end_line":127,"end_character":50},"updated":"2018-08-01 04:49:25.000000000","message":"This is not true. It is valid to have a HTTP listener and TCP pool.\n\nReword?\nListeners of type UDP can only have pools of type UDP.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                db_pool.protocol !\u003d listener_protocol):"},{"line_number":126,"context_line":"            msg \u003d _(\"Requested the protocol of default_pool should be \""},{"line_number":127,"context_line":"                    \"same as associated Listener.\")"},{"line_number":128,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _reset_lb_status(self, session, lb_id):"},{"line_number":131,"context_line":"        # Setting LB back to active because this should be a recoverable error"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_3a002203","line":128,"range":{"start_line":128,"start_character":18,"end_line":128,"end_character":58},"updated":"2018-08-01 04:49:25.000000000","message":"This exception path is not tested.\nIt should have a unit test.\nhttp://logs.openstack.org/91/539391/39/check/openstack-tox-cover/4161c34/cover/octavia_api_v2_controllers_listener_py.html#n128","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            raise exceptions.InvalidOption(value\u003dlistener_dict.get(\u0027protocol\u0027),"},{"line_number":190,"context_line":"                                           option\u003d\u0027protocol\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _validate_listener_request_for_udp(self, listener):"},{"line_number":193,"context_line":"        if (listener.default_tls_container_ref or"},{"line_number":194,"context_line":"                listener.sni_container_refs or listener.insert_headers):"},{"line_number":195,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_fa5e2a77","line":192,"range":{"start_line":192,"start_character":9,"end_line":192,"end_character":42},"updated":"2018-08-01 04:49:25.000000000","message":"This method name does not describe it\u0027s purpose.\nHow about:\n\nis_tls_or_insert_header(self, listener)","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        if (listener.protocol \u003d\u003d constants.PROTOCOL_UDP and"},{"line_number":212,"context_line":"                self._validate_listener_request_for_udp(listener)):"},{"line_number":213,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":214,"context_line":"                \"UDP protocol not support \""},{"line_number":215,"context_line":"                \"default_tls_container_ref, sni_container_refs \""},{"line_number":216,"context_line":"                \"and insert_headers in Listener request.\""},{"line_number":217,"context_line":"            ))"},{"line_number":218,"context_line":"        if (not CONF.api_settings.allow_tls_terminated_listeners and"},{"line_number":219,"context_line":"                listener.protocol \u003d\u003d constants.PROTOCOL_TERMINATED_HTTPS):"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_ba543257","line":216,"range":{"start_line":214,"start_character":17,"end_line":216,"end_character":57},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\n\nUDP protocol listener does not support TLS or header insertion.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        if (db_listener.protocol \u003d\u003d constants.PROTOCOL_UDP and"},{"line_number":328,"context_line":"                self._validate_listener_request_for_udp(listener)):"},{"line_number":329,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":330,"context_line":"                \"UDP protocol not support \""},{"line_number":331,"context_line":"                \"default_tls_container_ref, sni_container_refs \""},{"line_number":332,"context_line":"                \"and insert_headers in Listener request.\""},{"line_number":333,"context_line":"            ))"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        if listener.default_pool_id:"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_7a521a6a","line":332,"range":{"start_line":330,"start_character":17,"end_line":332,"end_character":57},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\n\nUDP protocol listener does not support TLS or header insertion.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"}],"octavia/api/v2/controllers/pool.py":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"81534e16b5bab76b669c19cb1cf9c7ce815dba94","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        for attr in dir(request):"},{"line_number":151,"context_line":"            if attr.startswith(\u0027_\u0027) or attr in ["},{"line_number":152,"context_line":"                \u0027from_data_model\u0027, \u0027translate_dict_keys_to_data_model\u0027,"},{"line_number":153,"context_line":"               \u0027to_dict\u0027]:"},{"line_number":154,"context_line":"                continue"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                request_attrs.append(attr)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_34ce1782","line":153,"range":{"start_line":153,"start_character":15,"end_line":153,"end_character":16},"updated":"2018-05-14 08:56:05.000000000","message":"wrong indent","commit_id":"9a97665a1fcfc41b686b3799b3fd3c7e58e6db26"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"4f67b0adb3ca82d80027936f9f336d6609506e23","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        for attr in dir(request):"},{"line_number":151,"context_line":"            if attr.startswith(\u0027_\u0027) or attr in ["},{"line_number":152,"context_line":"                \u0027from_data_model\u0027, \u0027translate_dict_keys_to_data_model\u0027,"},{"line_number":153,"context_line":"               \u0027to_dict\u0027]:"},{"line_number":154,"context_line":"                continue"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                request_attrs.append(attr)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_c574cb38","line":153,"range":{"start_line":153,"start_character":15,"end_line":153,"end_character":16},"in_reply_to":"5f7c97a3_34ce1782","updated":"2018-05-14 11:11:09.000000000","message":"Done","commit_id":"9a97665a1fcfc41b686b3799b3fd3c7e58e6db26"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def _is_only_specified_in_request(self, request, **kwargs):"},{"line_number":131,"context_line":"        request_attrs \u003d []"},{"line_number":132,"context_line":"        check_attrs \u003d kwargs[\u0027check_exist_attrs\u0027]"},{"line_number":133,"context_line":"        if not check_attrs:"},{"line_number":134,"context_line":"            return False"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        excaped_attrs \u003d [\u0027from_data_model\u0027,"},{"line_number":137,"context_line":"                         \u0027translate_dict_keys_to_data_model\u0027, \u0027to_dict\u0027]"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_7d0f742e","line":134,"range":{"start_line":133,"start_character":7,"end_line":134,"end_character":24},"updated":"2018-08-01 04:49:25.000000000","message":"Untested branch\nhttp://logs.openstack.org/91/539391/39/check/openstack-tox-cover/4161c34/cover/octavia_api_v2_controllers_pool_py.html#n134","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            else:"},{"line_number":143,"context_line":"                request_attrs.append(attr)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        if not request_attrs:"},{"line_number":146,"context_line":"            return False"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        for req_attr in request_attrs:"},{"line_number":149,"context_line":"            if (getattr("}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_3d157c3e","line":146,"range":{"start_line":145,"start_character":1,"end_line":146,"end_character":24},"updated":"2018-08-01 04:49:25.000000000","message":"Untested branch\nhttp://logs.openstack.org/91/539391/39/check/openstack-tox-cover/4161c34/cover/octavia_api_v2_controllers_pool_py.html#n146","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        return True"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _validate_pool_request_for_udp(self, request):"},{"line_number":157,"context_line":"        if hasattr(request, \u0027loadbalancer_id\u0027) and request.loadbalancer_id:"},{"line_number":158,"context_line":"            raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":159,"context_line":"                \"UDP protocol not support to associate with pools \""},{"line_number":160,"context_line":"                \"for loadbalancer in Pool request. Listener \""},{"line_number":161,"context_line":"                \"association only.\""},{"line_number":162,"context_line":"            ))"},{"line_number":163,"context_line":"        if request.session_persistence:"},{"line_number":164,"context_line":"            if (request.session_persistence.type \u003d\u003d"},{"line_number":165,"context_line":"                    constants.SESSION_PERSISTENCE_SOURCE_IP and"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_9a80569e","line":162,"range":{"start_line":157,"start_character":1,"end_line":162,"end_character":14},"updated":"2018-08-01 04:49:25.000000000","message":"I think this is wrong.\nWe should allow the user to create pools that are bound to the load balancer even if they are UDP.\nThis is a creation methodology we support, where you can create all of you pools first, and then assign them.\nI think this check should move to L7policy where we need to make sure you can\u0027t assign a UDP pool to an L7policy.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                           \u0027persistence_granularity\u0027])):"},{"line_number":170,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":171,"context_line":"                    \"session_persistence %s type for UDP protocol \""},{"line_number":172,"context_line":"                    \"dosen\u0027t accept other parameters, except type, \""},{"line_number":173,"context_line":"                    \"persistence_timeout, persistence_granularity in \""},{"line_number":174,"context_line":"                    \"Pool Request.\") % ("},{"line_number":175,"context_line":"                        constants.SESSION_PERSISTENCE_SOURCE_IP))"},{"line_number":176,"context_line":"            elif (request.session_persistence.type \u003d\u003d"},{"line_number":177,"context_line":"                    constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING and"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_7a73fae8","line":174,"range":{"start_line":172,"start_character":21,"end_line":174,"end_character":40},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nonly accepts: type, persistence_timeout, persistence_granularity.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                        check_exist_attrs\u003d[\u0027type\u0027])):"},{"line_number":181,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":182,"context_line":"                    \"session_persistence %s type for UDP protocol \""},{"line_number":183,"context_line":"                    \"doesn\u0027t accept other parameters, except type in \""},{"line_number":184,"context_line":"                    \"Pool Request.\") % ("},{"line_number":185,"context_line":"                        constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING))"},{"line_number":186,"context_line":"            elif request.session_persistence.cookie_name:"},{"line_number":187,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_1a4c469b","line":184,"range":{"start_line":183,"start_character":21,"end_line":184,"end_character":35},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nonly accepts the type parameter.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING))"},{"line_number":186,"context_line":"            elif request.session_persistence.cookie_name:"},{"line_number":187,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":188,"context_line":"                    \"Not support cookie_name for UDP protocol in \""},{"line_number":189,"context_line":"                    \"Pool Request.\"))"},{"line_number":190,"context_line":"            elif request.session_persistence.type in ["},{"line_number":191,"context_line":"                constants.SESSION_PERSISTENCE_HTTP_COOKIE,"},{"line_number":192,"context_line":"                    constants.SESSION_PERSISTENCE_APP_COOKIE]:"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_ba3e72e0","line":189,"range":{"start_line":188,"start_character":21,"end_line":189,"end_character":37},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nCookie names are not supported for UDP pools.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                constants.SESSION_PERSISTENCE_HTTP_COOKIE,"},{"line_number":192,"context_line":"                    constants.SESSION_PERSISTENCE_APP_COOKIE]:"},{"line_number":193,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":194,"context_line":"                    \"Not support types %(app_cookie)s, %(http_cookie)s \""},{"line_number":195,"context_line":"                    \"for UDP protocol in Pool Request.\") % {"},{"line_number":196,"context_line":"                    \u0027app_cookie\u0027: constants.SESSION_PERSISTENCE_APP_COOKIE,"},{"line_number":197,"context_line":"                    \u0027http_cookie\u0027: constants.SESSION_PERSISTENCE_HTTP_COOKIE})"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_3a526237","line":195,"range":{"start_line":194,"start_character":21,"end_line":195,"end_character":55},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nSession persistence of type %s is not supported for UDP protocol pools.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                    constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING):"},{"line_number":218,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":219,"context_line":"                    \"session_persistence type %s only support for UDP \""},{"line_number":220,"context_line":"                    \"protocol in Pool request\") % ("},{"line_number":221,"context_line":"                        constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING))"},{"line_number":222,"context_line":"            elif (pool.session_persistence and"},{"line_number":223,"context_line":"                    pool.session_persistence.type !\u003d"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_fa2dcaad","line":220,"range":{"start_line":220,"start_character":21,"end_line":220,"end_character":45},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\nprotocol pools.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                        pool.session_persistence.persistence_granularity)):"},{"line_number":227,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":228,"context_line":"                    \"persistence_timeout and persistence_granularity \""},{"line_number":229,"context_line":"                    \"is only for UDP protocol in Pool request.\"))"},{"line_number":230,"context_line":"        if pool.loadbalancer_id:"},{"line_number":231,"context_line":"            pool.project_id, provider \u003d self._get_lb_project_id_provider("},{"line_number":232,"context_line":"                context.session, pool.loadbalancer_id)"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_1a31a60a","line":229,"range":{"start_line":229,"start_character":46,"end_line":229,"end_character":62},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\npools.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        project_id, provider \u003d self._get_lb_project_id_provider("},{"line_number":351,"context_line":"            context.session, db_pool.load_balancer_id)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        if (pool.session_persistence and"},{"line_number":354,"context_line":"                not pool.session_persistence.type and"},{"line_number":355,"context_line":"                db_pool.session_persistence and"},{"line_number":356,"context_line":"                db_pool.session_persistence.type):"},{"line_number":357,"context_line":"            pool.session_persistence.type \u003d db_pool.session_persistence.type"},{"line_number":358,"context_line":"        self._auth_validate_action(context, project_id, constants.RBAC_PUT)"},{"line_number":359,"context_line":"        if db_pool.protocol \u003d\u003d constants.PROTOCOL_UDP:"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_1d28c082","line":356,"range":{"start_line":353,"start_character":8,"end_line":356,"end_character":50},"updated":"2018-08-01 04:49:25.000000000","message":"Untested branch\n\nhttp://logs.openstack.org/91/539391/39/check/openstack-tox-cover/4161c34/cover/octavia_api_v2_controllers_pool_py.html#n357","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        if db_pool.protocol \u003d\u003d constants.PROTOCOL_UDP:"},{"line_number":360,"context_line":"            self._validate_pool_request_for_udp(pool)"},{"line_number":361,"context_line":"        else:"},{"line_number":362,"context_line":"            if (pool.session_persistence and pool.session_persistence.type \u003d\u003d"},{"line_number":363,"context_line":"                    constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING):"},{"line_number":364,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":365,"context_line":"                    \"session_persistence type %s only support for UDP \""},{"line_number":366,"context_line":"                    \"protocol in Pool request\") % ("}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_bd1aec67","line":363,"range":{"start_line":362,"start_character":12,"end_line":363,"end_character":73},"updated":"2018-08-01 04:49:25.000000000","message":"Untested branch\nhttp://logs.openstack.org/91/539391/39/check/openstack-tox-cover/4161c34/cover/octavia_api_v2_controllers_pool_py.html#n362","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                    constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING):"},{"line_number":364,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":365,"context_line":"                    \"session_persistence type %s only support for UDP \""},{"line_number":366,"context_line":"                    \"protocol in Pool request\") % ("},{"line_number":367,"context_line":"                        constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING))"},{"line_number":368,"context_line":"            elif (pool.session_persistence and"},{"line_number":369,"context_line":"                    pool.session_persistence.type !\u003d"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_da36ce01","line":366,"range":{"start_line":366,"start_character":30,"end_line":366,"end_character":45},"updated":"2018-08-01 04:49:25.000000000","message":"reword?\npools.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                    constants.SESSION_PERSISTENCE_ONE_PACKET_SCHEDULING and ("},{"line_number":371,"context_line":"                        pool.session_persistence.persistence_timeout or"},{"line_number":372,"context_line":"                        pool.session_persistence.persistence_granularity)):"},{"line_number":373,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":374,"context_line":"                    \"persistence_timeout and persistence_granularity \""},{"line_number":375,"context_line":"                    \"is only for UDP protocol in Pool request.\"))"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_7d38d4d2","line":373,"range":{"start_line":373,"start_character":16,"end_line":373,"end_character":60},"updated":"2018-08-01 04:49:25.000000000","message":"Untested branch.\nhttp://logs.openstack.org/91/539391/39/check/openstack-tox-cover/4161c34/cover/octavia_api_v2_controllers_pool_py.html#n373","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                        pool.session_persistence.persistence_granularity)):"},{"line_number":373,"context_line":"                raise exceptions.InvalidUdpRequest(detail\u003d_("},{"line_number":374,"context_line":"                    \"persistence_timeout and persistence_granularity \""},{"line_number":375,"context_line":"                    \"is only for UDP protocol in Pool request.\"))"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        if pool.session_persistence:"},{"line_number":378,"context_line":"            sp_dict \u003d pool.session_persistence.to_dict(render_unsets\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_9a1cd67b","line":375,"range":{"start_line":375,"start_character":46,"end_line":375,"end_character":62},"updated":"2018-08-01 04:49:25.000000000","message":"pools.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"}],"octavia/api/v2/types/health_monitor.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ff21fde4d6ef4ae7bb48c6fb9c61188df0878545","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        mandatory\u003dTrue)"},{"line_number":91,"context_line":"    http_method \u003d wtypes.wsattr("},{"line_number":92,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_HEALTH_MONITOR_HTTP_METHODS),"},{"line_number":93,"context_line":"        default\u003dconstants.HEALTH_MONITOR_HTTP_DEFAULT_METHOD)"},{"line_number":94,"context_line":"    url_path \u003d wtypes.wsattr("},{"line_number":95,"context_line":"        types.URLPathType(),"},{"line_number":96,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_URL_PATH)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_be8e9976","side":"PARENT","line":93,"updated":"2018-05-11 23:12:52.000000000","message":"Why were these defaults removed? They are HTTP specific and should not change for the UDP patch.\nAlso, this would be a major API change, that I don\u0027t think we want to do.","commit_id":"8178f29e8199da0ee5a7e0f56c422e4eb9e46612"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9280b58592e44cf9dc2702e81b53f1813ebd6936","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        mandatory\u003dTrue)"},{"line_number":91,"context_line":"    http_method \u003d wtypes.wsattr("},{"line_number":92,"context_line":"        wtypes.Enum(str, *constants.SUPPORTED_HEALTH_MONITOR_HTTP_METHODS),"},{"line_number":93,"context_line":"        default\u003dconstants.HEALTH_MONITOR_HTTP_DEFAULT_METHOD)"},{"line_number":94,"context_line":"    url_path \u003d wtypes.wsattr("},{"line_number":95,"context_line":"        types.URLPathType(),"},{"line_number":96,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_URL_PATH)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_83ba536b","side":"PARENT","line":93,"in_reply_to":"5f7c97a3_be8e9976","updated":"2018-05-14 06:42:28.000000000","message":"After the HealthmonitorPost obj genarated, we don\u0027t know which paratemer is user specified before udp validation(https://review.openstack.org/#/c/539391/8/octavia/api/v2/controllers/health_monitor.py #182), as the default value. So there will be validate the user specified fields first, if the request is not UDP, then re-inject the default value. The key point here now is if I don\u0027t set the default value, the following check won\u0027t work. \u0027http_method\u0027, \u0027url_path\u0027, \u0027expected_codes\u0027 are not allowed in UDP request.","commit_id":"8178f29e8199da0ee5a7e0f56c422e4eb9e46612"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ff21fde4d6ef4ae7bb48c6fb9c61188df0878545","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        default\u003dconstants.HEALTH_MONITOR_HTTP_DEFAULT_METHOD)"},{"line_number":94,"context_line":"    url_path \u003d wtypes.wsattr("},{"line_number":95,"context_line":"        types.URLPathType(),"},{"line_number":96,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_URL_PATH)"},{"line_number":97,"context_line":"    expected_codes \u003d wtypes.wsattr("},{"line_number":98,"context_line":"        wtypes.StringType(pattern\u003dr\u0027^(\\d{3}(\\s*,\\s*\\d{3})*)$|^(\\d{3}-\\d{3})$\u0027),"},{"line_number":99,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_EXPECTED_CODES)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_9ed87d7b","side":"PARENT","line":96,"updated":"2018-05-11 23:12:52.000000000","message":"Same","commit_id":"8178f29e8199da0ee5a7e0f56c422e4eb9e46612"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9280b58592e44cf9dc2702e81b53f1813ebd6936","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        default\u003dconstants.HEALTH_MONITOR_HTTP_DEFAULT_METHOD)"},{"line_number":94,"context_line":"    url_path \u003d wtypes.wsattr("},{"line_number":95,"context_line":"        types.URLPathType(),"},{"line_number":96,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_URL_PATH)"},{"line_number":97,"context_line":"    expected_codes \u003d wtypes.wsattr("},{"line_number":98,"context_line":"        wtypes.StringType(pattern\u003dr\u0027^(\\d{3}(\\s*,\\s*\\d{3})*)$|^(\\d{3}-\\d{3})$\u0027),"},{"line_number":99,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_EXPECTED_CODES)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_836fb3fa","side":"PARENT","line":96,"in_reply_to":"5f7c97a3_9ed87d7b","updated":"2018-05-14 06:42:28.000000000","message":"The same above, this is just my thought, could you please direct how to fit both of us?","commit_id":"8178f29e8199da0ee5a7e0f56c422e4eb9e46612"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ff21fde4d6ef4ae7bb48c6fb9c61188df0878545","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_URL_PATH)"},{"line_number":97,"context_line":"    expected_codes \u003d wtypes.wsattr("},{"line_number":98,"context_line":"        wtypes.StringType(pattern\u003dr\u0027^(\\d{3}(\\s*,\\s*\\d{3})*)$|^(\\d{3}-\\d{3})$\u0027),"},{"line_number":99,"context_line":"        default\u003dconstants.HEALTH_MONITOR_DEFAULT_EXPECTED_CODES)"},{"line_number":100,"context_line":"    admin_state_up \u003d wtypes.wsattr(bool, default\u003dTrue)"},{"line_number":101,"context_line":"    # TODO(johnsom) Remove after deprecation (R series)"},{"line_number":102,"context_line":"    project_id \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d36))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_3ec929ab","side":"PARENT","line":99,"updated":"2018-05-11 23:12:52.000000000","message":"Same","commit_id":"8178f29e8199da0ee5a7e0f56c422e4eb9e46612"}],"octavia/common/config.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                         \u0027driver.\u0027}),"},{"line_number":115,"context_line":"    cfg.StrOpt(\u0027default_provider_driver\u0027, default\u003d\u0027amphora\u0027,"},{"line_number":116,"context_line":"               help\u003d_(\u0027Default provider driver.\u0027)),"},{"line_number":117,"context_line":"    cfg.StrOpt(\u0027udp_connect_min_interval_health_monitor\u0027,"},{"line_number":118,"context_line":"               default\u003dstr(constants.UDP_CONNECT_SCRIPT_MIN_INTERVAL),"},{"line_number":119,"context_line":"               help\u003d_(\"The minimum number of health monitor delay value for \""},{"line_number":120,"context_line":"                      \"the script running interval of health monitor \""}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_ba7c3222","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":14},"updated":"2018-08-01 04:49:25.000000000","message":"IntOpt","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":116,"context_line":"               help\u003d_(\u0027Default provider driver.\u0027)),"},{"line_number":117,"context_line":"    cfg.StrOpt(\u0027udp_connect_min_interval_health_monitor\u0027,"},{"line_number":118,"context_line":"               default\u003dstr(constants.UDP_CONNECT_SCRIPT_MIN_INTERVAL),"},{"line_number":119,"context_line":"               help\u003d_(\"The minimum number of health monitor delay value for \""},{"line_number":120,"context_line":"                      \"the script running interval of health monitor \""},{"line_number":121,"context_line":"                      \"UDP-CONNECT type. The string \u0027infinite\u0027 or a negative \""},{"line_number":122,"context_line":"                      \"integer value means \u0027no limit\u0027\")),"},{"line_number":123,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_3a702241","line":120,"range":{"start_line":119,"start_character":23,"end_line":120,"end_character":70},"updated":"2018-08-01 04:49:25.000000000","message":"Can we re-word?\nThe minimum health monitor delay interval for the UDP-CONNECT health monitor type. A negative integer value means \u0027no limit\u0027.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"               default\u003dstr(constants.UDP_CONNECT_SCRIPT_MIN_INTERVAL),"},{"line_number":119,"context_line":"               help\u003d_(\"The minimum number of health monitor delay value for \""},{"line_number":120,"context_line":"                      \"the script running interval of health monitor \""},{"line_number":121,"context_line":"                      \"UDP-CONNECT type. The string \u0027infinite\u0027 or a negative \""},{"line_number":122,"context_line":"                      \"integer value means \u0027no limit\u0027\")),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_7a7a1a25","line":121,"range":{"start_line":121,"start_character":53,"end_line":121,"end_character":61},"updated":"2018-08-01 04:49:25.000000000","message":"Let\u0027s make this an integer and just support the negative value for infinite.\nThis allows for better validation and less operator error.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"}],"octavia/common/constants.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"HEALTH_MONITOR_HTTPS \u003d \u0027HTTPS\u0027"},{"line_number":35,"context_line":"HEALTH_MONITOR_TLS_HELLO \u003d \u0027TLS-HELLO\u0027"},{"line_number":36,"context_line":"HEALTH_MONITOR_UDP_CONNECT \u003d \u0027UDP-CONNECT\u0027"},{"line_number":37,"context_line":"UDP_CONNECT_SCRIPT_MIN_INTERVAL \u003d 3"},{"line_number":38,"context_line":"SUPPORTED_HEALTH_MONITOR_TYPES \u003d (HEALTH_MONITOR_HTTP, HEALTH_MONITOR_HTTPS,"},{"line_number":39,"context_line":"                                  HEALTH_MONITOR_PING, HEALTH_MONITOR_TCP,"},{"line_number":40,"context_line":"                                  HEALTH_MONITOR_TLS_HELLO,"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_da948e37","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":35},"updated":"2018-08-01 04:49:25.000000000","message":"This should not be here. We should only reference the configuration file value.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d11a8162b16fecddf6168f1ba171382444186f76","unresolved":false,"context_lines":[{"line_number":32,"context_line":"HEALTH_MONITOR_HTTPS \u003d \u0027HTTPS\u0027"},{"line_number":33,"context_line":"HEALTH_MONITOR_TLS_HELLO \u003d \u0027TLS-HELLO\u0027"},{"line_number":34,"context_line":"HEALTH_MONITOR_UDP_CONNECT \u003d \u0027UDP-CONNECT\u0027"},{"line_number":35,"context_line":"UDP_CONNECT_SCRIPT_MIN_INTERVAL \u003d 3"},{"line_number":36,"context_line":"SUPPORTED_HEALTH_MONITOR_TYPES \u003d (HEALTH_MONITOR_HTTP, HEALTH_MONITOR_HTTPS,"},{"line_number":37,"context_line":"                                  HEALTH_MONITOR_PING, HEALTH_MONITOR_TCP,"},{"line_number":38,"context_line":"                                  HEALTH_MONITOR_TLS_HELLO,"}],"source_content_type":"text/x-python","patch_set":40,"id":"5f7c97a3_70230d58","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":35},"updated":"2018-08-01 17:31:11.000000000","message":"This still needs to be removed.\nI will remove it in my follow up patch as the rest of this looks good.","commit_id":"e9b2b54ac47b432e6583f61c7de4819a262ed6a6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d11a8162b16fecddf6168f1ba171382444186f76","unresolved":false,"context_lines":[{"line_number":32,"context_line":"HEALTH_MONITOR_HTTPS \u003d \u0027HTTPS\u0027"},{"line_number":33,"context_line":"HEALTH_MONITOR_TLS_HELLO \u003d \u0027TLS-HELLO\u0027"},{"line_number":34,"context_line":"HEALTH_MONITOR_UDP_CONNECT \u003d \u0027UDP-CONNECT\u0027"},{"line_number":35,"context_line":"UDP_CONNECT_SCRIPT_MIN_INTERVAL \u003d 3"},{"line_number":36,"context_line":"SUPPORTED_HEALTH_MONITOR_TYPES \u003d (HEALTH_MONITOR_HTTP, HEALTH_MONITOR_HTTPS,"},{"line_number":37,"context_line":"                                  HEALTH_MONITOR_PING, HEALTH_MONITOR_TCP,"},{"line_number":38,"context_line":"                                  HEALTH_MONITOR_TLS_HELLO,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_90758902","line":35,"updated":"2018-08-01 17:31:11.000000000","message":"This should be removed.  I will do it in the follow up patch as the rest of this looks good.","commit_id":"f0f5a555aa041d0cba530472f5fc48c0f1a68be8"}],"octavia/common/exceptions.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":365,"context_line":"    code \u003d 501"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"class InvalidUdpRequest(APIException):"},{"line_number":369,"context_line":"    msg \u003d _(\"Validation failure: %(detail)s\")"},{"line_number":370,"context_line":"    code \u003d 400"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_1ac76613","line":368,"range":{"start_line":368,"start_character":6,"end_line":368,"end_character":23},"updated":"2018-08-01 04:49:25.000000000","message":"Please use ValidationException above as it is the same.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"}],"octavia/db/migration/alembic_migrations/versions/76aacf2e176c_extend_support_udp_protocol.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01a2ed65a8c1139fd40e00f852dde28802719d5a","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"new_protocol \u003d \u0027UDP\u0027"},{"line_number":34,"context_line":"new_session_persistence_type \u003d \u0027ONE_PACKET_SCHEDULING\u0027"},{"line_number":35,"context_line":"new_health_monitor_type \u003d \u0027UDP_CONNECT\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"tables \u003d [u\u0027protocol\u0027, u\u0027session_persistence_type\u0027,"},{"line_number":38,"context_line":"          u\u0027health_monitor_type\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_debabeb8","line":35,"updated":"2018-07-25 23:51:43.000000000","message":"UDP_CONNECT -\u003e UDP-CONNECT","commit_id":"038e74f63a9952981976da8d208e40696666d848"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01a2ed65a8c1139fd40e00f852dde28802719d5a","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"tables \u003d [u\u0027protocol\u0027, u\u0027session_persistence_type\u0027,"},{"line_number":38,"context_line":"          u\u0027health_monitor_type\u0027]"},{"line_number":39,"context_line":"new_fields \u003d [\u0027UDP\u0027, \u0027ONE_PACKET_SCHEDULING\u0027, \u0027UDP_CONNECT\u0027]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def upgrade():"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_7ed7eaf5","line":39,"range":{"start_line":39,"start_character":47,"end_line":39,"end_character":59},"updated":"2018-07-25 23:51:43.000000000","message":"UDP_CONNECT -\u003e UDP-CONNECT","commit_id":"038e74f63a9952981976da8d208e40696666d848"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01a2ed65a8c1139fd40e00f852dde28802719d5a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def upgrade():"},{"line_number":43,"context_line":"    # New UDP protocol addition."},{"line_number":44,"context_line":"    # New ONE_PACKET_SCHEDULING session persistence type addition."},{"line_number":45,"context_line":"    # New UDP_CONNNECT healthmonitor type addition."},{"line_number":46,"context_line":"    for table, new_field in zip(tables, new_fields):"},{"line_number":47,"context_line":"        insert_table \u003d sql.table("},{"line_number":48,"context_line":"            table,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_9eda061a","line":45,"range":{"start_line":45,"start_character":10,"end_line":45,"end_character":22},"updated":"2018-07-25 23:51:43.000000000","message":"UDP_CONNECT -\u003e UDP-CONNECT","commit_id":"038e74f63a9952981976da8d208e40696666d848"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Add QoS Policy ID column to VIP table"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Revision ID: 76aacf2e176c"},{"line_number":19,"context_line":"Revises: 0f242cf02c74"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_bac99224","line":16,"range":{"start_line":16,"start_character":3,"end_line":16,"end_character":40},"updated":"2018-08-01 04:49:25.000000000","message":"Incorrect description","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"97925871fb232bbfab6f86490c5358b7ab7ad552","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            ]"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # As new type exceeds the existing type side of session_persistence table,"},{"line_number":57,"context_line":"    # so extend it to 36."},{"line_number":58,"context_line":"    op.alter_column(u\u0027session_persistence\u0027, u\u0027type\u0027,"},{"line_number":59,"context_line":"                    existing_type\u003dsa.String(36))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    # Two new columns add to session_persistence table"},{"line_number":62,"context_line":"    op.add_column(\u0027session_persistence\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_7d70d473","line":59,"range":{"start_line":56,"start_character":0,"end_line":59,"end_character":48},"updated":"2018-08-01 05:16:29.000000000","message":"This could be shortened to \"OPS\" for internal code use.","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    # Two new columns add to session_persistence table"},{"line_number":62,"context_line":"    op.add_column(\u0027session_persistence\u0027,"},{"line_number":63,"context_line":"                  sa.Column(\u0027persistence_timeout\u0027,"},{"line_number":64,"context_line":"                            sa.String(length\u003d36),"},{"line_number":65,"context_line":"                            nullable\u003dTrue, server_default\u003dNone))"},{"line_number":66,"context_line":"    op.add_column(\u0027session_persistence\u0027,"},{"line_number":67,"context_line":"                  sa.Column(\u0027persistence_granularity\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_9ad296ce","line":64,"range":{"start_line":64,"start_character":31,"end_line":64,"end_character":37},"updated":"2018-08-01 04:49:25.000000000","message":"This should be an integer column","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"0ab8575c0c11810ac0c16c1a935527805b8090a4","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# revision identifiers, used by Alembic."},{"line_number":30,"context_line":"revision \u003d \u002776aacf2e176c\u0027"},{"line_number":31,"context_line":"down_revision \u003d \u0027ebbcc72b4e5e\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"tables \u003d [u\u0027protocol\u0027, u\u0027health_monitor_type\u0027]"},{"line_number":34,"context_line":"new_fields \u003d [\u0027UDP\u0027, \u0027UDP-CONNECT\u0027]"}],"source_content_type":"text/x-python","patch_set":45,"id":"3f79a3b5_aac6cd66","line":31,"range":{"start_line":31,"start_character":17,"end_line":31,"end_character":29},"updated":"2018-08-07 11:05:30.000000000","message":"Where did this come from? You changed it in PS45.","commit_id":"84212e4d8b0670ec1b60d56d50f481c455e4f23e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"c905b493ff8df46f543d66ab8f83be4be46c00c1","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# revision identifiers, used by Alembic."},{"line_number":30,"context_line":"revision \u003d \u002776aacf2e176c\u0027"},{"line_number":31,"context_line":"down_revision \u003d \u0027ebbcc72b4e5e\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"tables \u003d [u\u0027protocol\u0027, u\u0027health_monitor_type\u0027]"},{"line_number":34,"context_line":"new_fields \u003d [\u0027UDP\u0027, \u0027UDP-CONNECT\u0027]"}],"source_content_type":"text/x-python","patch_set":45,"id":"3f79a3b5_8ac5113f","line":31,"range":{"start_line":31,"start_character":17,"end_line":31,"end_character":29},"in_reply_to":"3f79a3b5_aac6cd66","updated":"2018-08-07 11:09:34.000000000","message":"This must be related the recently merged patch.","commit_id":"84212e4d8b0670ec1b60d56d50f481c455e4f23e"}],"octavia/db/models.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"be84f0098d6547d6cf51125402972d1a1eab9c3d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            name\u003d\"fk_session_persistence_session_persistence_type_name\"),"},{"line_number":131,"context_line":"        nullable\u003dFalse)"},{"line_number":132,"context_line":"    cookie_name \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":133,"context_line":"    persistence_timeout \u003d sa.Column(sa.String(36), nullable\u003dTrue)"},{"line_number":134,"context_line":"    persistence_granularity \u003d sa.Column(sa.String(64), nullable\u003dTrue)"},{"line_number":135,"context_line":"    pool \u003d orm.relationship(\"Pool\", uselist\u003dFalse,"},{"line_number":136,"context_line":"                            backref\u003dorm.backref(\"session_persistence\","}],"source_content_type":"text/x-python","patch_set":39,"id":"5f7c97a3_bae2f29a","line":133,"range":{"start_line":133,"start_character":39,"end_line":133,"end_character":45},"updated":"2018-08-01 04:49:25.000000000","message":"Integer","commit_id":"60b23d197c80a824d3713153ce55ac7db9c0c510"}],"octavia/tests/functional/api/v2/test_health_monitor.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"01a2ed65a8c1139fd40e00f852dde28802719d5a","unresolved":false,"context_lines":[{"line_number":709,"context_line":"                    \u0027max_retries\u0027: 1}"},{"line_number":710,"context_line":"        expect_error_msg \u003d (\u0027Validation failure: Associated Pool is \u0027"},{"line_number":711,"context_line":"                            \u0027support for UDP protocol, so healthmonitor \u0027"},{"line_number":712,"context_line":"                            \u0027only support UDP_CONNECT type, accept \u0027"},{"line_number":713,"context_line":"                            \u0027delay, max_retries_down, timeout fields in \u0027"},{"line_number":714,"context_line":"                            \u0027HealthMonitor request.\u0027)"},{"line_number":715,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"5f7c97a3_3eac1287","line":712,"range":{"start_line":712,"start_character":42,"end_line":712,"end_character":53},"updated":"2018-07-25 23:51:43.000000000","message":"UDP_CONNECT -\u003e UDP-CONNECT","commit_id":"038e74f63a9952981976da8d208e40696666d848"}]}
