)]}'
{"octavia/amphorae/backends/utils/keepalivedlvs_query.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ad4a55bbe6a6f33db99388177df9790f1d1f286","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import ipaddress"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":"import stat"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":"import subprocess"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_8bd89d7f","line":15,"updated":"2020-06-18 22:12:30.000000000","message":"pep8: H306: imports not in alphabetical order (re, os)","commit_id":"b1be37e58210da5d71384304e224c20af0ecac3d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0ad4a55bbe6a6f33db99388177df9790f1d1f286","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":"import stat"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":"import subprocess"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_ebe7993f","line":18,"updated":"2020-06-18 22:12:30.000000000","message":"pep8: H306: imports not in alphabetical order (time, subprocess)","commit_id":"b1be37e58210da5d71384304e224c20af0ecac3d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"105bcbdbddffa703e625583caa9a4cd1bdbca2ab","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                status \u003d constants.MAINT"},{"line_number":266,"context_line":"            elif member_ip_port in down_member_ip_port_set:"},{"line_number":267,"context_line":"                status \u003d ("},{"line_number":268,"context_line":"                    constants.RESTARTING if restarting else constants.DOWN)"},{"line_number":269,"context_line":"            elif int(realserver_result[member_ip_port][\u0027Weight\u0027]) \u003d\u003d 0:"},{"line_number":270,"context_line":"                status \u003d constants.DRAIN"},{"line_number":271,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_14d6d34f","line":268,"updated":"2020-07-16 18:52:27.000000000","message":"I have three thoughts on this:\n1. Under the haproxy based load balancers, we assume healthy until proven otherwise. Maybe we should artificially \"ONLINE\" this instead of \"RESTARTING\".\n2. If we move forward with \"RESTARTING\", we need to document it and add a release note. https://docs.openstack.org/api-ref/load-balancer/v2/index.html#operating-status-codes\n3. Is \"RESTARTING\" giving too much implementation specific information? Would \"UPDATING\" or something else be more generic for other drivers to use?","commit_id":"d1298db411a0da4beca3b39082c78680fa53e2ae"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"016a134de37e52ef3cdbe1e0efeae976085e3560","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                status \u003d constants.MAINT"},{"line_number":266,"context_line":"            elif member_ip_port in down_member_ip_port_set:"},{"line_number":267,"context_line":"                status \u003d ("},{"line_number":268,"context_line":"                    constants.RESTARTING if restarting else constants.DOWN)"},{"line_number":269,"context_line":"            elif int(realserver_result[member_ip_port][\u0027Weight\u0027]) \u003d\u003d 0:"},{"line_number":270,"context_line":"                status \u003d constants.DRAIN"},{"line_number":271,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_f7169e55","line":268,"in_reply_to":"bf51134e_14d6d34f","updated":"2020-07-20 12:22:25.000000000","message":"1.2. perhaps you missed that RESTARTING is an (internal) state in the amphora API, so it\u0027s not part of the Octavia public API.\nWhen the health-manager service receives a heartbeat from an amphora, the operating status of a member in RESTARTING state is not updated (we keep the previous state) because we know that it could lead to invalid states. Its state will be updated once the amphora-agent is sure that keepalived has been correctly restarted.\n3. yes, UPDATING would probably sound better than RESTARTING","commit_id":"d1298db411a0da4beca3b39082c78680fa53e2ae"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ca57b5b6faa9b3e1a00902e3393e6cc41ca20ad7","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                status \u003d constants.MAINT"},{"line_number":266,"context_line":"            elif member_ip_port in down_member_ip_port_set:"},{"line_number":267,"context_line":"                status \u003d ("},{"line_number":268,"context_line":"                    constants.RESTARTING if restarting else constants.DOWN)"},{"line_number":269,"context_line":"            elif int(realserver_result[member_ip_port][\u0027Weight\u0027]) \u003d\u003d 0:"},{"line_number":270,"context_line":"                status \u003d constants.DRAIN"},{"line_number":271,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_08bbe8e4","line":268,"in_reply_to":"bf51134e_f7169e55","updated":"2020-07-23 16:49:25.000000000","message":"Ah yes, I was too fast on reviewing this and missed that it is dropped in the HM. Sorry for that.","commit_id":"d1298db411a0da4beca3b39082c78680fa53e2ae"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bf050cff52895b2fb3029c87f1bf6e046610bfae","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from octavia.amphorae.backends.agent.api_server import util"},{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":"KERNEL_LVS_PATH \u003d \u0027/proc/net/ip_vs\u0027"},{"line_number":27,"context_line":"KERNEL_LVS_STATS_PATH \u003d \u0027/proc/net/ip_vs_stats\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_2783c606","line":24,"updated":"2020-08-13 13:41:53.000000000","message":"I don\u0027t see this being used, is it and the import required?","commit_id":"22f71613805b580ad07eef0653de0e419fc93a5a"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"005df820f5d4db26b6aa16ca737e0f9264211b8a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from octavia.amphorae.backends.agent.api_server import util"},{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":"KERNEL_LVS_PATH \u003d \u0027/proc/net/ip_vs\u0027"},{"line_number":27,"context_line":"KERNEL_LVS_STATS_PATH \u003d \u0027/proc/net/ip_vs_stats\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_a0fb8944","line":24,"in_reply_to":"9f560f44_0ab6d98a","updated":"2020-08-26 08:02:10.000000000","message":"Done","commit_id":"22f71613805b580ad07eef0653de0e419fc93a5a"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bff14ccd626b8aeb8c2f943446c22b010d494982","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from octavia.amphorae.backends.agent.api_server import util"},{"line_number":22,"context_line":"from octavia.common import constants"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":"KERNEL_LVS_PATH \u003d \u0027/proc/net/ip_vs\u0027"},{"line_number":27,"context_line":"KERNEL_LVS_STATS_PATH \u003d \u0027/proc/net/ip_vs_stats\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_0ab6d98a","line":24,"in_reply_to":"9f560f44_2783c606","updated":"2020-08-25 20:58:52.000000000","message":"+1, I don\u0027t think this is used in the final version of this patch.","commit_id":"22f71613805b580ad07eef0653de0e419fc93a5a"}],"octavia/controller/healthmanager/health_drivers/update_db.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"34ebce71e0b54b21fd907633ae20182530dbc5fe","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_32ad5de9","line":441,"updated":"2020-06-22 07:51:14.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"eb99a2d22580aa234bb572ca0a4e6c3f14a8c3e5","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_40b474f2","line":441,"updated":"2020-06-22 15:54:14.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"93572d6b780c3ff82d5673a8d36b2731e68d6b2f","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_98929c9d","line":441,"updated":"2020-06-19 18:49:33.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"41fe5583b4d185e143577887d31b9966041249fb","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_a8f115d0","line":441,"updated":"2020-06-19 16:28:11.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a3679f7d7b1e161756a0c9c94cdeae131fa032f7","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_c89c34c2","line":441,"updated":"2020-06-22 09:53:13.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2c4a1165d1549e3be533139a22c981362733c3d8","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_d9ea440d","line":441,"updated":"2020-06-22 13:10:33.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6d40426b3b03cb2c6086e7e2706c9a3a3494649b","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    # yet."},{"line_number":439,"context_line":"                    # In this case, keep previous member_status, and wait for a"},{"line_number":440,"context_line":"                    # non-transitional status."},{"line_number":441,"context_line":"                    member_status \u003d constants.ERROR  # Force error to check the CI"},{"line_number":442,"context_line":"                    pass"},{"line_number":443,"context_line":"                else:"},{"line_number":444,"context_line":"                    LOG.warning(\u0027Member %(mem)s reported \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_f4ff6afe","line":441,"updated":"2020-06-19 13:42:12.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7c07e8e771ec0d3ed1fa8f9b303772c6e92c7832"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d7259878862e682a12af63d05b08cc51a65e7afe","unresolved":false,"context_lines":[{"line_number":432,"context_line":"                    member_status \u003d constants.OFFLINE"},{"line_number":433,"context_line":"                elif status \u003d\u003d constants.NO_CHECK:"},{"line_number":434,"context_line":"                    member_status \u003d constants.NO_MONITOR"},{"line_number":435,"context_line":"                #elif status \u003d\u003d constants.RESTARTING:"},{"line_number":436,"context_line":"                #    # RESTARTING means that keepalived is restarting and a down"},{"line_number":437,"context_line":"                #    # member has been detected, the real status of the member"},{"line_number":438,"context_line":"                #    # is not clear, it might mean that the checker hasn\u0027t run"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_50a9be21","line":435,"updated":"2020-06-24 08:45:04.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"da9eeabdad7b8e22dd3cea3d3398eaa3f8278930"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d7259878862e682a12af63d05b08cc51a65e7afe","unresolved":false,"context_lines":[{"line_number":433,"context_line":"                elif status \u003d\u003d constants.NO_CHECK:"},{"line_number":434,"context_line":"                    member_status \u003d constants.NO_MONITOR"},{"line_number":435,"context_line":"                #elif status \u003d\u003d constants.RESTARTING:"},{"line_number":436,"context_line":"                #    # RESTARTING means that keepalived is restarting and a down"},{"line_number":437,"context_line":"                #    # member has been detected, the real status of the member"},{"line_number":438,"context_line":"                #    # is not clear, it might mean that the checker hasn\u0027t run"},{"line_number":439,"context_line":"                #    # yet."}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_30a6ca54","line":436,"updated":"2020-06-24 08:45:04.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"da9eeabdad7b8e22dd3cea3d3398eaa3f8278930"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d7259878862e682a12af63d05b08cc51a65e7afe","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                #    # member has been detected, the real status of the member"},{"line_number":438,"context_line":"                #    # is not clear, it might mean that the checker hasn\u0027t run"},{"line_number":439,"context_line":"                #    # yet."},{"line_number":440,"context_line":"                #    # In this case, keep previous member_status, and wait for a"},{"line_number":441,"context_line":"                #    # non-transitional status."},{"line_number":442,"context_line":"                #    pass"},{"line_number":443,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_9064f623","line":440,"updated":"2020-06-24 08:45:04.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"da9eeabdad7b8e22dd3cea3d3398eaa3f8278930"}],"releasenotes/notes/fixed-unstable-UDP-health-status-ba32690b83a9641b.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bf050cff52895b2fb3029c87f1bf6e046610bfae","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fix a potential invalid DOWN operating status for members of a UDP pool."},{"line_number":5,"context_line":"    A race condition could have occured when building the first heartbeat"},{"line_number":6,"context_line":"    message after adding a new member in a pool, this recently added member"},{"line_number":7,"context_line":"    could have been seen as DOWN."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_c792ca4b","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":39},"updated":"2020-08-13 13:41:53.000000000","message":"nit: can occur\n\npresent tense seems more correct","commit_id":"22f71613805b580ad07eef0653de0e419fc93a5a"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"005df820f5d4db26b6aa16ca737e0f9264211b8a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fix a potential invalid DOWN operating status for members of a UDP pool."},{"line_number":5,"context_line":"    A race condition could have occured when building the first heartbeat"},{"line_number":6,"context_line":"    message after adding a new member in a pool, this recently added member"},{"line_number":7,"context_line":"    could have been seen as DOWN."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_a0c70964","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":39},"in_reply_to":"9f560f44_c792ca4b","updated":"2020-08-26 08:02:10.000000000","message":"The commit fixes that issue, shouldn\u0027t the issue be described using past tense?","commit_id":"22f71613805b580ad07eef0653de0e419fc93a5a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bf050cff52895b2fb3029c87f1bf6e046610bfae","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Fix a potential invalid DOWN operating status for members of a UDP pool."},{"line_number":5,"context_line":"    A race condition could have occured when building the first heartbeat"},{"line_number":6,"context_line":"    message after adding a new member in a pool, this recently added member"},{"line_number":7,"context_line":"    could have been seen as DOWN."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_2798e668","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":19},"updated":"2020-08-13 13:41:53.000000000","message":"nit: can be","commit_id":"22f71613805b580ad07eef0653de0e419fc93a5a"}]}
